1. 视频裁剪:精准截取关键片段
视频裁剪是日常处理中最常用的功能之一。我经常遇到需要从长视频中截取精彩片段的场景,比如会议录像中的关键发言、直播回放中的高光时刻。FFmpeg的裁剪功能就像一把精准的手术刀,可以按照帧级精度切割视频。
最基本的裁剪命令如下:
ffmpeg -i input.mp4 -ss 00:01:30 -to 00:02:15 -c:v copy -c:a copy output.mp4这个命令中的-ss参数指定开始时间(1分30秒),-to参数指定结束时间(2分15秒)。实测发现,加上-c:v copy -c:a copy参数可以避免重新编码,处理速度能快10倍以上,特别适合大文件处理。
更精确的帧级裁剪可以这样操作:
ffmpeg -i input.mp4 -ss 00:05:00 -t 10 -c copy output.mp4这里的-t 10表示从5分钟处开始截取10秒内容。我曾经用这个方法处理4K视频,相比用专业剪辑软件,FFmpeg的速度快得惊人。
2. 视频缩放:适配不同播放场景
去年我帮朋友处理一批教学视频时,发现原始素材是1920x1080,但需要在平板上展示。通过FFmpeg的缩放功能,可以轻松调整视频尺寸:
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4这个命令将视频缩放到720p。如果想保持原始宽高比,可以只指定宽度:
ffmpeg -i input.mp4 -vf scale=640:-1 output.mp4-1表示自动计算高度。我在处理手机竖屏视频时常用这个参数。
对于专业需求,还可以指定缩放算法:
ffmpeg -i input.mp4 -vf scale=1920:1080:flags=lanczos output.mp4Lanczos算法能提供更高质量的缩放效果,适合对画质要求严格的场景。
3. 视频旋转:修正拍摄方向问题
手机拍摄的视频经常出现方向错误的问题。上周我收到一个客户发来的视频,所有内容都是倒着的。用FFmpeg的旋转滤镜可以轻松修正:
顺时针旋转90度:
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4逆时针旋转90度:
ffmpeg -i input.mp4 -vf "transpose=2" output.mp4水平翻转:
ffmpeg -i input.mp4 -vf hflip output.mp4垂直翻转:
ffmpeg -i input.mp4 -vf vflip output.mp4我建议先用ffprobe检查视频的元数据,有些设备会在metadata中记录旋转信息,这时只需要重新封装而不需要实际转码:
ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=0 output.mp44. 添加水印:保护版权内容
给视频添加水印是保护版权的有效方法。我常用的水印命令是这样的:
添加图片水印:
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=10:10" output.mp4这个命令将logo.png放在视频左上角(10,10)的位置。
添加文字水印:
ffmpeg -i input.mp4 -vf "drawtext=text='MyWatermark':x=10:y=H-th-10:fontsize=24:fontcolor=white" output.mp4这个命令在视频右下角添加白色文字水印。H-th-10的计算确保了水印距离底部10像素。
动态水印也很实用:
ffmpeg -i input.mp4 -vf "drawtext=text='%{localtime}':x=w-tw-10:y=h-th-10:fontsize=24:fontcolor=white" output.mp4这个命令会在视频右下角显示当前时间,适合监控视频处理。
5. 音频降噪:提升语音清晰度
处理录音时,背景噪音是个大问题。FFmpeg的降噪滤镜能显著改善语音质量:
基本降噪命令:
ffmpeg -i input.wav -af "afftdn=nf=-20" output.wavnf=-20参数控制降噪强度,数值越小降噪越强。我一般从-15开始尝试。
针对持续的背景噪音:
ffmpeg -i input.wav -af "arnndn=m=model.rnnn" output.wav这个命令使用预训练的RNN模型进行降噪,效果非常好,但处理速度较慢。
6. 音频混音:制作专业音效
混音是音频处理的进阶技巧。去年我制作教学视频时,需要将解说和背景音乐混合:
简单混音:
ffmpeg -i voice.wav -i bgm.wav -filter_complex "amix=inputs=2:duration=longest" output.wav这个命令将两个音频文件混合,以较长的音频为最终时长。
控制音量平衡:
ffmpeg -i voice.wav -i bgm.wav -filter_complex "[0:a]volume=1.5[a1];[1:a]volume=0.7[a2];[a1][a2]amix=inputs=2:duration=longest" output.wav这里将人声音量提高50%,背景音乐降低30%,确保语音清晰。
7. 格式转换:兼容各种设备
不同设备支持的音视频格式各异。FFmpeg的格式转换功能非常强大:
视频格式转换:
ffmpeg -i input.avi -c:v libx264 -crf 23 -preset fast output.mp4这个命令将AVI转换为MP4,使用H.264编码,CRF值控制质量(18-28是常用范围)。
音频格式转换:
ffmpeg -i input.wav -c:a libmp3lame -q:a 2 output.mp3将WAV转为MP3,质量级别2(0-9,数值越小质量越高)。
批量转换脚本:
for f in *.wav; do ffmpeg -i "$f" -c:a libopus "${f%.*}.opus"; done这个命令将目录下所有WAV文件转换为Opus格式,适合处理大量文件。