FFmpeg是一款自由软件,它可以运行数字音频和视频多种格式的录影、转换和流功能。其中的FF是指FastForward,而mpeg是指动态图像专家组。由于软件自由灵活且功能强大,打破惹不同环境和平台间间对视音频档案的各种处理方法的限制,不仅可以开箱即用还可以拿来二次开发,所以被广泛使用。
FFmpeg的基本组成;
FFFmpeg框架由AVFormat、AVCodec、AVFilter、AVDevice、AVUtil等模块库组成。
(1)AVFormat库实现了目前多媒体领域中的绝大多数媒体封装格式的封装和解封装,同时还支持增加自己定制的封装格式。
(2)AVCodec库实现了目前多媒体领域中的绝大多数常用的编解码格式的编码与解码,同时还支持第三方编解码器的外挂。
(3)AVFilter库提供了一个通用的音、视、字幕等滤镜的处理框架,滤镜框架可以有多个输入输出。它是通过切割视频流的方式将需要滤镜的部分扔给滤镜,然后再将滤镜后的流交给图层再合并压制出新的视频。
(4)其中的swscale模块是负责图像转换计算的,提供了高级别的图像转换API。例如1080p转720p,YUV转RGB等。
(5)其中swresample模块是负责音频重采样功能的,它允许操作音频采样、音频通道布局转换与布局调整。
FFmpeg基本功能介绍;
编解码;
ffmpeg -i input.mp4 output.avi
FFmpeg主要是通过下面六个流程来执行封装格式转换的:
1)读入input.mp4
2)音视频解封装
3)逐帧解码视音频数据
4)逐帧编码是音频数据
5)编码后数据重新封装
6)输出到output.avi
1)解封装(Demuxing)
2)解码(Decoding)
3)编码(Encoding)
4)封装(Muxing)
播放;
ffplay input.mp4
ffplay的基本流程是有avformat与avcode进行媒体档案的解封装与解码,再将解码后的数据输出给SDL库进行播放。ffplay提供了音视频显示和播放相关的图像信息、音频的波形信息等。
档案分析;
ffprobe -show_streams input.mp4
ffprobe是一个多媒体分析工具(类似MediaInfo),可以从媒体档案或者媒体流中获得一些信息,如视音频参数、媒体容器参数信息等。
FFmpeg的档案支持;
编码器支持:
ffmpeg configure -encoders
解码器支持:
ffmpeg configure -decoders
封装支持:
ffmpeg configure -muxers
解封装支持:
ffmpeg configure -demuxers
通信协议支持:
ffmpeg configure -protocols
FFmpeg常用命令;
帮助:
ffmpeg --help
ffmpeg --help long
ffmpeg --help full
ffmpeg -L
版本信息:
ffmpeg -version
封装格式支持:
ffmpeg -formats
输出第一列为封装格式Demuxing与Muxing支持;
输出第二列为封装格式后缀;
输出第三列为详细说明;
编解码支持:
ffmpeg -codecs
ffmpeg -decoders
ffmpeg -encoders
输出第一列为
(1)编码器为音视还是字幕
(2)帧级别的多线程支持
(3)分片级别多线程
(4)编码器是否为试验版本
(5)draw horiz band模式支持
(6)直接渲染模式支持
输出第二列为编码格式
输出第三列为编码格式详细说明
滤镜支持:
ffmpeg -filters
第一列为
(1)时间轴支持
(2)分片线程处理支持
(3)命令支持
第二列为滤镜名
第三列为转换方式
第四列为滤镜作用说明
-h详细参数查询:
ffmpeg -h muxer=flv(FLV封装器参数支持)
ffmpeg -h encoder=h264(H264编码器参数支持)
@本地磁盘姬
ohayou.aimo.moe
微博:@本地磁盘姬碟酱
Twitter:本地磁盘姬