banner
约 1,500 字
5 分钟

FFmpeg 常用命令速查

无标签

摘要

FFmpeg 是一个开源、免费媒体处理工具,能转换、剪辑、合并、压缩以及流式传输几乎所有格式的音频、视频和图片。

基础入门#

FFmpeg 没有UI界面,需要通过命令行来操作,命令看起来复杂,其实只要先记住一个固定模板:

Shell
ffmpeg [全局选项] [输入选项] -i 输入文件 [输出选项] 输出文件

示例:

Shell
ffmpeg -y -ss 10 -i input.mp4 -c copy output.mp4

ffmpeg          # 命令
-y              # 全局选项:自动覆盖输出文件
-ss 10          # 输入选项:从输入文件第 10 秒开始读
-i input.mp4    # 输入文件
-c copy         # 输出选项:输出时直接复制流,不重编码
output.mp4      # 输出文件

这个例子做的事,就是把一个名叫 input.mp4 的视频,从第10秒开始复制,直到视频结束,复制成一个名叫 output.mp4 的视频。由于没有重新编码,所以速度极快,很适合修剪片头片尾。

命令选项#

FFmpeg 的参数组合几乎无穷无尽,本文只记录了常用的命令选项,可满足大部分日常使用场景。

1. 全局选项#

参数

说明

-y

自动覆盖输出文件

2. 输入选项#

参数

说明

-ss

从指定时间开始读取,格式如 10 代表10秒开始, 00:01:00 代表从1分钟开始。

-t 30

读取指定时长,从当前位置往后读取 30 秒,格式同上

-to 30

从 0 秒开始,读到第 30 秒,格式同上

3. 输出选项#

参数

说明

-c:v libx264

指定视频编码器

-c:a aac

指定音频编码器

-c copy

不重编码,直接复制流

-crf 23

视频质量,越小越清晰,取值范围:0-51

-r 30

输出帧率,表示输出文件要每秒 30 帧

-b:v 2000k

控制视频输出码率,2000k约 2 Mbps,也可以直接写2M

-vf scale=1920:1080

调整视频,scale是缩放。-vf: 还可以裁剪、加水印等

-af volume=1.5

调整音频,volume音量从1开始放大到1.5倍,还可以淡入淡出,变速等

-an

去掉音频

-vn

去掉视频

常用命令速查#

格式转换#

Shell
ffmpeg -y -i input.mov output.mp4

把 mov 格式转换为 mp4 ,其他格式同理

视频压缩#

Shell
ffmpeg -y -i input.mp4 -c:v libx264 -crf 28 output.mp4

用 H.264 压缩视频,-crf 23 是默认值,适合日常使用。 -crf 18 接近视觉无损

Shell
ffmpeg -y -i input.mp4 -c:v libx264 -crf 18 -preset slow output.mp4

还可以加入 -preset 参数。编码越快,文件越大,编码越慢,文件越小。

从快到慢:ultrafast → superfast → veryfast → faster → fast → medium → slow → slower → veryslow → placebo

修改分辨率(视频/图片都支持)#

Shell
ffmpeg -y -i input.mp4 -vf scale=1280:-1 output.mp4

把宽度改成 1280,高度会自动按照比例调整。反过来 -1:1280 也是同理

调整码率#

Shell
ffmpeg -y -i input.mp4 -b:v 2M -b:a 128k output.mp4

把视频码率设为 2 Mbps,音频码率设为 128 kbps。调整码率也是一个压缩视频的有效方法。

截取视频片段#

Shell
ffmpeg -y -ss 00:00:10 -to 00:00:30 -i input.mp4 -c copy output.mp4

从第 10 秒截取到第 30 秒,不重编码,速度很快。

提取音频#

Shell
ffmpeg -y -i input.mp4 -vn -c:a copy output.aac

从视频里提取音频,copy方式导出,不丢失质量。

去掉音频#

Shell
ffmpeg -y -i input.mp4 -an output.mp4

保留视频,去掉音频。

视频截图#

Shell
ffmpeg -y -i input.mp4 -ss 00:01:30 -frames:v 1 cover.jpg

在 1 分 30 秒处截取一张图片,适合做封面。

合并视频#

需要先定义一个文本文件 list.txt 内容示例:

纯文本
file 'a.mp4'
file 'b.mp4'
file 'c.mp4'

视频数量不多可以手动创建,也可以通过脚本生成

Shell
# Windows CMD 自动生成
(for %f in (*.mp4) do @echo file '%f') > list.txt

# Windows PowerShell 自动生成
Get-ChildItem *.mp4 | ForEach-Object { "file '$($_.Name)'" } | Out-File list.txt -Encoding UTF8

# macOS / Linux 自动生成
for f in *.mp4; do echo "file '$f'"; done > list.txt

生成后执行合并:

Shell
ffmpeg -y -f concat -safe 0 -i list.txt -c copy output.mp4

不太常见但挺实用的功能#

直接从视频里提取封面#

很多视频文件内嵌了封面图(比如音乐 MV),可以用:

Shell
ffmpeg -i input.mp4 -an -vn -c:v copy cover.jpg

静音检测可以自动剪掉空白段#

Shell
ffmpeg -i input.mp4 -af silenceremove=stop_periods=-1:stop_duration=0.8:stop_threshold=-35dB output.mp4

参数含义:

  • stop_periods=-1:处理整个文件(包括中间和结尾的静音)。

  • stop_duration=0.8:静音持续超过 0.8 秒才删。

  • stop_threshold=-35dB:低于这个音量算静音。

这条命令可以自动剪掉视频里的沉默部分, 直接输出一个剪掉静音的新文件,做口播剪辑很省事。

视频格式科普#

MP4 那么通用,其他格式存在的意义是什么?#

容器

能装什么

适合场景

MP4

视频、音频、普通字幕

日常分享、上传平台

MKV

多音轨、多字幕、章节、FLAC

高清电影收藏,不同国家语言字幕都可以塞进去

MOV

专业编码、透明通道、编辑信息

苹果剪辑工作流,透明背景的视频你肯定没见过

WebM

VP9/AV1、Opus

和webp是兄弟,又小又清晰,浏览器上好用,本地一般不兼容

TS

切片、抗传输错误

直播、HLS、在线看剧就是一集分成几百个这种格式的片段

撒花

END