使用 ffmpeg 在视频流上叠加图像



我正在尝试将图像覆盖在网络摄像头的视频流(/dev/video0)上,并将输出发送到另一个视频流(/dev/video2)。到目前为止,我已经调整了这个问题的解决方案,将图像叠加(和缩放)到现有视频上并将其流式传输到适当的输出。

ffmpeg -stream_loop -1 -re -i video.mp4 -i image.png 
-filter_complex "[1][0]scale2ref[i][m];[m][i]overlay[v]" 
-map "[v]" -f v4l2 /dev/video2

我可以使用什么代替-stream_loop/dev/video0(网络摄像头)获取视频并在其上实时叠加相同的图像?

我能够通过删除-stream_loop参数并使用-pix_fmt yuv420p指定视频流的格式来解决此问题。

ffmpeg -re -i /dev/video0 -i image.png -pix_fmt yuv420p 
-filter_complex "[1][0]scale2ref[i][m];[m][i]overlay[v]" 
-map "[v]" -f v4l2 /dev/video2

从 llogan 的评论中进一步完善,得出以下最终命令:

ffmpeg -i /dev/video0 -i image.png -filter_complex 
"[1][0]scale2ref[i][m];[m][i]overlay=format=auto,format=yuv420p[v]" 
-map "[v]" -f v4l2 /dev/video2

最新更新