其实在日常我们处理视频中使用的水印或提取音频视频等功能都是基于 FFmpeg 这款开源的工具,今天我们就用更基础的方法来了解如何使用基于 FFmpeg 命令的方式来实现水印添加以及音频提取。
提取音频的核心参数是 -vn(Video None,即忽略视频流)。根据你对音质和格式的需求,可以分为以下几种方式:
1. 无损提取(速度最快,音质无损失)
如果你只是想把视频里的原声提取出来,不想经过任何重新编码(秒级完成),可以使用 -acodec copy 或 -c:a copy 直接复制音频流。
提取为 AAC 格式:
ffmpeg -i input.mp4 -vn -acodec copy output.aac
提取为 MP3 格式(前提是原视频音频本身就是 MP3 编码):
ffmpeg -i input.mp4 -vn -acodec copy output.mp31
2. 重新编码提取(兼容性最好)
如果需要将音频转换为通用的 MP3 格式,或者原视频音频编码不兼容,可以指定编码器重新编码。
提取为高品质 MP3(比特率 192k):
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k output.mp35
3. 提取特定时间段的音频
如果你只需要视频中某一段的音频,可以结合 -ss(开始时间)和 -t(持续时长)参数。
例如:从第 1 分钟开始,截取 30 秒的音频:
ffmpeg -i input.mp4 -ss 00:01:00 -t 30 -vn output.mp33
添加水印主要依靠滤镜功能。根据你的需求,可以分为添加图片水印和文字水印。
1. 添加图片水印(最常用)
使用 -vf "overlay=x:y" 滤镜将一张图片(建议使用透明背景的 PNG)叠加到视频上4。
基础命令(添加在左上角):
ffmpeg -i input.mp4 -i watermark.png -vf "overlay=10:10" -c:a copy output.mp4
overlay=10:10:表示水印距离视频左边和上边各 10 像素4。
-c:a copy:音频直接复制,不重新编码,节省时间。
常用位置参数速查:
右上角: overlay=main_w-overlay_w-10:10
左下角: overlay=10:main_h-overlay_h-10
右下角: overlay=main_w-overlay_w-10:main_h-overlay_h-10
居中: overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2
注:main_w 和 main_h 代表主视频的宽和高,overlay_w 和 overlay_h 代表水印图片的宽和高
2. 添加文字水印
使用 drawtext 滤镜可以在视频上直接绘制文字。
基础命令(在指定位置添加绿色文字):
ffmpeg -i input.mp4 -vf "drawtext=text='Hello World':x=100:y=100:fontsize=50:fontcolor=green" output.mp4
注意:使用 drawtext 滤镜通常需要 FFmpeg 编译时包含 --enable-libfreetype 和 --enable-libfontconfig,部分简易安装包可能不支持此滤镜2。
添加带背景框的文字:
ffmpeg -i input.mp4 -vf "drawtext=text='水印文字':fontsize=40:fontcolor=white:box=1:boxcolor=black@0.5:x=10:y=10" output.mp4
box=1:开启文字背景框。
boxcolor=black@0.5:背景框为半透明黑色(0.5 代表 50% 透明度)。
在实际输入命令时,记得把 input.mp4、watermark.png 和 output.mp4 替换成你电脑上实际的文件路径和文件名。如果遇到路径中有空格的情况,记得用英文双引号 "" 把路径包起来。