如果在应用程序中添加任何UI,基于CoreAudio的应用程序将停止播放

时间:2015-08-07 20:33:33

标签: ios nsurlconnection core-audio nsthread audio-converter

我有一个基于CoreAudio的播放器,可播放远程mp3。

它使用NSURLConnection来检索mp3数据 - >使用AudioConverter将流转换为PCM - >并将流提供给AUGraph以播放音频。

播放器在我的演示应用程序中运行完全正常(它只包含一个播放按钮),但是当我将播放器添加到另一个项目时,但当与已经进行网络调用的项目相结合并更新UI时,播放器将失败过几秒钟播放音频。

可能遇到线程问题?我可以采取或研究哪些预防方法可以防止这种情况发生?

1 个答案:

答案 0 :(得分:0)

您的软件架构中没有提及在通过NSURLConnection接收数据和将其发送到播放器之间缓冲数据的任何内容。

数据将以抵达率不一致的方式到达。

请参阅我发布的有关缓冲和网络抖动的答案。

Network jitter

Network jitter and buffering queue

简而言之,您可以接收数据并立即将其发送给您的播放器,因为下一个数据可能无法及时到达。

您没有提及mp3文件的传送速率。如果通过快速连接快速交付...您是否缓冲了所有收到的数据,或者它是否在应用程序的某个地方丢失?您的问题可能是您收到太多数据太多而且没有正确缓冲收到的数据。