首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一开始未调用AudioQueueOutputCallback

一开始未调用AudioQueueOutputCallback
EN

Stack Overflow用户
提问于 2012-09-28 04:36:56
回答 1查看 448关注 0票数 0

我的问题可能类似于:Why might my AudioQueueOutputCallback not be called?

似乎这个人能够通过在主线程上运行音频工具来修复问题。我不能这么做。

我将缓冲区排入主音频Q,然后启动音频Q。这些缓冲区不是应该在我开始队列后立即完成吗?

我正在设置正确的数据大小。

作为一种技巧,我只是重复使用缓冲区,而不是等待cabllback报告它们完成。如果我这样做,我像这样运行几秒钟,然后buffer回调就从它们开始工作。

EN

回答 1

Stack Overflow用户

发布于 2012-09-30 16:52:54

使用核心音频肯定不是个好主意..虽然它可能是一个快速修复,但从长远来看,它肯定会以模棱两可的方式伤害你。

您的问题与您发布的链接不同,他们的问题是将回调分配到错误的线程上。在您的情况下,您的回调是在正确的线程中,只是您最初提供给它的音频缓冲区要么是空的,要么太小,要么包含不适合音频播放的数据

请记住,回调的目的是在播放(即消耗)提供给音频队列的每个音频缓冲区后触发。在您启动队列之后,回调不会被触发。这意味着在音频缓冲区中没有任何东西可供它使用。或者它使用的有意义的信息太少..

当您手动执行此操作时,您会看到延迟b/c音频队列正在尝试处理您提供给它的空/错误缓冲区。然后用队列最终播放的有效数据重新补给相同的缓冲区,然后触发回调

解决方案:在启动队列之前将您放入缓冲区的数据与您手动提供的数据进行比较。我相信这是有区别的..如果不起作用,请展示您的代码以供进一步分析

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12629649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档