一 基本概念
1 音/视频流
在音视频领域,我们把一路音/视频称为一路流。
2 容器
我们一般把MP4、MOV、FLV等文件格式称为容器。在这些文件格式中,可以存放多路音视频文件。比如MP4,可以存放一路视频流,多路音频流,多路字幕流。
3 channel
channel是音频中的概念,称为声道。在一路音频流中,可以有单声道,双声道。
二 命令
1 命令基本格式
ffmpeg [global_options] {[input_file_options] -i input_file} ... {[output_file_options] output_file}
ffmpeg通过 -i 读取对应的文件
2 基本信息查询命令
参数 | 说明 |
---|---|
-version | 查看版本号 |
-devices | 显示可用的设备 |
-decoders | 显示可用的解码器 |
-encoders | 显示可用的编码器 |
-pix_fmts | 显示可用的像素格式 |
-sample_fmts | 显示可用的采样格式 |
-colors | 显示识别的颜色 |
3 参数
参数 | 说明 |
---|---|
-f fmt(输入/输入格式) | 强制输入/输出的格式,通常是自动检测,一般用不上 |
-I url | 输入文件的文件路径 |
-y | 直接覆盖文件而不询问 |
-n | 不覆盖文件,若文件已存在则直接退出 |
-c [编码器] | 指定编码器对输入文件重新编码(如果使用copy则指示流不重新编码) |
-t [duration] | 数据读取的持续时间 |
-ss [HH:mm:ss] | 开始输出的位置(视频截取时代表第几秒开始截取) |
-to [HH:mm:ss] | 结束输出的位置(视频截取时代表第几秒结束截取) |
-r [fps] | 帧率,视频处理时设置输出视频的帧率,如 -r 20,表示20fps |
-s [分辨率] | 分辨率,视频处理时设置输出视频的分辨率,如 -s 1080x1920,表示分辨率为1080x1920 |
-aspect [w:h] | 宽高比,视频处理时设置输出视频的宽高比,如 -aspect 4:3,表示视频宽高比为4:3 |
-fs [xx] | 大小设置,视频处理时设置视频的最大值,如 -fs 10M,表示最大10M |
-preset | 设置编码速度,有ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo从快到慢10个选项 |
-vf | 视频过滤器 |
-af | 音频过滤器 |
三 基本使用
1 查看文件详情
1.1 查看详情
ffmpeg -i /文件路径
或
ffprobe /文件路径
1.2 查看文件包内容
ffprobe -show_packets /文件路径
2 视频、图片查看
ffplay /文件路径
3 音频转码
ffmpeg -i /原始音频文件路径 /输出的音频文件路径
-ar:设置采样率
-af ‘volume=2’:设置声音为原来的2倍
-an:禁用音频(去除音频流)
-vol:设置音量,默认256
4 从视频中提取音频
ffmpeg -i /视频文件地址 /音频文件地址
-t:输出的音频时长
-to:输出到指定位置
-ss:跳转到指定位置开始输出
5 从视频总提取图片
5.1 提取多张图片
ffmpeg -i /视频地址 -r 1 /图片输出地址%04d.png
-r:帧率,1代表每秒钟输出一张图片,10代表每秒钟输出10张图片
5.2 提取单张图片
ffmpeg -i /视频地址 -ss [duration] /图片输出地址.png
6 视频转gif
ffmpeg -i /视频地址 /gif输出地址.gif
-ss:从指定开始时间开始转换(格式:HH:mm:ss)
-to:指定转换的结束时间(格式:HH:mm:ss),可以跟-ss配合使用
-t:gif的时长,可以跟-ss配合使用,优先级高于-to
-s:设置分辨率,gif的宽高
-r:设置帧率
7 视频格式转换与压缩
7.1 普通压缩
ffmpeg -i /原始视频地址 /输出视频地址
-fs:指定大小
-r:设置输出视频的帧率
-s:指定分辨率,需要可以被2整除,否则会报错
-ss:从指定开始时间开始转换(格式:HH:mm:ss)
-to:指定转换的结束时间(格式:HH:mm:ss),可以跟-ss配合使用
-t:输出视频的时长
-c copy:使用原视频的编码格式输出视频
-vcodec:设置输出视频的解码器,作用同-c:v
-acodec:设置输出音频的解码器,作用同-c:a
-b:v:指定输出视频的视频码率
-a:v:指定输出视频的音频码率
-preset:设置编码速度,
7.2 抽帧压缩
ffmpeg -i /原始视频路径 -r 20 -vcodec libx264 -preset:v fast -crf 36 -y /输出视频地址.mp4
7.3 缩小压缩
fmpeg -i /原始视频路径 -vf scale=iw/2:-1 /输出视频地址
-vf scale:指定使用简单过滤器
iw/2:指定按整形取视频的宽度的一半
-1:表示高度随宽度一起变化