HarmonyOS 鸿蒙Next AVPlayer播放已获取fd的wav时报错Operate Not Permit: failed to SetSourceFd

发布于 1周前 作者 wuwangju 来自 鸿蒙OS

HarmonyOS 鸿蒙Next AVPlayer播放已获取fd的wav时报错Operate Not Permit: failed to SetSourceFd

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/using-avplayer-for-playback-V5#%E5%AE%8C%E6%95%B4%E7%A4%BA%E4%BE%8B
您好,我这边仿照这个例子,读取一个从远程下载到文件目录的wav音频,let file = await fileIo.open(path);fdPath = fdPath + ‘’ + file.fd; 这两句代码已经获取到fd了(fd:/312),但是设置avPlayer.on(‘error’, (err: BusinessError) => {}) 报错5400102 Operate Not Permit: failed to SetSourceFd


更多关于HarmonyOS 鸿蒙Next AVPlayer播放已获取fd的wav时报错Operate Not Permit: failed to SetSourceFd的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next AVPlayer播放已获取fd的wav时报错Operate Not Permit: failed to SetSourceFd的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,针对使用Next AVPlayer播放已获取文件描述符(fd)的wav文件时遇到的“Operate Not Permit: failed to SetSourceFd”错误,通常是因为权限设置不正确或API使用不当。以下是一个基本的示例代码,展示如何正确使用文件描述符来设置Next AVPlayer的源,并确保权限正确。

#include "media/player/av_player.h"
#include "media/player/player_callback.h"
#include <fcntl.h>
#include <unistd.h>

int fd = open("/path/to/your/file.wav", O_RDONLY);
if (fd < 0) {
    // 错误处理
    return -1;
}

OHOS::Media::AVPlayer* player = new OHOS::Media::AVPlayer();
player->SetPlayerCallback(new OHOS::Media::PlayerCallback() {
    // 实现回调接口
});

OHOS::Media::Source source;
source.SetFd(fd, 0, -1);  // 0为偏移量,-1表示文件大小未知

if (player->SetSource(source) != OHOS::Media::SUCCESS) {
    // 错误处理
    close(fd);
    delete player;
    return -1;
}

player->Prepare();
player->Start();

// 记得在不再需要时释放资源
player->Stop();
player->Release();
close(fd);
delete player;

请确保:

  1. 文件路径正确,且应用有权限访问该文件。
  2. 文件描述符在传递给AVPlayer之前有效且未关闭。
  3. 应用的manifest文件中已声明必要的权限(如读写存储权限)。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部