在android上构建一个编码器(FFMPEG)

时间:2013-04-10 12:02:43

标签: ffmpeg h.264

我需要在android上构建一个编码器。尝试将摄像头捕获的视频流编码为h.264 我有libffmpeg.so文件,但我不知道如何使用它。

我是新手。有人能提出一些建议吗?

1 个答案:

答案 0 :(得分:0)

要在Android上使用FFMPEG库,您必须将OMX组件集成在一起。

对于ffmpeg编译和OMX代,您可以参考以下链接:FFmpeg on Android

准备好OMX组件后,您必须将其整合到Android中,方法是将其包含在media_codecs.xml中。如果您希望始终调用特定的编码器,请确保您的编解码器是列表中注册的第一个编解码器。

对于编码器,您将考虑几个要点。

一,如果您希望优化系统,那么您可能希望避免将来源(相机,表面或其他来源)的帧复制到{{1的输入端口编码器组件。因此,您的编解码器必须支持通过元数据传递缓冲区(参考:http://androidxref.com/4.2.2_r1/xref/frameworks/av/media/libmediaplayerservice/StagefrightRecorder.cpp#1413)。如果您需要有关此主题的更多信息,请提出单独的问题。

二,编码器必须支持标准OMX索引和一些新索引。例如,对于OMX,引入了新的索引Miracast,该索引通过prependSPSPPStoIDRFrames得到支持。作为参考,您可以参考http://androidxref.com/4.2.2_r1/xref/frameworks/av/media/libstagefright/ACodec.cpp#891

除上述索引外,编码器还会向getExtensionIndex发送一个enableGraphicBuffers布尔值的新请求。这两个索引的最重要点是为了确保在调用这两个索引时FALSE组件不会失败。

通过这些修改,您应该能够将编码器集成到OMX框架中。