FFmpeg视频剪辑教程:裁剪、拼接、变速、倒放
全面的FFmpeg视频剪辑教程,涵盖时间轴裁剪、精确剪辑、多段拼接、播放速度调整、视频倒放等核心操作。
阅读更多 →从基础到进阶,掌握视频水印处理核心技能
视频水印是保护视频版权、增强品牌识别的重要手段。无论是文字水印还是图片水印,FFmpeg 都能通过简单的命令实现。本文将全面介绍 FFmpeg 中水印处理的各种方法,包括添加、定位、动画效果以及去除水印等实用技巧。
使用 FFmpeg 的 drawtext 滤镜可以在视频上添加文字水印,支持丰富的样式设置。
最简单的文字水印添加方式,指定文字内容、字体大小和颜色:
ffmpeg -i input.mp4 -vf "drawtext=text='查工具网':fontsize=24:fontcolor=white:x=10:y=10" output.mp4
可以指定字体文件、字体大小、颜色、阴影等效果:
ffmpeg -i input.mp4 -vf "drawtext=text='@查工具网':fontfile=msyh.ttf:fontsize=32:fontcolor=white:shadowx=2:shadowy=2:shadowcolor=black@0.5:x=20:y=20" output.mp4
使用 overlay 滤镜可以将图片(如Logo)叠加到视频上作为水印。
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=10:10" output.mp4
先使用 scale 滤镜调整水印图片尺寸,再叠加到视频上:
ffmpeg -i input.mp4 -i logo.png -filter_complex "[1:v]scale=100:-1[logo];[0:v][logo]overlay=20:20" output.mp4
FFmpeg 提供了方便的定位变量,可以轻松实现9个标准位置的水印布局。
# 左上角
overlay=10:10
# 右上角
overlay=W-w-10:10
# 左下角
overlay=10:H-h-10
# 右下角
overlay=W-w-10:H-h-10
# 顶部居中
overlay=(W-w)/2:10
# 底部居中
overlay=(W-w)/2:H-h-10
# 左侧居中
overlay=10:(H-h)/2
# 右侧居中
overlay=W-w-10:(H-h)/2
# 正中心
overlay=(W-w)/2:(H-h)/2
其中,W 和 H 代表主视频的宽高,w 和 h 代表水印的宽高。
通过在 overlay 滤镜中使用时间变量 t,可以实现水印的动态效果。
# 从左到右滚动
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=x='t*100':y=50" output.mp4
# 从右到左滚动
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=x='W-w-t*100':y=50" output.mp4
使用正弦函数实现上下弹跳效果:
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=x=50:y='50+abs(sin(t*2))*100'" output.mp4
调整水印的透明度可以让水印不那么突兀,同时保留版权保护作用。
使用 format 和 colorchannelmixer 滤镜调整透明度:
# 50%透明度
ffmpeg -i input.mp4 -i logo.png -filter_complex "[1:v]format=rgba,colorchannelmixer=aa=0.5[logo];[0:v][logo]overlay=W-w-20:H-h-20" output.mp4
文字水印可以直接在 fontcolor 中指定透明度:
ffmpeg -i input.mp4 -vf "drawtext=text='查工具网':fontsize=24:fontcolor=white@0.5:x=W-tw-20:y=H-th-20" output.mp4
有时候需要去除视频中的水印,FFmpeg 提供了几种方法可以实现不同程度的去除效果。
使用 boxblur 滤镜对水印区域进行模糊处理:
# 模糊左上角水印区域(x:y:w:h)
ffmpeg -i input.mp4 -vf "delogo=x=10:y=10:w=200:h=80:show=0" output.mp4
delogo 是专门用于去除台标、水印的滤镜,效果比模糊更自然:
ffmpeg -i input.mp4 -vf "delogo=x=50:y=50:w=150:h=60:band=3" output.mp4
removelogo 滤镜通过分析周围像素来填充水印区域:
# 需要先制作水印遮罩图片
ffmpeg -i input.mp4 -vf "removelogo=mask.png" output.mp4
在实际工作中,经常需要批量处理多个视频。以下是批量添加水印的方法。
@echo off
for %%i in (*.mp4) do (
ffmpeg -i "%%i" -i logo.png -filter_complex "overlay=W-w-20:H-h-20" -c:a copy "output\%%~ni_watermark.mp4"
)
#!/bin/bash
for file in *.mp4; do
ffmpeg -i "$file" -i logo.png -filter_complex "overlay=W-w-20:H-h-20" -c:a copy "output/${file%.mp4}_watermark.mp4"
done
FFmpeg 提供了强大而灵活的水印处理功能,从简单的文字水印到复杂的动画水印,从添加到去除,都能高效完成。掌握这些技巧,可以在视频版权保护、品牌推广等场景中游刃有余。
需要注意的是,去除他人视频水印可能涉及版权问题,请确保在合法合规的前提下使用这些技术。