我想逐帧编辑小视频/图像,而不会损失质量(或不会损失太多)。我使用 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