1、 FFMEPG结构说明
1.1》介绍
ffmpeg(Fast Forward Moving Pictures Experts Group)是音视频的分离,转换,编码解码及流媒体的完全解决方案,其中最重要的就是libavcodec库,是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案。ffmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。FFmpeg支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多种编码,AVI、MPEG、OGG、Matroska、ASF等90多种解码. TCPMP, VLC, MPlayer等开源播放器都用到了FFmpeg。
ffmpeg主目录下主要有libavcodec、libavformat和libavutil等子目录。其中
libavcodec用于存放各个encode/decode模块,CODEC其实是Coder/Decoder的缩写,也就是编码解码器;用于各种类型声音/图像编解码
libavformat用于存放muxer/demuxer模块,对音频视频格式的解析;用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能;
其中库 libavcodec,libavformat用于对媒体文件进行处理,如格式的转换;
libavutil集项工具,包含一些公共的工具函数;用于存放内存操作等辅助性模块,是一个通用的小型函数库,该库中实现了CRC校验码的产生,128位整数数学,最大公约数,整数开方,整数取对数,内存分配,大端小端格式的转换等功能
libavdevice:对输出输入设备的支持;
libpostproc:用于后期效果处理;
libswscale:用于视频场景比例缩放、色彩映射转换;
ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等;
fsever:一个 HTTP 多媒体即时广播串流服务器;
ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示;
ffmpeg软件包经编译过后将生成三个可执行文件,ffmpeg,ffserver,ffplay。其中ffmpeg用于对媒体文件进行处理,ffserver是一个http的流媒体服务器,ffplay是一个基于SDL的简单播放器。
说明:
muxer/demuxer和encoder/decoder的区别:
最大的差别是muxer 和demuxer分别是不同的结构AVOutputFormat与AVInputFormat;
而encoder和decoder都是用的AVCodec 结构。
muxer/demuxer是分别保存在全局变量AVOutputFormat *first_oformat与AVInputFormat *first_iformat中的。encoder/decoder都是保存在全局变量AVCodec *first_avcodec中的。
muxer/demuxer和encoder/decoder的相同之处:
都是在main()开始的av_register_all()函数内初始化的
都是以链表的形式保存在全局变量中的
都用函数指针的方式作为开放的公共接口
1.2》下载与编译
官方下载网址http://ffmpeg.org/download.html
编译./configure
#make
#make install
安装到/usr/local/bin、/usr/local/include(包含各个头文件)、/usr/local/lib(生成.a文件),编译完毕后
A》执行./ffmpeg,结果如下:
FFmpeg version SVN-r17579, Copyright (c) 2000-2009 Fabrice Bellard, et al.
configuration:
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.19. 0 / 52.19. 0
libavformat 52.30. 0 / 52.30. 0
libavdevice 52. 1. 0 / 52. 1. 0
built on Mar 25 2011 17:30:17, gcc: 4.3.4
Ffmpeg框架结构解读
最新推荐文章于 2024-05-16 23:19:39 发布