ffmpeg - 在 android(FFMPEG) 上构建编码器

标签 ffmpeg h.264

我需要在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/

相关文章:

c# - 将 H.264 帧复用到 MP4 时,Media Foundation IMFSinkWriter::Finalize() 方法在 Windows 7 下失败

video - 手动编码为 MPEG-TS

directx - 如何在 directx 11 和 windows 7 中使用硬件加速视频/H.264 解码?

php - 从 php 页面执行时,ffmpeg 不会保存文件

ffmpeg - Web mp4 视频的像素格式是什么?

php - 如何在 FFMPEG 和 PHP 代码的帮助下并排合并两个 mp4 视频?

c++ - RTP H.264 保存和回放

android - 在 android 上使用 FFmpeg h264 解码器

node.js - 流利的 ffmpeg 模块 : "end" event does not fire

video - 如何获取 h264 视频信息?