ffmpeg 的名称来自 MPEG 音视频标准,前面 ff 为 fast forward 用来记录、转换数字音频、视频。并能将其转换为流的计算机应用程序。
现在大部分主流的视频网站都是基于 ffmpeg 进行开发的。ffmpeg 可以用于开发视频播放器、录屏器以及直播,ffmpeg 可以满足大部分对音视频的需求。
我们需要理解一些基本概念,理解好这些基本概念有助于我们更好运用
- 容器(container/file)
- 流媒体(stream)
- 数据帧/数据包(frame/packet)
- 编解码器(codec)
- 复用(mux)
- 解复用(demux)
先介绍几种常见的视频音频编码格式
音频视频编码器
- MP4
- H264 视频编码
- ACC 音频编码
- WebM 封装
- VP8 视频编码
- Vorbis 音频编码
- OGG 封装
- Theora 视频编码
- Vorbis 音频编码
ffmpeg -i ml_003.mov -acodec libmp3lame -ar 44100 -ab 320k -ac 2 output.mp3
-
acodec a 是 audio 的缩写,acodec 是用来指定音频编码器
-
ar 用来指定音频采样率 (a)
-
ab 指定音频的比特率 (rate)
-
ac 指定输出通道数 c(channel)
-
preset
- ultrafast
- superfast
- veryfast
- faster
- fast
- medium
- slow
- slower
- veryslow
- placebo
-
s
修改视频尺寸 -
pix_fmt
视频格式 -
vcodec libx264
: 需要查表进行选择 -
present medium
-
profile:v high
-
level:v 4.1
-
crf 23
: Constant Rate Factor 恒定速率因子模式,数值越小质量越高数值越大质量越大 -
acodec aac
-
ar 44100
-
ac 2
: 音频通道数 -
b:a 128k
所谓码率控制就是决定为每一帧画面分配多少比特数。一共支持 3 种码率控制
- qp(Constant Quantizer) 恒定量化器模式: 所谓量化器就是利用特殊算法将画质转化数值,让后就可以通过控制这些数值来控制画质,并不推荐我们去手动设置画质,0 表示无损画质
ffmpeg -i input -vcodec libx264 -preset ultrafast -qp 0 output.mkv
ffmpeg -i input -vcodec libx264 -preset veryslow -qp 0 output.mkv
- crf (Constant Rate Factor) 恒定速率因子模式: 就是一个浮动的 qp 模式,按照特定标准,根据人肉眼的特点给予每一帧画面不同量化参数,某一些画面高一点或者低一点,只要人无法区分即可。
- b (bitrate) 固定目标码率模式,这种模式下视频码率和文件体积都是确定的。适
网友评论