FFmpeg 中不同的 h264 编码器

Posted

技术标签:

【中文标题】FFmpeg 中不同的 h264 编码器【英文标题】:Different h264 encoders in FFmpeg 【发布时间】:2018-11-14 13:51:11 【问题描述】:

ffmpeg 4.0 中,有几个h264 编码器。如果你使用./configure --list-encoders | grep "h264",你可以看到它们。

h264_amf h264_nvenc h264_omx h264_qsv h264_v4l2m2m h264_vaapi h264_videotoolbox

我不知道有什么区别。而且我想使用 ffmpeg 将本地 gif 转换为 mp4,那么哪种编码器适合我?

【问题讨论】:

无 这些都依赖于特定的硬件或平台。你需要libx264 非常感谢。如果你能解释一下这些编码器就更好了。 videotoolbox 是苹果设备,nvenc 是英伟达,其他的可以google。 【参考方案1】:

每个编码器使用不同的 API 来访问视频硬件:

h264_amf 访问 AMD gpu,(仅限 Windows) h264_nvenc 使用 nvidia gpu cards(适用于 windows 和 linux) h264_omx 树莓派编码器 h264_qsv 使用 Intel Quick Sync Video(现代 Intel CPU 中嵌入的硬件) h264_v4l2m2m 使用V4L2 Linux kernel api 访问硬件编解码器 h264_vaapi 使用 VAAPI 这是另一个抽象 API 来访问视频加速硬件(仅限 Linux) h264_videotoolbox 使用 videotoolbox 一个 API 来访问 macOS 上的硬件

使用适当的硬件,每个编码器都会成功地将您解码的 gif 编码为 mp4。

您可以自定义此命令将 gif 转换为 mp4:

$ ffmpeg -i local-gif.gif -c:v libx264 output.mp4

libx264 是默认编码器,不使用任何特定硬件,可以更改为所需的编码器。

【讨论】:

amf 仅适用于 windows、nvenc (win/linux) 和 vaapi linux,您能否将这些 ietails 添加到您的回复中以使其更加详尽?

以上是关于FFmpeg 中不同的 h264 编码器的主要内容,如果未能解决你的问题,请参考以下文章

ffmpeg与H264编码指南

如何将yuv编码为h264,自己编码或者ffmpeg都可以。

FFmpeg简单使用:视频编码 ---- YUV转H264

FFmpeg-视频编码-YUV编码出H264

ffmpeg用于将视频编码为H264编解码器格式

H264编码系列之ffmpeg和x264码率控制分析