yuv420p

news/2025/1/12 23:40:14/

做编解码过程中最常见的视频格式是yuv420p
下面对yuv420p做一些介绍
420p中的p代表planar,也就是扁平的意思。所以这里引出yuv有两种布局方式,分别是planar和packed。

  • 对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。
  • 对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的。

YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。

yuv420p表示:
YUV 4:2:0采样,每四个Y共用一组UV分量。
在这里插入图片描述

在ffmpeg中怎么分别获取yuv420p的yuv数据?使用如下代码

1 先使用avcodec_decode_video2 解码获取AVFrame

		avcodec_decode_video2(videoCodecCtx, videoFrame, &gotframe, &packet);

2 分别获取yuv数据

   // 1 获取y数据(Luma) videoFrame为AVFrame指针,是解码后获取的//其中videoFrame->linesize[0]对应每行包含的y数据个数,videoCodecCtx->height则为数据的列数,videoFrame->data[0]则为真正的y数据int width = MIN(videoFrame->linesize[0], videoCodecCtx->width);int height = videoCodecCtx->height;int lumaLength = width * height;uint8_t * luma = new uint8_t[lumaLength];copyFrameData(luma, videoFrame->data[0], width, height, videoFrame->linesize[0]);// 2 获取u数据(Chroma) videoFrame为AVFrame指针,是解码后获取的//其中videoFrame->linesize[1]对应每行包含的u数据个数,videoCodecCtx->height则为数据的列数,videoFrame->data[1]则为真正的u数据。 这里videoCodecCtx->height要除以2是因为两行y数据共用一行u数据width = MIN(videoFrame->linesize[1], videoCodecCtx->width / 2);height = videoCodecCtx->height / 2;int chromaBLength = width * height;uint8_t * chromaB = new uint8_t[chromaBLength];copyFrameData(chromaB, videoFrame->data[1], width, height, videoFrame->linesize[1]);// 2 获取v数据(Chroma) videoFrame为AVFrame指针,是解码后获取的//其中videoFrame->linesize[2]对应每行包含的v数据个数,videoCodecCtx->height则为数据的列数,videoFrame->data[2]则为真正的v数据。 这里videoCodecCtx->height要除以2是因为两行y数据共用一行v数据width = MIN(videoFrame->linesize[2], videoCodecCtx->width / 2);height = videoCodecCtx->height / 2;int chromaRLength = width * height;uint8_t * chromaR = new uint8_t[chromaRLength];copyFrameData(chromaR, videoFrame->data[2], width, height, videoFrame->linesize[2]);
void VideoDecoder::copyFrameData(uint8_t * dst, uint8_t * src, int width, int height, int linesize) {for (int i = 0; i < height; ++i) {memcpy(dst, src, width);dst += width;src += linesize;}
}

http://www.ppmy.cn/news/121748.html

相关文章

详解 YUV 格式(I420/YUV420/NV12/NV12/YUV422)

转载自&#xff1a;划水型派大星 YUV &#xff08;YCbCr&#xff09;是一种像素格式&#xff0c;常见于视频编码与静态图像。与 RGB 格式&#xff08;红-绿-蓝&#xff09;相反&#xff0c;YUV 分别由一个称为 Y&#xff08;相当于灰度&#xff09;的“亮度”分量&#xff08;…

2022年天府杯全国大学生数学建模竞赛D题高等院校综合发展状况与学科质量评估解题全过程文档及程序

2022年天府杯全国大学生数学建模竞赛 D题 高等院校综合发展状况与学科质量评估 原题再现&#xff1a; 问题背景&#xff1a;   高等院校是我国经济社会发展中的重要参与者&#xff0c;一流大学与一流学科的建成是实现社会主义共同富裕的重要基础。随着国家第二轮“双一流”…

Transformer part2

(179条消息) Transformer模型入门详解及代码实现_transformer模型代码-CSDN博客 transformer的encoder和decoder的差别 1. decoder包含两个 Multi-Head Attention 层。 decoder第一个 Multi-Head Attention 层采用了 Masked 操作。 为什么需要Mask处理 如何进行Mask处理 de…

跑步装备品牌排行榜,跑步爱好者必备好物推荐

跑步作为最简单易行的运动&#xff0c;备受大家的喜爱。在享受社交健身的同时&#xff0c;跑遍街头巷尾&#xff0c;发现无限的未知和惊喜&#xff0c;作为一个跑者&#xff0c;在进行运动的时候想要跑得久&#xff0c;跑得舒服&#xff0c;都不应该忽略我们最重要的东西——跑…

跑步耳机哪款好用,五款适合跑步的排行榜

我喜欢在山野间运动的的同时享受耳机中jay的歌曲&#xff0c;这样能够让我在缓解压力的同时还能够达到真正意义上的放松心情&#xff0c;而在选运动耳机的时候一定要选防水性能好&#xff0c;佩戴的舒适度以及稳固度要好&#xff0c;这样也能确保不容易掉落。所以我在网上整理一…

高端运动耳机哪个品牌最好、公认最好的跑步耳机品牌排名

在健身、运动的时候&#xff0c;过程往往是很枯燥的&#xff0c;这时候&#xff0c;如果能有动感的音乐在旁&#xff0c;调动我们的积极性&#xff0c;就再好不过了&#xff0c;所以很多人在运动的时候都会选择佩戴一款运动蓝牙耳机。不过适合运动的蓝牙耳机少之又少&#xff0…

跑步带的耳机选择啥样的好、推荐几款跑步专用耳机

我是个比较喜欢运动的人&#xff0c;每天下班都会在小区湖边跑步健身&#xff0c;每次跑步要是少了耳机&#xff0c;那可没什么兴趣跑了&#xff0c;喜欢跑步的时候对着音乐的节奏跑&#xff0c;所以我的耳机基本上是用的比较紧实不易掉落的无线耳机。接下来我来为大家介绍下我…