是否可以仅将与最后一帧不同的帧部分输出为带有ffmpeg之类的png图像?
答案 0 :(得分:0)
您需要进行一些像素区分。 循环检查两个位图(帧)的像素(if same color = make transparent in output bitmap
,如果不匹配值(颜色)则show as white in output bitmap
),则更容易。然后,可以将该输出位图编码为输出视频中的新/下一帧。但是您没有向我们介绍您的编程语言,因此对此方法没有进一步的建议...
仅使用FFmpeg,您可以尝试:
ffmpeg -i test1.mp4 -i test2.mp4 -filter_complex "blend=all_mode=difference" -pix_fmt yuv420p -c:v libx264 out_difference.mp4
对于某些人来说,它只会给出绿色的输出(甚至对我来说),因此,如果找到解决此问题的解决方案(网络研究),那么这就是您的解决方案。其他混合模式(如"blend=all_mode=screen"
可以正常工作
答案 1 :(得分:0)
自声明起,您只想“ 仅输出与最后一帧不同的部分”,就需要使用tblend过滤器。
ffmpeg -i in -filter_complex "format=yuva444p,split[diff][out];[diff]tblend=all_expr='if(eq(A,B),0,A)',geq=lum='p(X,Y)':a='if(eq(lum(X,Y)+cb(X,Y)+cr(X,Y),0),0,255)',alphaextract[diff];[out]trim=start_frame=1[out];[out][diff]alphamerge" -vsync vfr out%d.png
限制是,如果像素在A和B中最初都是0
,那么在输出中将是假阳性。