【FFmpeg】ffmpeg 命令行参数 ⑨ ( 使用 ffmpeg 进行音视频流处理 | 视频裁剪 / 缩放 / 旋转 / 水印 | 音频降噪 / 混音 / 格式转换 )
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 scale1280:720 output.mp4这个命令将视频缩放到720p。如果想保持原始宽高比可以只指定宽度ffmpeg -i input.mp4 -vf scale640:-1 output.mp4-1表示自动计算高度。我在处理手机竖屏视频时常用这个参数。对于专业需求还可以指定缩放算法ffmpeg -i input.mp4 -vf scale1920:1080:flagslanczos output.mp4Lanczos算法能提供更高质量的缩放效果适合对画质要求严格的场景。3. 视频旋转修正拍摄方向问题手机拍摄的视频经常出现方向错误的问题。上周我收到一个客户发来的视频所有内容都是倒着的。用FFmpeg的旋转滤镜可以轻松修正顺时针旋转90度ffmpeg -i input.mp4 -vf transpose1 output.mp4逆时针旋转90度ffmpeg -i input.mp4 -vf transpose2 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 rotate0 output.mp44. 添加水印保护版权内容给视频添加水印是保护版权的有效方法。我常用的水印命令是这样的添加图片水印ffmpeg -i input.mp4 -i logo.png -filter_complex overlay10:10 output.mp4这个命令将logo.png放在视频左上角(10,10)的位置。添加文字水印ffmpeg -i input.mp4 -vf drawtexttextMyWatermark:x10:yH-th-10:fontsize24:fontcolorwhite output.mp4这个命令在视频右下角添加白色文字水印。H-th-10的计算确保了水印距离底部10像素。动态水印也很实用ffmpeg -i input.mp4 -vf drawtexttext%{localtime}:xw-tw-10:yh-th-10:fontsize24:fontcolorwhite output.mp4这个命令会在视频右下角显示当前时间适合监控视频处理。5. 音频降噪提升语音清晰度处理录音时背景噪音是个大问题。FFmpeg的降噪滤镜能显著改善语音质量基本降噪命令ffmpeg -i input.wav -af afftdnnf-20 output.wavnf-20参数控制降噪强度数值越小降噪越强。我一般从-15开始尝试。针对持续的背景噪音ffmpeg -i input.wav -af arnndnmmodel.rnnn output.wav这个命令使用预训练的RNN模型进行降噪效果非常好但处理速度较慢。6. 音频混音制作专业音效混音是音频处理的进阶技巧。去年我制作教学视频时需要将解说和背景音乐混合简单混音ffmpeg -i voice.wav -i bgm.wav -filter_complex amixinputs2:durationlongest output.wav这个命令将两个音频文件混合以较长的音频为最终时长。控制音量平衡ffmpeg -i voice.wav -i bgm.wav -filter_complex [0:a]volume1.5[a1];[1:a]volume0.7[a2];[a1][a2]amixinputs2:durationlongest 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格式适合处理大量文件。