在AVFrame中计算音视频数据大小

简介: 在AVFrame中计算音视频数据大小

AVFrame* frame;

视频:

如果是packet模式

frame->linesize[0] x frame->width

如果是planner模式

(frame->linesize[0] + frame->linesize[1] + frame->linesize[2]) x frame->width


音频:

如果是packet模式

frame->linesize[0] x frame->channels

如果是planner模式

(frame->linesize[0] + frame->linesize[1]) x frame->channels

值得注意的是,frame->linesize[0]并不是代表frame->data[0]实际的字节数,只要用av_frame_get_buffer给frame->data分配好内存后,frame->linesize[0]已经被赋于一个确切的值。


注意以上两种算法都可能有字节补齐,这部分之前的文章有提到过,下面提供另外一种用格式的计算方式:

视频:

yuv444格式

frame->width x frame->height x 3

yuv422

frame->width x frame->height x 2

yuv420

frame->widht x frame->height x 1.5


音频:

16位的位深

frame->nb_samples x frame->channels x 16 / 2

32位的位深

frame->nb_samples x frame->channels x 32 / 2


相关文章:YUV的plannar,packet及semi-planar格式及RGB


image.png

相关文章
|
11月前
|
存储 编解码 数据处理
[笔记]音视频学习之视音频数据处理入门《一》YUV、RGB(上)
[笔记]音视频学习之视音频数据处理入门《一》YUV、RGB
180 0
|
4月前
|
存储 编解码 算法
音视频学习之基础概念整理(rgb/yuv,pcm,采样频率,帧率,码率,i帧p帧b帧,dts/pts)
音视频学习之基础概念整理(rgb/yuv,pcm,采样频率,帧率,码率,i帧p帧b帧,dts/pts)
125 0
|
10月前
|
存储 Cloud Native Linux
音视频 ffmpeg命令提取PCM数据
音视频 ffmpeg命令提取PCM数据
|
11月前
[笔记]音视频学习之SDL篇《九》 渲染yuv数据
[笔记]音视频学习之SDL篇《九》 渲染yuv数据
|
11月前
|
存储 数据处理 数据格式
[笔记]音视频学习之视音频数据处理入门《一》YUV、RGB(下)
[笔记]音视频学习之视音频数据处理入门《一》YUV、RGB
175 0
|
编解码 监控 Serverless
基于函数计算实现音视频转码
本文为您介绍如何通过基于函数计算服务、Serverless工作流、对象存储OSS、日志服务SLS、专有网络VPC和文件存储NAS服务,实现音视频转码。
154 0
|
存储 SQL 数据库
从海康摄像机上读取RTSP视频流并存储当前帧到本地
从海康摄像机上读取RTSP视频流并存储当前帧到本地
2370 0
|
存储 缓存 内存技术
音视频系列四:ffmpeg之获取音视频帧数据
音视频系列四:ffmpeg之获取音视频帧数据
602 0
音视频系列四:ffmpeg之获取音视频帧数据
|
数据采集 传感器 编解码
【Android RTMP】音频数据采集编码 ( FAAC 编码器编码 AAC 音频采样数据 | 封装 RTMP 音频数据头 | 设置 AAC 音频数据类型 | 封装 RTMP 数据包 )
【Android RTMP】音频数据采集编码 ( FAAC 编码器编码 AAC 音频采样数据 | 封装 RTMP 音频数据头 | 设置 AAC 音频数据类型 | 封装 RTMP 数据包 )
269 0
|
存储 Android开发 索引
【Android FFMPEG 开发】FFMPEG 获取 AVStream 音视频流 ( AVFormatContext 结构体 | 获取音视频流信息 | 获取音视频流个数 | 获取音视频流 )
【Android FFMPEG 开发】FFMPEG 获取 AVStream 音视频流 ( AVFormatContext 结构体 | 获取音视频流信息 | 获取音视频流个数 | 获取音视频流 )
249 0