当前位置:   article > 正文

FFMPEG学习记录_ffmpeg buffer size: 0

ffmpeg buffer size: 0

学习文档

(强烈推荐)移动端音视频从零到上手
x264下载
FFmpeg下载
雷神博客

FFmpeg

基本概念

  1. 时间基
    深入理解pts,dts,time_base
    iOS CMTimeMake 和 CMTimeMakeWithSeconds 学习
    FFmpeg时间戳
    雷神博客截图

主要版块

FFPlay

用于播放
ffplay的快捷键以及选项

FFProbe

用于查看文件格式

FFMpeg

用于转码

结构体

解码前数据:AVPacket -> 解码后数据:AVFrame
雷神博客截图 结构体关系
分为以下几类:

解协议(http,rtsp,rtmp,mms)

AVIOContext,URLProtocol,URLContext主要存储视音频使用的协议的类型以及状态。URLProtocol存储输入视音频使用的封装格式。每种协议都对应一个URLProtocol结构。(注意:FFMPEG中文件也被当做一种协议“file”)

解封装(flv,avi,rmvb,mp4)

AVFormatContext主要存储视音频封装格式中包含的信息;AVInputFormat存储输入视音频使用的封装格式。每种视音频封装格式都对应一个AVInputFormat 结构。

解码(h264,mpeg2,aac,mp3)

每个AVStream存储一个视频/音频流的相关数据;每个AVStream对应一个AVCodecContext,存储该视频/音频流使用解码方式的相关数据;每个AVCodecContext中对应一个AVCodec,包含该视频/音频对应的解码器。每种解码器都对应一个AVCodec结构。

存数据

视频的话,每个结构一般是存一帧;音频可能有好几帧

具体类

FFMPEG中最关键的结构体之间的关系
FFmpeg源代码简单分析:常见结构体的初始化和销毁(AVFormatContext,AVFrame等)

AVFrame

FFMPEG结构体分析:AVFrame
存储非压缩的数据(视频对应RGB/YUV像素数据,音频对应PCM采样数据)

uint8_t *data[AV_NUM_DATA_POINTERS]:解码后原始数据(对视频来说是YUV,RGB,对音频来说是PCM)
int linesize[AV_NUM_DATA_POINTERS]:data中“一行”数据的大小。注意:未必等于图像的宽,一般大于图像的宽。
int width, height:视频帧宽和高(1920x1080,1280x720...int nb_samples:音频的一个AVFrame中可能包含多个音频帧,在此标记包含了几个
int format:解码后原始数据类型(YUV420,YUV422,RGB24...int key_frame:是否是关键帧
enum AVPictureType pict_type:帧类型(I,B,P...)
AVRational sample_aspect_ratio:宽高比(16:94:3...int64_t pts:显示时间戳
int coded_picture_number:编码帧序号
int display_picture_number:显示帧序号
int8_t *qscale_table:QP表
uint8_t *mbskip_table:跳过宏块表
int16_t (*motion_val[2])[2]:运动矢量表
uint32_t
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/647006
推荐阅读
相关标签
  

闽ICP备14008679号