我有一系列BMP(或PNG)图像,我想将其转换为XVID和MP5电影格式。
编码可以工作但是生成的电影有一个褪色的颜色,黑色以某种方式移动到RGB 16,最亮的255个值移动到235.我希望输出电影使用相同的0到255种颜色作为源帧。
现在FFMPEG存在各种相互矛盾的doco,所以我是一个人有一个示例命令行来完成我需要的工作。我尝试了各种pix_fmt标志,但没有一个能在全彩色范围内获得输出影片。
对于XVID
ffmpeg.exe -framerate 60 -i "D:\SRC%05d.BMP" -c:v mpeg4 -vtag xvid -qscale 1 -y "D:\OUTPUT.AVI""
对于H265
ffmpeg.exe -framerate 60 -i "D:\SRC%05d.BMP" -c:v libx265 -x265-params lossless=1 -s 3840x2160 -pix_fmt yuvj420p -an -y "D:\OUTPUT.MP4""
yuvj420p应该提供全彩色范围,但ffmpeg抱怨“不兼容的像素格式'yuvj420p'用于编解码器'libx265',自动选择格式'yuv420p'”
那么,是否有任何FFMPEG大师可以给我神奇的开关来获得我的输出电影,黑色黑色和颜色保持原始帧文件0-255 RGB值。
答案 0 :(得分:7)
可以强制输出范围,颜色范围元数据也是如此,但是您的播放器或编辑器可能会强制进行有限范围的解释,因此,需要告诫代码转换器。
话虽如此,你必须设置两个标志:第一个用于缩放器,然后用于元数据。
ffmpeg.exe -framerate 60 -i "D:\SRC%05d.BMP" -vf format=yuv420p -dst_range 1 -color_range 2 -c:v mpeg4 -vtag xvid -qscale 1 -y "D:\OUTPUT.AVI""
(因为你正在使用mpeg4
编码器,这不是Xvid,它是-c:v libxvid
;你需要链接这个lib才能使用它。)
对于x265,可以使用编码器标志设置范围。
ffmpeg.exe -framerate 60 -i "D:\SRC%05d.BMP" -c:v libx265 -x265-params lossless=1:range=full -s 3840x2160 -dst_range 1 -pix_fmt yuv420p -an -y "D:\OUTPUT.MP4""