仅提取已更改的框架的一部分

时间:2018-09-15 19:41:57

标签: video ffmpeg video-processing

是否可以仅将与最后一帧不同的帧部分输出为带有ffmpeg之类的png图像?

2 个答案:

答案 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,那么在输出中将是假阳性。