0

我如何 demux .mp4 文件并分离音频/视频,然后使用 openmax 和 android stagefright 单独渲染。

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

2.如果我使用ffmpeg进行解复用,它如何与android stagefright集成(如果我必须将ffmpeg demuxer构建为组件并使用openmax il将其与android链接或在android jni中编写整个代码(在这种情况下我有将ffmpeg与android stagefright链接))。

3.由于android ndk不支持stagefright,如何整合两者。

问候马扬克

4

1 回答 1

2

一般来说,Android它的框架中内置了所有必需的功能,可以从两个层nativeJava层访问。下面的所有组件名称都有一个Java抽象和Native实现,您可以考虑在您的项目中相应地使用它们。对于您的问题,

1)我建议你可以MediaPlayer直接使用这个JNI实现中找到的,实际的实现可以在这里找到。

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

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

3)我觉得这个说法可能并不完全正确。NDK如果需要可以支持stagefright,但这里的理念不同。对于播放,NDK支持OpenMAX AL此文件中的播放器应用程序以及此处html的示例。但是,请注意,仅在可能不适合您的要求的实施中支持。MPEG-2 TSOpenMAX AL

于 2013-11-19T17:30:08.093 回答