• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

objective-c - AVAssetReader 读取音频,然后失败

[复制链接]
菜鸟教程小白 发表于 2022-12-13 07:23:50 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我的应用读取音频并在生产者/消费者设置中播放。消费者线程请求新样本以呈现给硬件。生产者线程使用 AVAssetReader 将音频数据从磁盘读取到其缓冲区中。生产者线程循环运行,检查是否需要读取更多样本。生产者的缓冲区大小等于 4 秒的音频。

当我指示我的应用缓冲音频时,样本被成功读取而没有错误。当我触发我的生产者线程开始渲染音频时,4 秒缓冲区完美播放,然后静音。进一步调查显示,我的 Assets 读取器在开始播放时失败,因此在初始缓冲后没有进一步的样本读取:

CMSampleBufferRef ref = [readaudiofile copyNextSampleBuffer];
if (ref == NULL && filereader.status == AVAssetReaderStatusFailed) {
    NSLog(@"reader failed: %@", filereader.error);
}
// this produces: 
// {NSLocalizedFailureReason=An unknown error occurred (-12785), 
// NSUnderlyingError=0x161f60 "The operation couldn’t be completed. 
// (OSStatus error -12785.)", NSLocalizedDescription=The operation 
// could not be completed}

我的生产者线程代码与功能代码示例 MusicLibraryRemoteIODemo 相同.我的消费者线程代码不同,但我已经将这两条线逐行比较了几天,似乎找不到问题所在。知道可能导致 AVAssetReader 阅读器失败的原因吗?

This post描述了类似的解决方案,并得出结论认为需要正确设置 Audio Session (尽管没有说明如何设置)。 AVAudioSesion 配置和 AVAssetReader 的行为之间有什么联系吗?



Best Answer-推荐答案


我遇到了同样的错误,我也在另一个帖子上发布了这个答案

- (void)setupAudio {
    [[AVAudioSession sharedInstance] setDelegate:self];
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
    NSError *activationError = nil;
    [[AVAudioSession sharedInstance] setActive: YES error:&activationError];

    NSLog(@"setupAudio ACTIVATION ERROR IS %@", activationError);
    [[AVAudioSession sharedInstance] setPreferredIOBufferDuration:0.1 error:&activationError];
    NSLog(@"setupAudio BUFFER DURATION ERROR IS %@", activationError);
}

关于objective-c - AVAssetReader 读取音频,然后失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5775548/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap