ffmpeg - 基本命令
...大约 4 分钟
FFmpeg是一个免费、开源的多媒体软件框架,也是几乎所有音视频多媒体录制转换工具的核心
本文从网络摘录了常用的一些 ffmpeg 命令,便于查找使用
推荐教程
ffmpeg
视频 = 容器(container) ,包含 视频(video),音频(audio),字幕 等
文件的后缀名反映了它的容器格式,比如 mp4
、avi
、mkv
、mov
、flv
等。
视频和音频需要通过编码器以指定编码格式进行编码,比如 h264
、aac
、mp3
等。
查看支持的格式
- 查看支持的编码格式
ffmpeg -codecs
- 查看支持的编码器
ffmpeg -encodecs
,可在-vcodec
后面接的参数 - 查看支持的解码器
ffmpeg -decoders
- 查看支持的封装格式
ffmpeg -formats
,可在-f
后面接的参数式 - 查看支持的滤镜
ffmpeg -filters
,可在-vf
后面接的参数
基本命令
格式:
ffmpeg [全局参数] [输入文件参数] -i [输入文件] [输出文件参数] [输出文件]
全局参数
选项 | 描述 |
---|---|
-y | 无需确认,直接覆盖输出文件 |
-hide_banner | 隐藏版本信息(隐藏冗余输出) |
-loglevel | 设置日志级别,默认是 info ,可选 quiet 、panic 、fatal 、error 、warning 、info 、verbose 、debug |
-hwaccel | 指定硬件加速 |
-benchmark | 显示性能测试信息 |
-stats | 显示统计信息 |
选项 | 描述 |
---|---|
-hwaccels | 显示支持的硬件加速 |
-version | 显示版本信息 |
-formats | 显示支持的格式 |
-codecs | 显示支持的编码器 |
-decoders | 显示支持的解码器 |
-devices | 显示支持的设备 |
-protocols | 显示支持的协议 |
-filters | 显示支持的滤镜 |
-pix_fmts | 显示支持的像素格式 |
-sample_fmts | 显示支持的采样格式 |
-layouts | 显示支持的布局 |
-colors | 显示支持的颜色 |
-sources | 显示支持的输入源 |
-sinks | 显示支持的输出源 |
输入文件参数
选项 | 描述 |
---|---|
-f | 指定输入文件格式 |
-ss | 从指定时间开始播放 |
-to | 从指定时间结束播放 |
-t | 指定播放时长 |
输出文件参数
选项 | 描述 |
---|---|
-c | 指定编码器 |
-c copy | 复制输入流,不重新编码(速度快) |
-c:v | 指定视频编码器 |
-c:a | 指定音频编码器 |
-b | 指定比特率 |
-minrate ???k -maxrate ???k -bufsize ???k | 指定最小码率,最大码率,缓冲区大小 |
-r | 指定帧率 |
-vf scale=a:b | 指定分辨率为 a xb (-1 表示自动计算保持原有比例;-2 表示保持原有比例并只接受偶数) |
-aspect a:b | 指定宽高比为 a xb ,如 16:9 |
-vn | 禁止视频输出 |
-an | 禁止音频输出 |
-sn | 禁止字幕输出 |
-dn | 禁止数据输出 |
选项 | 描述 |
---|---|
-metadata | 设置元数据 |
-attach | 添加附件 |
-disposition | 设置输出流的默认 Disposition |
-map | 指定输入流 |
-map_metadata | 指定元数据流 |
-map_chapters | 指定章节流 |
-map_chapters | 指定字幕流 |
-map_metadata | 指定元数据流 |
-map_chapters | 指定章节流 |
-map_chapters | 指定字幕流 |
-metadata | 设置元数据 |
-attach | 添加附件 |
-disposition | 设置输出流的默认 Disposition |
-f | 指定输出文件格式 |
示例
查看文件信息
ffmpeg -i video.mp4
转换容器格式
只改变容器格式,不改变编码格式
ffmpeg -i video.mp4 -c copy video.avi
转换编码格式
ffmpeg -i video.mp4 -c:v libx264 -c:a aac output.mp4
转换分辨率
ffmpeg -i video.mp4 -vf scale=640:360 output.mp4
提取音频
ffmpeg -i video.mp4 -vn -c:a copy audio.m4a
添加音轨
ffmpeg -i video.mp4 -i audio.m4a -c copy -map 0:v -map 1:a output.mp4
裁剪视频
ffmpeg -i video.mp4 -ss 00:00:00 -t 00:00:10 output.mp4 #输出为视频
ffmpeg -i video.mp4 -ss 00:00:00 -t 00:00:10 output_%3d.jpg #输出为图片序列
视频截图
ffmpeg -i video.mp4 -ss 00:00:00 -vframes 1 output.jpg
帧序列合成视频或 GIF
ffmpeg -r 30 -f image2 -i %04d.png -crf 15 output.mp4
- 其中,
-r 30
指定输出视频帧率为 30fps %04d
表示命名顺序0001
,0002
, …%03d
表示命名顺序001
,002
, …%d
表示命名顺序1
,2
, …,10
, …-crf 15
表示清晰度为 15,值越小越清晰(推荐值 18-25)
生成透明 GIF
ffmpeg -i input.mp4 -filter_complex "[0:v]split[a][b]; [a]palettegen=transparency_color=ffffff[p]; [b][p]paletteuse" output.gif
-filter_complex
参数用于指定多个过滤器,多个过滤器之间用;
分隔。[0:v]
表示选择视频流 0split[a][b]
表示分离视频流为两个流,分别命名为a
和b
[a]palettegen=transparency_color=ffffff[p]
表示生成调色板,透明色为白色,并命名为p
[b][p]paletteuse
表示使用调色板p
ffplay
播放视频
播放视频
ffplay video.mp4
播放完自动退出
ffplay -autoexit video.mp4
Powered by Waline v3.3.2