我需要在android上构建一个编码器。尝试将摄像头捕获的视频流编码为h.264
我有libffmpeg.so
文件,但我不知道如何使用它。
我是新手。有人能提出一些建议吗?
答案 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
框架中。