如何使用ffmpeg在视频中心添加透明水印?

Posted

技术标签:

【中文标题】如何使用ffmpeg在视频中心添加透明水印?【英文标题】:How to add transparent watermark in center of a video with ffmpeg? 【发布时间】:2012-06-10 17:53:54 【问题描述】:

我目前正在使用这些命令:

Top left corner
ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=10:10 [out]" outputvideo.flv

Top right corner
ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out]" outputvideo.flv

Bottom left corner
ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" outputvideo.flv

Bottom right corner
ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=(main_w-overlay_w-10)/2:(main_h-overlay_h-10)/2 [out]" outputvideo.flv

如何在视频中心放置水印?

【问题讨论】:

右下角实际上是:ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h- 10 [out]" outputvideo.flv @mirza 你能告诉我,你把 watemarklogo.png 文件放在哪里,因为我没有收到这样的文件或目录错误 应该在你执行命令的同一目录中。 @B.shruti 【参考方案1】:

使用overlay 过滤器在视频上添加水印/徽标图像的示例。

居中

ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" -codec:a copy output.mp4

或使用缩短的覆盖选项:

overlay=(W-w)/2:(H-h)/2

左上角

这很简单,因为如果您没有提供叠加选项,默认设置是将图像放在左上角。

此示例添加了 5 个像素的填充,因此图像不会接触边缘:

overlay=5:5

右上角

有 5 个像素的内边距:

overlay=main_w-overlay_w-5:5

或使用缩短的选项:

overlay=W-w-5:5

右下

有 5 个像素的内边距:

overlay=main_w-overlay_w-5:main_h-overlay_h-5

或使用缩短的选项:

overlay=W-w-5:H-h-5

左下

有 5 个像素的内边距:

overlay=5:main_h-overlay_h

或使用缩短的选项:

overlay=5:H-h-5

透明度/不透明度/阿尔法

使用format 和colorchannelmixer 过滤器使水印50% 透明的示例:

ffmpeg -i input.mp4 -i watermark.jpg -filter_complex "[1]format=rgba,colorchannelmixer=aa=0.5[logo];[0][logo]overlay=(W-w)/2:(H-h)/2:format=auto,format=yuv420p" -c:a copy output.mp4

提高质量

在overlay过滤器中使用format=auto选项可以使PNG水印看起来更好:

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=5:H-h-5:format=auto,format=yuv420p" -c:a copy output.mp4

注意添加了format 过滤器(是的,与选项同名,但独立过滤器)将其重置为 MP4 输出所需的 YUV 4:2:0。如果您不输出 MP4,请删除 ,format=yuv420p

相对于主视频缩放水印

使用scale2ref 过滤器:

将徽标设为主视频大小的 10% (1/10) 的示例:

ffmpeg -i input.mp4 -i watermark.png -filter_complex "[1][0]scale2ref=w=oh*mdar:h=ih*0.1[logo][video];[video][logo]overlay=5:H-h-5" -c:a copy output.mp4

【讨论】:

如何将水印缩放为视频宽度的 2/3 并保持水印的比例,请帮忙 我正在尝试使用 FFMPEG 版本 n2.4.2 在 android 上运行它,我收到错误消息:没有这样的过滤器:'"overlay',有什么想法吗? @LordNeckbeard 驴图片怎么了:D @AarifAli 如果您不提供实际错误,我将无法提供帮助。 @HashimAziz ffmpeg 尝试保留颜色数据,因此它将尝试使用所选编码器支持的最“高级”像素格式进行色度二次采样。 MP4 的默认编码器通常是 libx264。 libx264 支持多种像素格式(请参阅ffmpeg -h encoder=libx264)。但是,大多数播放器只能支持最低级别,即 YUV 4:2:0。因此在答案中添加了格式过滤器,以确保 YUV 4:2:0 色度子采样以实现兼容性。

以上是关于如何使用ffmpeg在视频中心添加透明水印?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:如何使用flutter_ffmpeg为视频添加水印和文字等叠加层?

200分求:使用ffmpeg给视频加水印

FFmpeg进阶:给视频添加文字水印

ffmpeg 视频教程 添加水印附源码

请教ffmpeg加滚动水印怎么让它周期显示

7 ffmpeg 截图 水印,动图