简介
是一个非常快的视频和音频转换器,它可以抓取音频/视频源。它还可以在任意采样率之间转换,并利用高质量多相滤波器实时调整视频大小。
组成
FFmpeg项目由以下几部分组成:
- FFmpeg视频文件转换命令行工具,也支持经过实时电视卡抓取和编码成视频文件;
- ffserver基于HTTP、RTSP用于实时广播的多媒体服务器.也支持时间平移;
- ffplay用 SDL和FFmpeg库开发的一个简单的媒体播放器;
- libavcodec一个包含了所有FFmpeg音视频编解码器的库。为了保证最优性能和高可复用性,大多数编解码器从头开发的;
- libavformat一个包含了所有的普通音视格式的解析器和产生器的库。
举例
MKV转MP4,音频部分只提取第2路音轨
1 | ffmpeg -i input.mkv -map 0:v -vcodec copy -map 0:a:1 -acodec copy -strict -2 output.mp4 |
- 0:v:代表提取所有视频流
- 0:a:1:代表如果有多路音轨,只提取第2路音轨
- -strict -2:使用ffmpeg自带的aac音频编码
MKV转MP4,转换多路ac3音轨
1 | ffmpeg -i input.mkv -map 0:0 -map 0:1 -map 0:2 -vcodec copy -acodec ac3 -disposition:a:0 default -y output.mp4 |
- -disposition:a:0 default:默认第一音轨
视频切割
1 | # 剪切的同时,格式不变,音视频参数不变: |
- -y:表示覆盖输出文件
- -ab:设置音频码率
- -ar:设置音频采样率
- -b:v:设置视频比特率为2200千比特/秒
- -r:设置帧频 缺省25
- -s:设置帧大小 格式为WXH 缺省160X128.下面的简写也可以直接使用:Sqcif 128X96 qcif 176X144 cif 252X288 4cif 704X576
- -ss:表示起始时间,格式为“小时:分钟:秒”
- -t:表示时长,格式为“小时:分钟:秒”
视频增加黑边
使用FFmpeg给视频增加黑边需要用到 pad 这个滤镜,具体用法如下:-vf pad=1280:720:0:93:black
按照从左到右的顺序依次为:
“宽”、“高”、“X坐标”和“Y坐标”,宽和高指的是输入视频尺寸(包含加黑边的尺寸),XY指的是视频所在位置。
比如一个输入视频尺寸是1280x534的源,想要加上黑边变成1280x720,那么用上边的语法可以实现,93是这样得来的,(720-534)/2。
如果视频原始1920x800的话,完整的语法应该是:
-vf ‘scale=1280:534,pad=1280:720:0:93:black’
先将视频缩小到1280x534,然后在加入黑边变成1280x720,将1280x534的视频放置在x=0,y=93的地方,
FFmpeg会自动在上下增加93像素的黑边。
注:black可以不写,默认是黑色
字幕
字幕流跟其他媒体流一样,有各种编码,常见的编码有SubRip(作为独立文件时后缀名为.srt)和ASS(作为独立文件时后缀名为.ass)
因为字幕流也是媒体流,也有各种编码,所以,我们可以通过-scodec或-c:s选项来指定字幕流的编码。
例:提出字幕流ffmpeg -i output.mkv -an -vn -scodec copy sub3.ass
例:转换字幕格式ffmpeg -i subtitle.srt subtitle.ass
例:而将字幕流转换为 ass 编码:ffmpeg -i Tor_Animation_en.mp4 -i Tor_animation.zh-CN.srt -c:v copy -c:a copy -c:s ass Tor_Animation_subtitled.mkv
例:将srt字幕编入视频流ffmpeg -i Tor_Animation_en.mp4 -vf subtitles=Tor_animation.zh-CN.srt -c:a copy Tor_Animation_subtitled.mp4
例:将ass字幕编入视频流ffmpeg -i Tor_Animation_en.mp4 -vf "ass=subtitle.ass" -c:a copy Tor_Animation_subtitled.mp4
字幕参数设置
srt字幕流
1 | $ ffmpeg -i **.mp4 -vf "subtitles=**.src:force_style='FontSize=20,Alignment=6'" output.mp4 |
ass字幕流
最新版本的 ffmpeg 使用 ASS中的V4+ Styles
1 | "[V4+ Styles]\r\n" |