美文网首页
NDK探索之FFmpeg

NDK探索之FFmpeg

作者: 简祖明 | 来源:发表于2017-08-29 00:01 被阅读0次

    FFmpeg库简介

    1. avcodec:编解码(非常重要);
    2. avformat:封装格式的处理;
    3. avfilter:滤镜特效处理;
    4. avdevice:各种设备的输出;
    5. avutil:工具类(大部分库都要这个库的支持);
    6. postproc:后加工(暂时还没用过);
    7. swresample:音频采样数据格式转化;
    8. swscale:视频像素数据格式转换。

    视频解码流程:

    1. av_register_all();(示例:ffmeg->doc->examples->transcoding.c)主要是做一些准备工作;
    2. avformat_open_input();
    3. avformat_find_stream_info();读取文件信息
    4. avcodec_open2();打开编码器
    5. av_read_frame();从输入文件读取一帧压缩数据
    6. avcodec_decode_vedio2();解码一帧压缩数据,得到AVFrame
    7. avcodec_close;关闭解码器;
    8. avformat_close_input();关闭输入视频文件;

    FFmpeg数据结构:

    • AVFormatContext
      • 封装格式上下文结构体,也是统领全局的结构体,保存了视频文件封装的格式相关信息。
    • AVInputFormat
      • 每种封装格式(例如FLV,MP4,AVI)对应一个该结构体。
    • AVStream
      • 视频文件中每个视频(音频)流对应该结构体。
    • AVCodecContext
      • 编解码上下文结构体,保存了音视频编解码相关信息。
    • AVCodec
      • 每种音视频编解码器(例如H.264解码器)对应一个该结构体。
    • AVPacket
      • 存储一帧压缩编码数据
    • AVFrame
      • 存储一帧解码后像素(采样)数据。

    数据结构的分析

    FFmpeg提供的都是一些很简单方便的api

    • AVFormatContext
      • iformat:输入视频的AVInputFormat。
      • nb_streams:输入视频的AVStram个数。
      • streams:输入视频的AVStram[]数组。
      • duration:输入视频的时长(微秒为单位)。
      • bit_rate:输入视频的码率。
    • AVInputFormat
      • name:封装格式的名称。
      • long_name:封装格式的长名次。
      • extensions:封装格式的扩展名。
      • id:封装格式id
      • 一些封装格式处理的接口函数。

    相关文章

      网友评论

          本文标题:NDK探索之FFmpeg

          本文链接:https://www.haomeiwen.com/subject/siundxtx.html