使用ffmpeg从图像创建视频时为每个帧添加水印

时间:2016-05-18 01:06:01

标签: c++ linux ffmpeg

我基本上是从opengl动画uisng glreadpixels和unix管道创建视频: FILE *ffmpeg = popen("/usr/local/Cellar/ffmpeg/2.5.4/bin/ffmpeg" " -framerate 30" " -vcodec rawvideo" " -f rawvideo" " -pix_fmt rgb32" " -s 1080x720" " -i pipe:0 -vf vflip -vcodec h264" " -r 60" " /Users/xamarin/Desktop/out.mp4", "w"); 当我为视频创建帧时,是否可以在每个帧中添加水印。我知道如何在现有视频中添加水印,但我想在我创建视频时添加水印,以便在步骤中我获得带有水印的视频。建议ffmpeg可以做到这一点的一些参数。

1 个答案:

答案 0 :(得分:2)

使用overlay filter

ffmpeg \
-framerate 30 -f rawvideo -pixel_format rgb32 -video_size 1080x720 -i pipe:0 \
-i overlay.png \
-i audio.foo \
-filter_complex "[0:v]vflip[main];[main][1:v]overlay=format=rgb,format=yuv420p" \
-c:v libx264 -c:a aac -movflags +faststart output.mp4
  • rawvideo demuxer documentation列出-pixel_format代替-pix_fmt-video_size而不是-s

  • 当您加入-c:v rawvideo时,您可能不需要-f rawvideo

  • 我删除了-r 60,因为似乎没有必要复制这些框架。

  • format=rgb添加到RGB输入的叠加过滤器时,您可能会看到视觉上的改进。格式滤波器然后用于使用YUV 4:2:0色度子采样进行H.264输出,这是非基于FFmpeg的播放器所需的。

  • -movflags +faststart如果您的观看者会通过渐进式下载进行观看,则非常有用。