Ffmpeg框架结构解读

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

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Android系统中集成FFmpeg框架,需要进行以下步骤: 1. 下载FFmpeg:从FFmpeg官网下载最新的源代码压缩包。 2. 解压源代码:将下载的压缩包解压到你的开发机器上。 3. 配置交叉编译环境:由于FFmpeg是在Linux环境下开发的,所以需要配置交叉编译环境来生成适用于Android系统的库文件。你可以使用Android NDK提供的工具链进行交叉编译。 4. 配置FFmpeg编译选项:进入FFmpeg源代码目录,运行`./configure`命令配置编译选项。你需要指定目标平台为Android,并选择需要编译的模块,如解码器、编码器等。还可以通过添加`--prefix`选项指定输出路径。 5. 编译FFmpeg库:运行`make`命令编译FFmpeg库。根据你的系统环境和配置选项,可能需要使用`-j`参数指定并发编译的线程数。 6. 安装生成的库文件:运行`make install`命令将生成的库文件安装到指定路径。你可以选择将库文件安装到系统目录或自定义的目录。 7. 配置Android项目:在你的Android项目中,配置NDK构建脚本(如CMake或ndk-build)以引用编译生成的FFmpeg库文件。你需要设置正确的库路径和链接选项,以及指定需要使用FFmpeg的源代码文件。 8. 在代码中使用FFmpeg:通过JNI在Java代码中调用C/C++代码,使用FFmpeg提供的接口进行音视频处理。你可以参考FFmpeg的官方文档和示例代码来学习如何使用FFmpeg。 这是一个基本的集成步骤,具体过程可能因项目架构和使用的开发工具而有所差异。集成FFmpeg需要一定的编译和配置知识,建议在集成前先了解FFmpeg的使用文档和相关资源。另外,请注意在集成过程中遵循FFmpeg的许可协议要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值