我正在尝试将一个简单的动画从 MOV 转换为 WEBM,以便它可以用作我的 Twitch 流的 OBS 警报。
但是,当我使用 FFMPEG 进行转换时,颜色稍微褪色了。
正如您在左边的红线上看到的,右半部分(WEBM)与左半部分(MOV)相比显得褪色了。
这是我目前正在使用的:
ffmpeg -i "file_name.mov" -c:v libvpx-vp9 -lossless 1 -auto-alt-ref 0 "file_name.webm"
我没有想到颜色会稍微褪色。
有没有什么方法可以确保 WEBM 在从 MOV 文件转换后不会丢失其颜色?
非常感谢。
这是“file_name.mov”:https://drive.google.com/file/d/1pJpSC4RbNFV-WBILdKfBSzua1qVaXxw0/view?usp=sharing
答案1
libvpx-vp9 编解码器选择yuva420p
输出像素格式,因为您没有指定-pix_fmt
参数。
由于我们正在寻找无损编码,我们可以添加-pix_fmt gbrp
:
ffmpeg -y -i "file_name.mov" -c:v libvpx-vp9 -lossless 1 -auto-alt-ref 0 -pix_fmt gbrp "file_name.webm"
从 RGBA(MOV 文件的格式)到 YUVA420 的像素格式转换适用色度二次采样,这可能会影响颜色。
注意:添加-pix_fmt gbrp
alpha(透明度)通道在转换为时会丢失gbrp
(但 VP9 不支持 rgba 像素格式作为 MOV RLE 编解码器)。
看起来 FFmpeg 中也有一个关于像素格式转换的错误(或者 FFmpeg 与视频播放器之间不兼容)。
以下转换的颜色在使用 VLC 播放时看起来几乎完美,但在使用 MPC-HC 播放时会变得褪色(例如):
ffmpeg -y -i "file_name.mov" -c:v libvpx-vp9 -vf "scale=out_color_matrix=bt709:dst_range=1:dst_format=yuv420p" -lossless 1 -auto-alt-ref 0 -pix_fmt yuv420p -bsf:v vp9_metadata=color_space=bt709 "file_name2.webm"