Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个基于 CoreAudio 的播放器,可以流式传输远程 mp3。
它用于NSURLConnection检索 mp3 数据 -> 用于AudioConverter将流转换为 PCM -> 并将流输入AUGraph到播放音频中。
NSURLConnection
AudioConverter
AUGraph
播放器在我的演示应用程序中运行良好(它只包含一个播放按钮),但是当我将播放器添加到另一个项目时,但是当与已经进行网络调用并更新 UI 的项目结合时,播放器无法播放音频过了几秒钟。
可能遇到线程问题?我可以采取或研究哪些预防方法可以防止这种情况发生?
您没有在软件架构中提及任何关于在通过 NSURLConnection 接收数据和将数据发送到播放器之间缓冲数据的内容。
数据将以不一致的到达率以块的形式到达。
请参阅我发布的有关缓冲和网络抖动的这些答案。
网络抖动
和
网络抖动和缓冲队列
简而言之,您可以接收数据并立即将其发送给您的播放器,因为下一个数据可能无法及时到达。
您没有提到 mp3 文件的交付速度。如果它通过快速连接非常快速地传递......您是在缓冲所有接收到的数据还是在您的应用程序的某个地方丢失了?您的问题有可能是您接收的数据太快并且没有正确缓冲接收到的数据。