我需要在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
指数和一些新指数。例如,对于 Miracast
, 新索引 prependSPSPPStoIDRFrames
引入,通过getExtensionIndex
支持.引用可以引用http://androidxref.com/4.2.2_r1/xref/frameworks/av/media/libstagefright/ACodec.cpp#891 .
除了上述索引,编码器还会收到一个新的请求到enableGraphicBuffers
。与 FALSE
bool 值。 最重要的这 2 个指数的要点是确保 OMX
调用这两个索引时组件不会失败。
通过这些修改,您应该能够将您的编码器集成到 Stagefright
中。框架。
关于ffmpeg - 在 android(FFMPEG) 上构建编码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15925289/