![为什么 QuickTime 无法播放 CRF 为 0 的视频,而 CRF 为 10 时却可以播放?](https://linux22.com/image/1623175/%E4%B8%BA%E4%BB%80%E4%B9%88%20QuickTime%20%E6%97%A0%E6%B3%95%E6%92%AD%E6%94%BE%20CRF%20%E4%B8%BA%200%20%E7%9A%84%E8%A7%86%E9%A2%91%EF%BC%8C%E8%80%8C%20CRF%20%E4%B8%BA%2010%20%E6%97%B6%E5%8D%B4%E5%8F%AF%E4%BB%A5%E6%92%AD%E6%94%BE%EF%BC%9F.png)
我正在尝试使用ffmpeg
(版本 4.2.2)进行视频压缩,并使用了以下命令:
ffmpeg -i old.mp4 -c:v libx264 -crf 0 -preset fast newCrf0.mp4
但生成的视频无法在 MacOS 10.14 上的 QuickTime 版本 10.5 上播放。相当无用的错误消息是:“该文件与 QuickTime Player 不兼容。“
在找不到解释后,我尝试了这个:
ffmpeg -i old.mp4 -c:v libx264 -crf 10 -preset fast newCrf10.mp4
然后 QuickTime 播放了它。我很好奇想知道发生了什么。
ffprobe
以下是每个文件的摘要:
$ ffprobe -hide_banner newCrf0.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'newCrf0.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.29.100
Duration: 00:02:34.54, start: 0.000000, bitrate: 4114 kb/s
Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv420p, 1280x720, 3979 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
$ ffprobe -hide_banner newCrf10.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'newCrf10.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.29.100
Duration: 00:02:34.54, start: 0.000000, bitrate: 1146 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 1010 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
显然,视频流存在差异:
h264 (High 4:4:4 Predictive)
vs h264 (High)
。
- 这意味着什么?
- 这就是问题的根源吗?
- CRF=0 对其他玩家来说有问题吗?
答案1
QuickTime 仅支持具有 YUV 4:2:0 色度子采样的 H.264,但使用-crf 0
结果为 4:4:4。
任何基于 FFmpeg 的播放器(例如 VLC 或 mpv)都将支持这些文件。