使用 ffmpeg 将图像作为水印添加到视频文件

使用 ffmpeg 将图像作为水印添加到视频文件

我想用 FFMPEG 向视频文件添加文本。虽然我可以用纯文本做到这一点

$FFMPEG -y -i $SOURCE \ -vf drawtext="fontfile=/usr/share/fonts/Lato-Reg-webfont.ttf:fontsize=40:box=1:boxcolor=black:fontcolor=white:text='$WATERMARK':x=(main_w-text_w)-10:y=(main_h-text_h)-4" \ -threads $THREADS -f mp4 -vcodec mpeg4 -b $MOBILE_BITRATE -r $MOBILE_FRAME_RATE -strict -2 \ -s $RESOLUTION_SD -acodec libfaac -ar $MOBILE_AUDIO_RATE -ac $MOBILE_AUDIO_CHANNELS -ab $MOBILE_AUDIO_BITRATE \ $VIDEONAME_MOBILE-android.mp4

这看起来不够好。所以我尝试添加透明的 PNG 文件作为水印。为了寻找示例,我尝试了以下方法:

$FFMPEG -y -i $SOURCE \ -vf "movie=$WATERMARK_SMALL_PATH [水印]; [in][水印] overlay=10:main_h/2-overlay_h/2 [out]" \ -threads $THREADS -f mp4 -vcodec mpeg4 -b $MOBILE_BITRATE -r $MOBILE_FRAME_RATE -strict -2 \ -s $RESOLUTION_SD -acodec libfaac -ar $MOBILE_AUDIO_RATE -ac $MOBILE_AUDIO_CHANNELS -ab $MOBILE_AUDIO_BITRATE \ $VIDEONAME_MOBILE-android.mp4

它不起作用。如果这对任何人都有用,我可以分享确切的错误输出。

答案1

使用覆盖滤镜时,您不需要格式movie=。这样更简单,因此请使用以下格式:

ffmpeg -y -i inputmovie -i inputpicture.png -filter_complex 'overlay=0:0' -s 1280x720 ...other parameters... outputfile.mp4

我输入的尺寸仅供参考 - 您的尺寸会有所不同。请注意,图片和电影帧的尺寸相同,并且这里实际上没有进行缩放。这0:0是将图片与电影帧的左上角对齐 - 这是合乎逻辑的,因为它们都是相同的尺寸。

相关内容