我需要在android上构建一个编码器。尝试将相机捕获的视频流编码为h.264
.
我有libffmpeg.so
文件,但我不知道如何使用它。
我是新来的。任何人都可以提出一些建议吗?
要FFMPEG
在 Android 上使用这些库,您必须集成与OMX
组件相同的库。
ffmpeg
编译和生成可以OMX
参考这个链接:FFmpeg on Android
准备好组件后,您必须OMX
将其集成到 Android 中,方法是将其包含在media_codecs.xml
. 如果您希望始终调用您的特定编码器,请确保您的编解码器是列表中注册的第一个编解码器。
对于编码器,您需要考虑几个要点。
一,如果您希望优化您的系统,那么您可能希望避免将帧从源(相机、表面或其他源)复制到OMX
编码器组件的输入端口。因此,您的编解码器必须支持通过元数据传递缓冲区(参考:http ://androidxref.com/4.2.2_r1/xref/frameworks/av/media/libmediaplayerservice/StagefrightRecorder.cpp#1413 )。如果您需要有关此主题的更多信息,请提出单独的问题。
二,编码器必须支持标准OMX
索引和一些新的索引。例如 for Miracast
,引入了一个新的索引prependSPSPPStoIDRFrames
,通过 支持getExtensionIndex
。作为参考,您可以参考http://androidxref.com/4.2.2_r1/xref/frameworks/av/media/libstagefright/ACodec.cpp#891。
除了上述索引之外,编码器还将获得一个enableGraphicBuffers
带有FALSE
布尔值的新请求。这两个索引最重要的一点是确保OMX
调用这两个索引时组件不会失败。
通过这些修改,您应该能够将编码器集成到Stagefright
框架中。