如何使用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在视频中心添加透明水印?的主要内容,如果未能解决你的问题,请参考以下文章