使用 ffmpeg 在视频流上叠加图像
Overlay image over video stream using ffmpeg
我正在尝试在网络摄像头的视频流 (/dev/video0
) 上叠加图像并将输出发送到另一个视频流 (/dev/video2
)。到目前为止,我已经采用了 this question 中的解决方案来在现有视频上叠加(和缩放)图像并将其流式传输到正确的输出。
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
我正在尝试在网络摄像头的视频流 (/dev/video0
) 上叠加图像并将输出发送到另一个视频流 (/dev/video2
)。到目前为止,我已经采用了 this question 中的解决方案来在现有视频上叠加(和缩放)图像并将其流式传输到正确的输出。
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