做编解码过程中最常见的视频格式是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指针