zoukankan      html  css  js  c++  java
  • ffmpeg 学习:主要结构体之间关系

    背景

    学习例程源码的时候,搞不清楚各结构体之间是什么含义。

    解析

    FFmpeg 有多个重要的结构体,解协议,解分装,解码,解封装。

    解协议:

    http,rstp,rtmp,mms。
    AVIOContext,URLProtocol,URLContext主要存储视频音频试用的协议类型及状态,URLProtocol存储输入视频音频的封装格式。每种协议都对应一个URLProtocol结构

    解封装:

    flv,avi,rmvb,mp4
    AVFormatContext 主要存储视频音频封装格式中包含的信息;
    AVInputFormat存储视频音频试用的封装格式。
    每种视频音频封装格式都对应一个AVInputFormat结构。

    解码:

    h264,mpeg2,aac,mp3,avs(真的超级多一页都显示不完,包含摄像头,监控,电视等等几乎能有视频音频的地方都有解码器)
    视频音频都有视频流会音频流。
    每个AVStream存储一个视频音频流的相关数据。
    每个AVStream对应一个AVCodecContext,存储该视频音频的解码方式相关数据。
    每个AVCodecContext中对应一个AVCodec,包含该视频音频对应的解码器,每种解码器对应一个AVCodec结构。

    存数据:

    视频每个结构都是存一帧(一张图)。音频可能好几帧。
    解码前的数据:AVPacket;
    解码后的数据:AVFormat;

    关系是这样:(引用雷神的原图)

    解协议(http,rtsp,rtmp,mms)→解封装(flv,avi,rmvb,mp4)→解码 h264,mpeg2,aac,mp3)→存数据

  • 相关阅读:
    Linux下c开发 之 线程通信(转)
    mount -t nfs 的使用
    window共享linux下的文件 samba
    C/C++ 的使用
    php获取格式时间和时间戳
    php压缩文件夹
    php递归删除文件夹
    php生成文件夹(递归生成)
    QQ音乐API分析记录
    $(this)与this的区别
  • 原文地址:https://www.cnblogs.com/schips/p/12197255.html
Copyright © 2011-2022 走看看