使用openmax和android stagefright的demux .mp4文件

时间:2013-11-19 06:54:41

标签: android stagefright

我怎样才能解压缩.mp4文件并分离音频/视频,然后使用openmax和android stagefright单独渲染。

1.如果我必须在jni文件中实现所有功能。

2.如果我使用ffmpeg进行解复,如何将其与android stagefright集成(如果我必须构建ffmpeg demuxer作为组件并使用openmax il将其链接到android或者在android jni中编写整个代码(在我需要链接ffmpeg与android stagefright))。

3.因为android ndk不支持stagefright,如何集成两者。

此致 Mayank

1 个答案:

答案 0 :(得分:2)

通常,Android具有内置于其框架中的所有必需功能,可以从native层和Java层访问这些功能。下面的所有组件名称都有Java抽象和Native实现,您可以考虑在项目中使用它们。对于你的问题,

1)我建议您直接使用此JNI实施中的MediaPlayer,其实际执行情况可以here

但是,如果您需要构建自己的管道,我建议使用MediaExtractor等可用块来进行解复用并为编解码器提供单独的轨道OMXCodec,我认为您将管理在您的实施中,audio路由和Surface处理视频。对您而言,一个很好的参考可能是SimplePlayer示例实现。

2)如果您希望使用demuxer中的FFMPEG,则必须将其整合到系统支持的MediaExtractors列表中。由于您的主要兴趣是MP4AVI,两者都受到支持,我觉得您可以避免这种努力。如果您仍然对FFMPEG集成感兴趣,请提出单独的查询,因为答案非常详细。

3)我觉得这种说法可能并非完全正确。如果需要,NDK可以支持stagefright,但这里的哲学不同。播放时,NDK支持此html文件中的OpenMAX AL播放器应用程序以及示例here。不过请注意,MPEG-2 TS实施仅支持OpenMAX AL,可能不符合您的要求。