我怎样才能解压缩.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
答案 0 :(得分:2)
通常,Android
具有内置于其框架中的所有必需功能,可以从native
层和Java
层访问这些功能。下面的所有组件名称都有Java
抽象和Native
实现,您可以考虑在项目中使用它们。对于你的问题,
1)我建议您直接使用此JNI
实施中的MediaPlayer
,其实际执行情况可以here。
但是,如果您需要构建自己的管道,我建议使用MediaExtractor
等可用块来进行解复用并为编解码器提供单独的轨道OMXCodec
,我认为您将管理在您的实施中,audio
路由和Surface
处理视频。对您而言,一个很好的参考可能是SimplePlayer
示例实现。
2)如果您希望使用demuxer
中的FFMPEG
,则必须将其整合到系统支持的MediaExtractors
列表中。由于您的主要兴趣是MP4
和AVI
,两者都受到支持,我觉得您可以避免这种努力。如果您仍然对FFMPEG
集成感兴趣,请提出单独的查询,因为答案非常详细。
NDK
可以支持stagefright
,但这里的哲学不同。播放时,NDK
支持此html
文件中的OpenMAX
AL
播放器应用程序以及示例here。不过请注意,MPEG-2 TS
实施仅支持OpenMAX AL
,可能不符合您的要求。