FFmpeg Cheatsheet - Media Processing
音视频处理必备的 FFmpeg 命令都在这里了,从转码到剪辑,按场景分类整理,直接复制改参数。
Back to SysOps格式转换 6
ffmpeg -i input.mp4 output.avi转换容器格式,自动选择编码器
ffmpeg -i input.mp4 -c:v libx264 output.mp4指定 H.264 编码重新封装
ffmpeg -i input.mp4 -c:v libx265 output.mp4转 H.265 编码(体积更小)
ffmpeg -i input.wav -c:a libmp3lame -q:a 2 output.mp3WAV 转 MP3,-q:a 2 约 190kbps
ffmpeg -i input.mp4 -c:v copy -c:a copy output.mkv无损复制流到 MKV 容器,速度极快
ffmpeg -i input.gif -movflags faststart output.mp4GIF 转 MP4,faststart 适合网页
裁剪与截取 5
ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:00 -c copy clip.mp4截取 1:00 到 2:00 片段,-c copy 快速模式
ffmpeg -ss 10 -i input.mp4 -t 30 clip.mp4从第 10 秒开始截取 30 秒(-ss 在 -i 前)
ffmpeg -i input.mp4 -vf "crop=640:480:0:0" output.mp4裁剪画面为 640x480,起始坐标 (0,0)
ffmpeg -i input.mp4 -vf "crop=iw/2:ih:0:0" output.mp4裁剪左半边画面
ffmpeg -i input.mp4 -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:-1:-1:black" output.mp4等比缩放并填充黑边到 1280x720
提取与分离 6
ffmpeg -i input.mp4 -vn audio.aac提取音轨,-vn 去掉视频流
ffmpeg -i input.mp4 -an video_only.mp4去掉音轨保留视频,-an 去掉音频
ffmpeg -i input.mp4 -vf "select=eq(pict_type\,I)" -vsync vfr thumb_%03d.png提取关键帧为图片
ffmpeg -i input.mp4 -r 1 frame_%03d.png每秒提取一张帧图片
ffmpeg -i input.mp4 -map 0:s:0 subtitle.srt提取字幕轨为 SRT 文件
ffmpeg -i "image_%03d.png" -r 30 video.mp4图片序列合成视频
压缩与画质 6
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4CRF 压缩,值越大画质越低(18-28 常用)
ffmpeg -i input.mp4 -c:v libx264 -crf 18 -preset slow output.mp4高质量压缩,preset slow 编码更慢但文件更小
ffmpeg -i input.mp4 -c:v libx264 -b:v 1M output.mp4限制视频码率为 1Mbps
ffmpeg -i input.mp4 -vf "scale=1280:-1" output.mp4等比缩放到宽度 1280px
ffmpeg -i input.mp4 -c:a aac -b:a 128k output.mp4音频转 AAC 并指定 128kbps
ffmpeg -i input.mp4 -c:v libx264 -preset fast -tune zerolatency output.mp4低延迟编码,适合直播推流
水印与字幕 5
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=10:10" output.mp4左上角添加图片水印
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=W-w-10:H-h-10" output.mp4右下角添加水印
ffmpeg -i input.mp4 -vf "subtitles=sub.srt" output.mp4烧录 SRT 字幕到视频
ffmpeg -i input.mp4 -vf "drawtext=text=Hello:fontcolor=white:fontsize=24:x=10:y=10" output.mp4添加文字水印
ffmpeg -i input.mp4 -i sub.srt -c copy -c:s mov_text output.mp4软字幕(可开关)嵌入 MP4
音频处理 5
ffmpeg -i input.mp4 -c:a libmp3lame -b:a 192k output.mp3转 MP3 并指定 192kbps 码率
ffmpeg -i input.mp3 -af "volume=2.0" output.mp3音量放大 2 倍
ffmpeg -i input.mp4 -af "atempo=2.0" output.mp4音频 2 倍速播放(不改音调)
ffmpeg -i input.mp3 -af "silenceremove=stop_periods=1:stop_duration=1:stop_threshold=-50dB" output.mp3移除静音片段
ffmpeg -i "concat:a.mp3|b.mp3" -c copy output.mp3拼接多个音频文件
录屏与流媒体 6
ffmpeg -f avfoundation -i "0:" -r 30 -t 60 screen.mp4macOS 录屏 60 秒(avfoundation)
ffmpeg -f x11grab -i :0.0 -r 25 screen.mp4Linux 录屏(X11)
ffmpeg -f v4l2 -i /dev/video0 -t 10 webcam.mp4从摄像头录制 10 秒
ffmpeg -re -i input.mp4 -c copy -f flv rtmp://live.example.com/liveRTMP 推流直播
ffmpeg -i http://example.com/stream.m3u8 -c copy output.mp4下载 HLS 直播流为本地文件
ffmpeg -i input.mp4 -hls_time 10 -hls_list_size 0 output.m3u8将视频切片为 HLS 播放列表
💡 Tips
- -c copy 模式只复制流不重新编码,速度极快但无法做滤镜处理。
- CRF 值推荐 18-28,18 接近无损,23 是默认值,28 文件较小。
- -ss 放在 -i 前面是快速定位但不精确,放在 -i 后面是精确但较慢。
- scale 滤镜中 -1 表示等比缩放,如 scale=1280:-1 宽度 1280 高度自动计算。
- -preset 越慢压缩率越高:ultrafast < superfast < veryfast < faster < fast < medium < slow < slower < veryslow。
- 推流直播用 -re 参数按实际帧率读取,避免推流过快导致服务器拒绝。