读取YUV视频文件

原创 2007年09月14日 09:14:00

如何读取YUV视频文件

例如:
QCIF应该是176×144

若是4:2:0的QCIF,每帧图像应该是176×144个Y,44×36个U,以及44×36个V。


根据资料介绍,YUV有很多格式

YUY2 格式,以4:2:2 方式打包
YUYV 格式(实际格式与YUY2 相同)
YVYU 格式,以4:2:2 方式打包
UYVY 格式,以4:2:2 方式打包
带Alpha 通道的4:4:4 YUV 格式
Y41P 格式,以4:1:1 方式打包
Y411 格式(实际格式与Y41P 相同)
Y211 格式
IF09 格式
IYUV 格式
YV12 格式 (4:2:0方式打包,适用于视频会议,数字电视,DVD存储)
注:在文件中是顺序存储的(先存Y空间,然后是U空间,再是V空间)

YVU9 格式


////////////////////////////////////////////
附代码:(我的视频流就是YV12格式的)

说明:读取300帧图像,在CCS软件仿真下面可以显示。

CCS环境下面,project/Build Options/Compiler/Advanced/Memory Models选项要作设置,
选择-ml0       Aggregate data (structs/arrays) default to far


#include <stdio.h>
#define cif

#ifdef qcif
#define Y_WIDTH 176
#define Y_HEIGHT 144
#define U_WIDTH 88
#define U_HEIGHT 72
#define V_WIDTH 88
#define V_HEIGHT 72
#endif

#ifdef cif
#define Y_WIDTH 352
#define Y_HEIGHT 288
#define U_WIDTH 176
#define U_HEIGHT 144
#define V_WIDTH 176
#define V_HEIGHT 144
#endif

void ReadImage(unsigned char *pImage,char *cFileName,int nWidth,int nHeight,long offset);

unsigned char Y_space[Y_WIDTH*Y_HEIGHT];
unsigned char U_space[U_WIDTH*U_HEIGHT];
unsigned char V_space[V_WIDTH*V_HEIGHT];

main()
{int i=0;
 long origin;
 for(i=0,origin=0;i<300;i++,origin+=(Y_WIDTH*Y_HEIGHT+U_WIDTH*U_HEIGHT+V_WIDTH*V_HEIGHT))
 {
  ReadImage(Y_space,"..//bridge-close.cif",Y_WIDTH,Y_HEIGHT,origin);
  ReadImage(U_space,"..//bridge-close.cif",U_WIDTH,U_HEIGHT,Y_WIDTH*Y_HEIGHT);
  ReadImage(V_space,"..//bridge-

close.cif",V_WIDTH,V_HEIGHT,Y_WIDTH*Y_HEIGHT+U_WIDTH*U_HEIGHT);
 }
  while ( 1 );
}


void ReadImage(unsigned char *pImage,char *cFileName,int nWidth,int nHeight,long offset)
{
 int j,i;
 unsigned char *pWork;
 FILE *fp=0;

 if ( fp=fopen(cFileName,"rb" ) )   //打开一幅图像
 {
  fseek(fp,offset,SEEK_SET);   //文件定位
   pWork=pImage; //指针指向
  for ( j=0;j<nHeight;j++,pWork+=nWidth )
   for ( i=0;i<nWidth;i++ )
    fread(pWork+i,1,1,fp); //顺序读取
  fclose(fp);
 }
}

 

 

相关文章推荐

关于YUV视频的读取、播放,保存帧图片、以及处理的图像保存为YUV视频。

声明:原创博文,禁止转载。否则将追究法律责任!http://blog.csdn.net/sdlyjzh/article/details/8246752 要对YUV视频进行处理,首先要将视频保存为一帧...
  • sdlyjzh
  • sdlyjzh
  • 2012年12月01日 16:35
  • 11895

Python读取YUV文件,并显示

Python读取YUV格式文件,并使用opencv显示      opencv可以读取的图片类型比较多,但大多是比较常见的类型,比如".jpg"和".png",但它不能直接读取YUV格式的文件,需要...

用ffmpeg转换图片、视频格式yuv, C语言读取YUV图像

1.用ffmpeg将视频转换为yuv格式ffmpeg.exe -i src.avi -c:v rawvideo -pix_fmt yuv420p 1280x720.yuv输出视频可以用yuvPlaye...

YUV格式分析详解

YUV格式分析详解     一,YUV含义   YUV格式通常有两大类:打包(packed)格式和平面(planar)格式。前者将YUV分量存放在同一个数组中,通常是几个相邻的像素组成一个宏像素(ma...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Duanxx的HEVC学习(一)输入视频文件YUV文件的分析

一 什么是YUV文件          Y'UV的发明是由于彩色电视与黑白电视的过渡时期。黑白视讯只有Y(Luma,Luminance)视讯,也就是灰阶值。到了彩色电视规格的制定,是以YUV/YIQ的...
  • daunxx
  • daunxx
  • 2014年07月19日 13:47
  • 3032

视频采集与处理-YUV数据

析 码流 视频采集 RGB YUV 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://ticktick.blog.51ct...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

关于ffmpeg和opencore的学习

需要在android系统中支持RM视频格式的播放。而且不是在应用层修改添加插件而是需要修改android底层的代码需要修改opencore中的东西(android2.2以前,android2.3后不再...

0xcdcd…………这典型就是一个未分配指针

http://topic.csdn.net/u/20100809/10/9fbee996-c43e-4928-93b2-d49ce5702ea8.html   访问冲突当某指令或程序执行引发的内存访问...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:读取YUV视频文件
举报原因:
原因补充:

(最多只允许输入30个字)