使用 ffmpeg 将原始视频编码为 H.264 格式

gol*_*ean 11 video h.264 ffmpeg ubuntu

在 Ubuntu 10.04 上,我尝试使用以下 ffmpeg 命令将原始视频(YUV 格式)编码为 H.264 编码的视频:

ffmpeg -i input.mp4 output.h264
Run Code Online (Sandbox Code Playgroud)

但我收到一条错误消息

不支持的输出流编解码器 #0.0

然后当我尝试这个选项时:

ffmpeg -i input.mp4 -formats h264 output.h264
Run Code Online (Sandbox Code Playgroud)

它仍然不编码。

现在我明白了 ffmpeg 使用 libx264 编码为 H.264 格式。现在我在这个 Ubuntu 上安装了包 x264 - 快速 H.264 编码器。

我的问题:

  1. 这个 ffmpeg 需要的 libx264 和 x264 程序之间有什么关系吗?
  2. 如何安装 libx264 并使 ffmpeg 使用它来允许我将视频编码为 H.264 格式?

slh*_*hck 13

首先,您使用的那些命令在语法上看起来不正确。为了让 ffmpeg 使用 x264,您需要提供-c:v libx264参数。

现在,如果你有一个原始的 YUV 文件,你需要告诉 ffmpeg 使用的是哪种像素格式、哪种大小等:

ffmpeg -f rawvideo -pix_fmt yuv420p -s:v 1920x1080 -r 25 -i input.yuv \
-c:v libx264 output.mp4
Run Code Online (Sandbox Code Playgroud)

根据您的 YUV 文件的规范更改这些。查看ffmpeg -pix_fmts支持的像素格式列表。Fourcc.org也是一个很好的资源。

如果您只想要.264文件中的原始 H.264 比特流:

ffmpeg -f rawvideo -pix_fmt yuv420p -s:v 1920x1080 -r 25 -i input.yuv \
-c:v libx264 -f rawvideo output.264
Run Code Online (Sandbox Code Playgroud)