Skip to content

ffmpeg

ffmpeg 是处理音视频转换、编码、解码和加工的核心工具。

概要

ffmpeg [全局选项] {[输入文件选项] -i 输入URL} ... {[输出文件选项] 输出URL} ...

常用选项

选项描述
-i url输入文件 URL
-c[:stream] codec指定流的编码器(copy、libx264、aac 等)
-c:v视频编码器简写
-c:a音频编码器简写
-c:s字幕编码器简写
-codecs列出所有编码器
-encoders列出所有编码器
-decoders列出所有解码器
-filters列出所有滤镜
-formats列出所有格式
-bsf[:stream] bitstream_filter对流应用比特流过滤器
-map手动流映射
-t duration限制转码/捕获的音视频时长
-ss position跳转至指定位置(-i 之前 = 快速,-i 之后 = 精确)
-to position在指定位置停止写入
-f fmt强制指定输入/输出格式
-y直接覆盖输出文件
-n如果存在则不覆盖
-loglevel level设置日志级别
-hide_banner隐藏启动横幅
-stats打印编码进度

编码器复制模式

使用 -c copy 直接复制流,不重新编码(最快、无损):

bash
# 复制所有流(最快)
ffmpeg -i input.mkv -c copy output.mp4

# 复制视频,重新编码音频
ffmpeg -i input.mkv -c:v copy -c:a aac output.mp4

# 复制音频,重新编码视频
ffmpeg -i input.mkv -c:v libx264 -preset fast -crf 22 -c:a copy output.mp4

编码质量

CRF(恒定质量因子)—— 推荐

bash
# CRF 范围:0(无损)到 51(最差)
# 18-23:视觉无损 / 高质量
# 23-28:流媒体适用
# 28-35:文件更小,可见失真
ffmpeg -i input.mp4 -c:v libx264 -crf 22 output.mp4

Preset(编码速度)

Preset速度适用场景
ultrafast最快直播、实时
superfast
veryfast
faster
fast高质量编码
medium默认
slow
slower最佳压缩
veryslow最慢归档/母版
bash
ffmpeg -i input.mp4 -c:v libx264 -preset veryslow -crf 18 output.mp4

硬件加速

bash
# NVIDIA NVENC
ffmpeg -i input.mp4 -c:v h264_nvenc -preset p7 -cq 23 output.mp4

# Intel VAAPI (Linux)
ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -i input.mp4 \
  -c:v h264_vaapi output.mp4

# macOS VideoToolbox
ffmpeg -i input.mp4 -c:v h264_videotoolbox -b:v 6M output.mp4

输入/输出选项

bash
# 限制时长
ffmpeg -i input.mp4 -t 60 output.mp4

# 限制输出文件大小
ffmpeg -i input.mp4 -fs 10M output.mp4

# 跳转到指定位置(放在 -i 前 = 快速跳转)
ffmpeg -ss 01:30 -i input.mp4 -t 30 -c copy output.mp4

# 多输入
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac output.mp4

# 跳过某些流
ffmpeg -i input.mkv -map 0:v -map 0:a:1 -c copy output.mp4

Released under the MIT License.