我正在尝试使用 YouTube 用于 H.264/MP4 容器质量等的相同命令行。我一直在努力将视频转换为多种格式、比例、大小,并调整比特率和音频速率以匹配 YouTube 所说的他们使用的速率。
简而言之,我使用的如下:
-pix_fmt yuv420p -profile:v baseline -level 3.0 -acodec libfaac -ar 44100 -ac 2 -ab 192k -aspect 16:9 -r 24000/1001 -movflags +faststart
现在,如果我要详细说明为什么这些值是这样的,您应该首先看看 YouTube 自己告诉我们他们在这里使用了什么。
- https://support.google.com/youtube/answer/1722171?hl=en
- https://sites.google.com/site/linuxencoding/x264-ffmpeg-mapping
让我们详细了解一下
- moov atom 在文件前面(快速启动)
- 声道:立体声或立体声 + 5.1
- 采样率 96khz 或 48khz
- 逐行扫描(无隔行)
- 高调
- 2 个连续的 B 帧
- 封闭式 GOP。帧速率减半的 GOP。
- 中美洲及加勒比地区航空委员会
- 色度子采样:4:2:0
- 帧速率
- YouTube 使用 16:9 宽高比的播放器。
- 音频编解码器:AAC-LC
在 ffmpeg 的命令行中,这些变成以下内容。
-movflags +faststart
-ac 2
-ar 48000
- 不确定这个命令是什么。(FFMPEG 默认编码是渐进的。)
-profile:v high -level 4.0
-bf 2
(FFMPEG 的默认值为 16。)-g 12
或-g 15
根据 YouTube 的 FPS 而变化。(默认值 12 适用于 24-25 fps。对于 NTSC 和 30 fps,请选择 15。* FFMPEG 选项:-g
,不确定 YouTube 的默认 FPS 是 24 还是 30。我假设 24,因为默认值 12 是帧速率的一半,如果帧速率为 30,则默认值为 15。)-coder 1
(默认情况下,CABAC 是 x264 使用的熵编码器。)-pix_fmt yuv420p
(我认为每个人都需要添加这个强制性要求,否则所有非基于 FFmpeg 的播放器都不支持正确解码 YUV 4:2:2 或 YUV 4:4:4。所以需要 yuv 4:2:0。)-r 24000/1001
(假设 YouTube 的默认帧速率为 24。)-aspect 16:9
-acodec libfaac
但我知道我可能遗漏了一些命令,或者需要更改,如果有人愿意帮忙的话。纠正/告诉我我需要更改/添加什么。
因为我想使用基线配置文件,所以我不在命令行中使用 CABAC、GOP 或 B 帧,因为它们都将被禁用且变得无关紧要。