我有一个基于CoreAudio的播放器,可播放远程mp3。
它使用NSURLConnection
来检索mp3数据 - >使用AudioConverter
将流转换为PCM - >并将流提供给AUGraph
以播放音频。
播放器在我的演示应用程序中运行完全正常(它只包含一个播放按钮),但是当我将播放器添加到另一个项目时,但当与已经进行网络调用的项目相结合并更新UI时,播放器将失败过几秒钟播放音频。
可能遇到线程问题?我可以采取或研究哪些预防方法可以防止这种情况发生?
答案 0 :(得分:0)
您的软件架构中没有提及在通过NSURLConnection接收数据和将其发送到播放器之间缓冲数据的任何内容。
数据将以抵达率不一致的方式到达。
请参阅我发布的有关缓冲和网络抖动的答案。
和
Network jitter and buffering queue
简而言之,您可以接收数据并立即将其发送给您的播放器,因为下一个数据可能无法及时到达。
您没有提及mp3文件的传送速率。如果通过快速连接快速交付...您是否缓冲了所有收到的数据,或者它是否在应用程序的某个地方丢失?您的问题可能是您收到太多数据太多而且没有正确缓冲收到的数据。