这些天,我正在研究 iPhone Streaming(基于 MMS 协议)的软件架构。
众所周知,为了播放彩信音频流,我们应该调用 libMMS 从远程媒体服务器读取 wma 流数据,然后调用 FFmpeg 将流数据从 wma 格式解码到 PCM 数据缓冲区,最后将 PCM 数据入队缓冲到 iPhone 的音频队列中以生成真实的声音。
上面的介绍只是描述了 iPhone 流媒体的工作过程。如果我们只需要实现这个简单的功能,那并不难。只需按照上面的介绍一步步调用libMMS、FFMpeg和audioqueue,就可以实现流功能了。实际上,我上周已经实现了代码。
但是,我需要的不仅仅是一个简单的流媒体功能!我需要一个软件架构,让 FFmpeg 访问 libMMS 就像访问本地文件系统一样!
有人知道如何将像 mms_read/mms_seek 这样的 libMMS 接口挂接到像 av_read_frame/av_seek_frame 这样的 FFmpeg 文件系统接口上吗?