Ffmpeg框架结构解读

本文详细介绍了FFmpeg的框架结构,包括libavcodec、libavformat和libavutil等核心组件的功能。FFmpeg是一个开源的音视频处理解决方案,用于编码解码、格式转换和流媒体处理。文章还解析了FFmpeg的编解码流程,包括输入流初始化、编码器和解码器初始化、数据单元处理等步骤,并提供了下载、编译FFmpeg的方法。此外,还展示了FFmpeg解码视频的步骤,包括查找解码器、解码帧数据等。最后,文章通过代码标记展示了FFplay播放器的主函数调用流程。
摘要由CSDN通过智能技术生成

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值