HarmonyOS 鸿蒙Next AVPlayer播放已获取fd的wav时报错Operate Not Permit: failed to SetSourceFd
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
您好,我这边仿照这个例子,读取一个从远程下载到文件目录的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;
请确保:
- 文件路径正确,且应用有权限访问该文件。
- 文件描述符在传递给AVPlayer之前有效且未关闭。
- 应用的manifest文件中已声明必要的权限(如读写存储权限)。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html