0

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

我是新来的。任何人都可以提出一些建议吗?

4

1 回答 1

0

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框架中。

于 2013-04-11T06:16:07.073 回答