【ffmpeg sdk】结构体解析

本文后面会陆陆续续补充,调用sdk时使用的一些结构体的作用含义和这些结构体之间的包含关系

在这里插入图片描述

FFmpeg解码的数据结构简介

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

FFmpeg数据结构分析

  • AVFormatContext
    • iformat:输入视频的AVInputFormat
    • nb_streams :输入视频的AVStream 个数
    • streams :输入视频的AVStream []数组
    • duration :输入视频的时长(以微秒为单位)
    • bit_rate :输入视频的码率
  • VInputFormat
    • name:封装格式名称
    • long_name:封装格式的长名称
    • extensions:封装格式的扩展名
    • id:封装格式ID
    • 一些封装格式处理的接口函数
  • AVStream
    • id:序号
    • codec:该流对应的AVCodecContext
    • time_base:该流的时基
    • _frame_rate:该流的帧率
  • AVCodecContext
    • codec:编解码器的AVCodec
    • width, height:图像的宽高(只针对视频)
    • pix_fmt:像素格式(只针对视频)
    • sample_rate:采样率(只针对音频)
    • channels:声道数(只针对音频)
    • sample_fmt:采样格式(只针对音频)
  • AVCodec
    • name:编解码器名称
    • long_name:编解码器长名称
    • type:编解码器类型
    • id:编解码器ID
    • 一些编解码的接口函数
  • AVPacket
    • pts:显示时间戳(和前面的time_base相乘组合使用)
    • dts :解码时间戳
    • data :压缩编码数据
    • size :压缩编码数据大小
    • stream_index :所属的AVStream(表示前面AVStream的数组下标),表示是音频流还是视频流
  • AVFrame
    • data:解码后的图像像素数据(音频采样数据)。
    • linesize:对视频来说是图像中一行像素的大小;对音频来说是整个音频帧的大小
    • width, height:图像的宽高(只针对视频)。
    • key_frame:是否为关键帧(只针对视频) 。
    • pict_type:帧类型(只针对视频) 。例如I,P,B。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值