🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## FFmpeg 的基本组成 FFmpeg 框架的基本组成包含 AVFormat 、AVCodec 、AVFilter、 AVDevice、 AVUtil 模块库, ### FFmpeg 的封装模块 AVFormat AVFormat 中实现了目前多媒体领域中的绝 大多数媒体封装格式,包括封装和解封装,如 1-1 FFmpeg 基本组成模块 MP4 FLY KV TS 等文件封装格式, RTMP, RTSP MMS, HLS 等网络协议封装格式 FFmpeg 是否支持某种媒体封装格式,取决于编译时是否包含了该格式的封装库 根据实 际需求,可进行媒体封装格式的扩展,增加自己定制的封装格式,即在 AVFormat 中增加 自己的封装处理模块 ### FFmpeg 的编解码模块 AVCodec AVCodec 中实现了目前多媒体领域绝大多数常用的编解码格式,既支持编码,也支持 解码。 VCodec 除了支持 MPEG4, AAC MJPEG 等自带的媒体编解码格式之外,还支 持第三方的编解码器,如 H. 264 ( AVC )编码,需要使用 x264 编码器; H.265 ( HEVC )编 码,需要使用 x2 65 编码器; MP3 ( mp3 lame )编码,需要使用 libmp3lame 编码器 如果希望增加自己的编码格式,或者硬件编解码,则需要在 AVCodec 中增加相应的编解码模 块,关于 AVCode 的更多相关信息以及使用信息将会在后面的章节中进行详细的介绍 ### FFmpeg 的滤镜模块 AVFilter AVFilter 库提供了一个通用的音频、视频、字幕等滤镜处理框架 AVFi lter ,滤 镜框架可以有多个输入和多个输出。我 参考下面这个滤镜处理的例子 ![d8YH2Q.png](https://s1.ax1x.com/2020/08/20/d8YH2Q.png) 所示样例中的滤镜处理将输入的视频切割成了两部分流, 部分流抛给 crop 镜与 vflip 滤镜处理模块进行操作, 另一部分保持原样,当 rop 滤镜与 flip 滤镜处理操作 完成之后,将流合并到原有的 overlay 图层中,并显示在最上面一层,输出新的视频 应的命令行如下: ``` ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT ``` ### FFmpeg 的视频图像转换计算模块 swscale swscale 模块提供了高级别的图像转换API ,例如它允许进行图像缩放和像素格式转换,常见于将图像从 1080p 转换成 720p 或者 480p 等的缩放,或者将图像数据从YUV420P 转换成 YUYV ,或者 YUV 转RGB 等图像格式转换。 ( 5) FFmpeg 的音频转换计算模块 swresample swresample 模块提供了高级别的音频重采样 API 例如它允许操作音频采样 音频 道布局转换与布局调整