FFMPEG是什么?
很难用一句话来概述FFMPEG,一套开源代码?一套媒体框架?还是一个好用的工具?很难用一句话来概论FFMPEG的定义,且看FFMPEG官网如何定义。- FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created.
(首先,FFMEPG可以解码,编码,转码,封装,解析,流媒体,滤波以及播放,一句话:功能全) - It supports the most obscure ancient formats up to the cutting edge. No matter if they were designed by some standards committee, the community or a corporation.
(其次,支持几乎所有的格式,无论是老掉牙的MPEG1编码还是最新的HEVC编码,无论是上个世纪的mp3封装还是比较新的MKV封装,一句话:兼容性好) - It is also highly portable: FFmpeg compiles, runs, and passes our testing infrastructure FATE across Linux, Mac OS X, Microsoft Windows, the BSDs, Solaris, etc. under a wide variety of build environments, machine architectures, and configurations.
(最后,FFMPEG可在多个平台上编译运行(FATE是FFMPEG的一个自动化测试平台,每次merge代码都需要通过此平台的编译运行测试),一句话:可移植性强)
- FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created.
FFMPEG的架构
FFMEPG分为七大模块,分别为
libavutils, libavformat, libavcodec, libswscale, libswresample, libavdevice, libavfilter- libavutils: 公共模块,包含了大量的常用函数,比如说内存操作,字符串,数学运算等函数
- libavformat: 封装与解析模块,此模块中包含了媒体文件操作基本协议和媒体文件的封装协议。
- libavcodec: 解码与编码模块,此模块中包含了媒体文件的编码协议。
- libswscale: 此模块用来操作视频的原始YUV或者RGB数据,如更改视频的分辨率,颜色格式都是在这里完成。
- libswresample:此模块用来操作音频的原始PCM数据,如更改音频的采样率,通道数,采样位数,都是在这个模块里完成。
- libavdevice:此模块包含了一些设备模型,比如说音视频的采集,视频的送显都是在这个模块里完成。
- libavfilter:滤波模块。降噪,锐化,添加水印等都是在这个模块里完成。
FFMPEG专题---概论
最新推荐文章于 2022-02-27 10:43:01 发布