我有一部电影(m4v/h.264/AAC),在我的 Mac 上播放正常,但最近我发现它无法在我的 Apple TV3 上播放。查看此电影文件的属性后,我发现它有一个配置文件[电子邮件保护]但 Apple TV3 仅支持[电子邮件保护]。我认为唯一导致此视频不兼容的属性是最大视频比特率,所有其他属性看起来都受支持[电子邮件保护]。
我如何使用 ffmpeg 将此视频降级为[电子邮件保护]?
或者我是否必须更改实际属性(最大比特率),使此视频的比特率为 4.1 而不是 4.0?我担心,如果我只是更改比特率,虽然文件将兼容[电子邮件保护]它仍会被“标记”为[电子邮件保护]因此仍然无法在我的 Apple TV3 上播放。
答案1
使用 编码时libx264
,您可以使用以下方式设置 H.264 配置文件和级别:
-profile:v
high
– 、main
或之一baseline
(以及其他,但此处无关)-level:v
– 按照 H.264 标准附件 A 中的定义,例如4.0
。
例如:
ffmpeg -i input.mp4 -c:v libx264 -profile:v high -level:v 4.0 -c:a copy output.mp4
这里我们刚刚复制了音频流,因为它不会受到影响。
输出将在其元数据中设置正确的配置文件和级别。您可以在编码时检查这x264
一点,如下所示:
[libx264 @ 0x7fb26103a000] profile High, level 4.0
媒体信息还可以帮助您分析容器和编解码器的细节。
当然,重新编码视频会在一定程度上降低其质量,因为您再次应用了有损转换。尝试设置选项-crf
以影响恒定质量参数。此处的默认值为 23,而 18 到 28 之间的值被认为是合理的。值越低,质量越好。如果您的输入比特率高达 65,000 kBit/s,转换后它很可能仍然看起来相当不错。
答案2
作为参考评论,尝试这个命令:
ffmpeg -i input.mp4 -map 1 -c:v libx264 -profile:v high -level:v 4.0 -c:a copy \
# copies all global metadata from input.mp4 to output.mp4
-map_metadata 0 \
# copies video stream metadata from input.mp4 to output.mp4
-map_metadata:s:v 0:s:v \
# copies audio stream metadata from input.mp4 to output.mp4
-map_metadata:s:a 0:s:a \
output.mp4
干杯
答案3
尽管我已经读过其他内容(即不同的输入格式),但在从 x265 重新编码为 x264 时我使用了“-movflags use_metadata_flag”并且成功了!
答案4
尝试-c:v h264_nvenc
代替-c:v libx264
我绝对不是 ffmpeg 专家,但我认为 libx264 是软件