我正在为iOS开发一个流应用程序,并且我正确获取了所有音频数据包并对其进行了解码,但是现在我对如何在iPhone上播放它完全感到困惑。我已经使用ffmpeg解码了数据包。到目前为止,我得到的所有代码都在播放来自文件的音频,但我的情况下,我必须播放从服务器以它们来的顺序来获取的音频数据包。我不想将所有数据包保存到文件中,因此任何可帮助我解决问题的代码是感激..
you ...
最佳答案
您需要使用音频服务来执行此操作。 AudioQueue
或AudioUnit
。 AudioQueue
更适合流式应用程序。
用于AudioQueue的经典示例是Apple's SpeakHere。
马特·加拉格尔(Matt Gallagher)也提供了一些精湛的教程,其中包含用于流式传输的示例代码。
参见Streaming MP3/AAC audio again。
如果要走AudioUnit
路线,请参阅Using RemoteIO audio unit。
通过将代码基于Matt Gallagher的样本(可能还使用SpeakHere),您应该能够播放解码的数据包。请参阅我的其他答案,了解如何使用缓冲区而不是文件播放。
不要忘记这是相当高级的东西。您需要对缓冲区,指针等感到满意。请确保您也了解帧,数据包等。预计会出现一些使您难以置信的声音的麻烦。