Loading... ## 1、FFmpeg定义 FFmpeg是一款集音视频编解码、录制、播放、格式转换等功能为一体的多媒体开发套件,它为开发者提供了丰富的音视频处理的调用接口。 FFmpeg中的`FF`是指`Fast Forward`,`mepg`是人们通常理解的`Moving Picture Experts Group`(动态图像专家组)。 ## 2、FFmpeg基本组成 FFmepg框架的基本组成包含`AVFormat`、`AVCodec`、`AVFilter`、`AVDevice`、`AVUtil`、`swresample`、`swscale`等模块。下面对这些模块做一个大概的介绍 - 封装模块AVFormat AVFormat实现了目前多媒体林宇中的绝大多数媒体封装格式,包括封装和解封装,如MP4、FLV、MOV、AVI 等文件封装格式,RTMP、RTSP、MMS、HLS等网络协议封装格式。 - 编解码模块AVCodec AVCodec中实现了目前多媒体领域绝大多数常用的编解码格式,既支持编码,也支持解码。AVCodec除了支持MPEG4、AAC、MJPEG等自带的媒体编解码格式之外,还支持第三方的编解码器,如H.264编码(对应x264解码器);H.264(HEVC)编码(对应x265编码器);MP3编码(对应libmp3lame解码器)等等。 - 滤镜模块AVFilter AVFilter库提供了一个通用的音频、视频、字幕等滤镜处理框架。 - 视频图像转换计算模块swscale swscale模块提供了高级别的图像转换API,例如它允许进行图像缩放和像素格式转换,常见于将图像从1080p转换成720p和480p等的缩放,或者将图像数据从YUV420P转换成YUYV,或者YUV转RGB等图像格式转换 - 音频转换计算模块swresample swresample模块提供了高级别的音频重采样API。例如它允许操作音频采样、音频通道布局转换与布局调整。 ## 3、FFmpeg安装 首先,我不推荐初学者一开始就去github下载源码然后编译。对于初学者,这种方式耗时耗力,事倍功半,在编译源码的过程中会遇到各种各样的问题,缺少依赖库、库的版本不能对应等等,这个过程会耗费你大量的精力,也会打消你很大一部分的学习热情。因此,我推荐初学者先去FFmpeg的官网下载已经编译打包好的可执行文件,Linux下载`deb`包,然后安装;Windows则下载`exe`可执行文件,然后安装。安装好之后会在你的安装目录生成四个文件夹分别是`bin`、`doc`、`include`、`lib`。 - `bin`目录下有三个可执行文件,分别是: - `ffmpeg`用于对媒体文件进行处理 - `ffplay`提供了音视频显示和播放相关的图像信息、音频的波形信息等 - `ffprobe`是一个非常强大的多媒体分析工具,可以从媒体文件或者媒体流中获得你想要了解的媒体信息,比如音频参数、视频参数、媒体容器的参数信息等 - `include`目录下包含FFmpeg各个组件的头文件 - `lib`目录下包含FFmepg各个组件的库文件 至此,你就可以开始进入FFmpeg的学习之路了。 ## 4、参考资料 [1] 刘岐,赵文杰.FFmpeg从入门到精通[M].北京:机械工业出版社,2018:2-15 [2] [The Most Common Video File Formats](https://www.dijifi.com/blog/the-most-common-video-file-formats) [3] [ffmpeg开发指南](https://yq.aliyun.com/articles/355515) Last modification:February 8th, 2021 at 12:27 pm © 允许规范转载