使用ffmpeg将多个BMP文件以不同的亮度合并为MP4

使用ffmpeg将多个BMP文件以不同的亮度合并为MP4

我想逐帧编辑小视频/图像,而不会损失质量(或不会损失太多)。我使用 ffmpeg 将其拆分为图像,使用以下行:

ffmpeg -i test.mp4 $filename%%03d.bmp

这很有效。我尝试使用几行代码将图像合并回来,其中包括:

ffmpeg -re -f image2 -framerate 30 -i $filename%%03d.bmp -c:v prores_aw -pix_fmt yuv422p10le test.mkv

但是,这会导致原始视频和合并视频之间的亮度/对比度存在差异。合并后的文件会比原始文件暗一点(您必须仔细查看)。我该怎么做才能解决这个问题?

谢谢你的时间。

答案1

为了获得正确的颜色(和亮度/对比度),我们可以手动选择BT.709颜色标准,并使用 BT.709 标记流元数据比特流过滤器

ffmpeg -f image2 -framerate 30 -i $filename%%03d.bmp -vf scale=out_color_matrix=bt709:out_range=tv -c:v prores_aw -pix_fmt yuv422p10le -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 test.mkv


使用合成图像进行测试:

  • 使用 FFmpeg 生成 10 张合成 BMP 图像:
    ffmpeg -f lavfi -i testsrc=size=1280x720:rate=1:duration=10 test%03d.bmp

  • 使用原始命令进行编码:
    ffmpeg -y -f image2 -framerate 30 -i test%03d.bmp -c:v prores_aw -pix_fmt yuv422p10le test1.mkv

  • 使用scale过滤器和比特流过滤器进行编码:
    ffmpeg -y -f image2 -framerate 30 -i test%03d.bmp -vf scale=out_color_matrix=bt709:out_range=tv -c:v prores_aw -pix_fmt yuv422p10le -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 test2.mkv


test001.bmp(转换为 PNG):
在此处输入图片描述

test1.mkv使用 MPC-HC 媒体播放器播放:
在此处输入图片描述 视频变暗,颜色发生改变...

test2.mkv使用 MPC-HC 媒体播放器播放:
在此处输入图片描述
颜色与原始 BMP 文件相同。

相关内容