我正在接收带有多路复用H.264视频和AAC音频流的MPEG-TS(MPEG传输流)数据包。我需要能够在Android手机上显示音频和视频。我的假设是我需要:
假设我是对的(在Android 2.x中)MPEG-TS解复用器不是操作系统的一部分并且必须移植,AAC和H.264解码器都是Android操作系统的一部分,但我是不确定它们是否具有接口,允许在缓冲区中传递数据,以及它们是否允许相互定时同步。在最坏的情况下,这些组件也必须在这里移植。
你能给我一些建议从哪里开始?我在考虑FFMPEG移植。还有其他方法吗?
此致 斯登
答案 0 :(得分:2)
Android 4.x拥有OpenMAX,可以使用H264和AAC播放TS。您甚至不必担心音频和视频的同步。
查看NDK中的nativemedia示例。
如果你想支持以前版本的Android,那么ffmpeg可能是一个不错的选择,但它能给你的最大值只是RGB格式的解码视频帧或PCM中的任何其他格式和解码音频。然后,您必须自己实现渲染器和音频播放。我建议您阅读本教程 - http://dranger.com/ffmpeg/。它不是特定于Android的,但它会让你了解视频播放是如何工作的。
答案 1 :(得分:1)
你可以参考github上的android-ffmpeg项目。
答案 2 :(得分:1)
在Gingerbread(2.3)中,实际上你可以使用stagefright框架中的MPEG TS解析器。此外,我相信它与H264和AAC解码器完美集成。 MPEG TS解析器没有在任何地方做广告,但是支持是默默地坐在那里。我相信他们已经将它用于支持HC或更高版本的Apple HTTP Live流媒体,但代码也位于Gingerbread(2.3)代码库中。通过框架中的微小修改,您可以播放http直播(实际上发送TS数据包)。我猜以上信息对您有所帮助。
VIBGYOR
答案 3 :(得分:0)
(免责声明:我个人参与开发下面链接的免费和开源程序)
ZShaolin http://dyne.org/software/zshaolin提供了静态版本的FFMpeg(包括库和命令行),还包含其他媒体转换工具。
它的使用可以促进脚本实验,而无需从头开始编译FFMpeg。