ffmpeg命令是在windows端使用的,使用前,需要先下载对应的 exe文件
1.准备环境
访问FFmpeg官网的下载地址(https://www.gyan.dev/ffmpeg/builds/)下载对应的压缩包,解压后即可使用
2.使用
ffmpeg.exe的使用
ffmpeg命令可以转化各种格式的多媒体文件。
按照功能分类可以分为如下常用几种类型
- 信息查询部分
- 通用参数
- 视频参数
- 音频参数
可以通过ffmpeg --help
查看支持的上述命令
查询参数的部分如下:
-formats show available formats -muxers show available muxers -demuxers show available demuxers -devices show available devices -codecs show available codecs -decoders show available decoders -encoders show available encoders -bsfs show available bit stream filters -protocols show available protocols -filters show available filters -pix_fmts show available pixel formats -layouts show standard channel layouts -sample_fmts show available audio sample formats -colors show available color names
通用参数
-i filename 指定输入文件名
-y 覆盖同名的输出文件
-f fmt 指定音/视频的格式
-t duration 指定输出音/视频的时长,单位秒
-to time_stop 指定输出音/视频结束点,单位秒
-fs limit_size 限定输出文件大小
-ss time_off 指定输出音/视频的开始时间点,单位秒,也支持hh:mm:ss的格式
音频参数
-aq quality 指定输出音频的质量
-ar rate 指定音频采样率 (单位 Hz)
-ac channels 指定音频声道数量
-an 输出的文件不带音频
-acodec codec 指定输出的音频编码类型('copy' to copy stream)
-vol volume 指定音频的音量 (256=normal)
-af filter_graph 指定音效
-ab 指定输出音频的比特率
视频参数
-r rate 指定帧率 (单位Hz )
-s size 指定分辨率 (WxH)
-aspect aspect 指定宽高比(4:3, 16:9 or 1.3333, 1.7777)
-vn 指定输出文件不包含视频
-vcodec codec 指定输出视频的编码格式 ('copy' to copy stream)
-vf filter_graph 指定视频滤镜
-ab bitrate 指定音频比特率 (please use -b:a)
-b bitrate 指定比特率,若指定该值为平均比特率 (please use -b:v)
-vb 指定视频比特率
最简单的命令
ffmpeg -i input.avi -b:v 640k output.ts
该命令将input.avi文件转换为output.ts文件,并将output.ts文件视频的码率设置为640kbps。
所有的参数都是以键值对的形式指定的。例如输入文件参数是“-i”,而参数值是文件路径;输出视频码率参数是“-b:v”,而参数值是视频的码率值。但是注意位于最后面的输出文件路径前面不包含参数名称。
常用场景
1. flac格式 --》转成mp3
ffmpeg -i in.flac -acodec libmp3lame -ar 44100 -ab 320k -ac 2 out.mp3
输入的音频文件为in.flac,指定编码格式为libmp3lame(即mp3的编码库),音频采样率44100,比特率为320kb/s,声道数量为2,输出文件为out.mp3
2. 转换视频格式
ffmpeg -i in.mov -s 1920x1080 -pix_fmt yuv420p -vcodec libx264 -preset medium -profile:v high -level:v 4.1 -crf 23 -acodec aac -ar 44100 -ac 2 -b:a 128k out.mp4
码率控制模式: -qp -crf -b
-qp(Constant Quantizer)恒定量化器模式
-crf(Constant Rate Factor) 恒定速率因子模式
-b (bitrate) 固定目标码率模式
VBR(Variable Bit Rate)动态比特率 简单的给少些码率、负责的多放些码率
CBR(Constant Bit Rate)恒定比特率 在vbr的基础上改进 码率固定在一个值上
3. 提取视频
ffmpeg -i in.mp4 -vcodec copy -an v.mp4
还可以从视频文件中直接提取出裸h264数据
ffmpeg -i in.mp4 -an -vcodec copy -bsf:v h264_mp4toannexb out.h264
其中mp4toannexb是一种bitmapfilter类型
4. 提取音频
ffmpeg -i in.mp4 -acodec copy -vn a.m4a
如果多个音频流 通过 -map 0:3来分别提取
eg
Stream #0:2[0x81]:Audio:ac3,48khz,5.1,s16,384kb/s
Stream #0:3[0x82]:Audio:ac3,48khz,5.1,s16,384kb/s
Stream #0:4[0x80]:Audio:ac3,48khz,5.1,s16,384kb/s
再合并回去
ffmpeg -i a.m4a -i v.mp4 -c copy out.mp4
5. 截取
ffmpeg -i in.mp3 -ss 00:01:00 -to 00:10:00 -acodec copy out.mp3
或者
ffmpeg -i in.mp3 -ss 00:01:00 -t 10 -acodec copy out.mp3
把-ss放在-i之前,ffmpeg会启用关键帧技术,加速它的操作,但这样提取出来的时期,在播放时显示的起止不一定准确,可以通过 -copyts 拷贝时间戳,保证时间的正确性
ffmpeg -i in.mp3 -ss 00:01:00 -to 00:10:00 -acodec copy out.mp3
ffmpeg -ss 00:01:00 -i in.mp3 -to 00:10:00 -acodec copy out.mp3
ffmpeg -ss 00:01:00 -i in.mp3 -to 00:10:00 -acodec copy-copyts out.mp3
还可以截取多个文件
ffmpeg -i video.mp4 -t 00:00:50 -c copy small-1.mp4 -ss 00:00:50 -t 10 -codec copy small-2.mp4 -y
6. 把多个视频连接成一个视频
多个视频的宽高、码率一致
ffmpeg -i "concat:01.mp4|02.mp4|03.mp4" -c copy out.mp4
如果参数不一致推荐使用Avidemux这款软件处理
7. 截图
ffmpeg -i in.mp4 -ss 5 -vframes 1 img.jpg
上述指令是指 在第五秒截图
还可以采用更加方便的方式截一系列的图
ffmpeg -i in.mp4 -r 0.25 frames_%04d.png
上述命令指定每4秒截取一帧画面生成一张图片,
8. 水印
ffmpeg -i in.mp4 -i logo.png -filter_complex "overlay=20:20" out.mp4
通过两个-i指定两个输入源,一个是视频,一个是水印,通过filter_complex指定水印的位置
9. 动图
ffmpeg -i in.mp4 -ss 7.5 -to 8.5 -s 640x320 -r 15 out.gif
指定分辨率为640x320,帧率为15
或者可以通过如下命令指定宽高
ffmpeg -i in.mp4 -vf scale=100:-1 -t 5 -r 10 out.gif
宽高比不变,宽度指定为100
还可以把一组图片生成一张动图
ffmpeg -i frames_%04d.png -r 5 out.gif
10.淡入淡出效果
给一个音频做一个淡入的效果,可以通过如下命令
ffmpeg -i music.mp3 -filter_complex afade=t=in:ss=0:d=5 music11.mp3
前5秒做个淡入效果
淡出效果可以采用如下命令
ffmpeg -i music.mp3 -filter_complex afade=t=out:st=200:d=5 music22.mp3
从200秒开始做5秒的淡出效果
11. 倍速
两倍速处理音频
ffmpeg -i music.mp3 -filter_complex atempo=2 out1.mp3 -y
0.5倍速处理音频
ffmpeg -i music.mp3 -filter_complex atempo=0.5 out1.mp3 -y
12.混音
将两个声音进行合并
ffmpeg -i music.mp3 -i bg.mp3 -filter_complex amix=inputs=2:duration=shortest out.mp3
ffplay.exe的使用
• 功能
ffplay.exe用于音视频的播放。
最简单的命令
ffplay video.mp4播放视频 ffplay video.mp4 -loop 3 循环播放三次 设置音视频同步方式 音视频常用的方案有三种 以音频为基准(默认)、以视频为基准、以外部时钟为基准。 ffplay video.mp4 -sync audio ffplay video.mp4 -sync video ffplay video.mp4 -sync ext
该命令将播放当前文件夹下的input.avi文件。
• 命令格式
ffplay {输入文件路径}
ffplay.exe的参数格式和ffmpeg.exe是类似的。所有的参数都是以键值对的形式指定的(由于不包含输出文件,所以只能指定输入参数)。注意位于最后面的输入文件路径前面不包含参数名称。
快捷键
ffprobe的使用
ffprobe主要用于查看音视频文件信息,它与mediaInfo的区别就是:ffprobe可以查看直播流的音视频数据信息。
其中ffprobe常用于查看 fomat、frames、packets
常用命令
第一种:查看fomat ffprobe -show_format input.mp4 input.mp4可换为其它视音频文件或者直播流地址。 第二种:查看frames ffprobe -show_frames input.mp4 input.mp4可换为其它视音频文件或者直播流地址。 第三种:查看packets ffprobe -show_packets input.mp4 input.mp4可换为其它视音频文件或者直播流地址。 提示:在查看直播流时或者音视频文件数据太多,记得ctrl+C可以停止打印
ffprobe C:\Users\sdt16354\Desktop\maybe.mp3