如果视频帧的宽和高分别为w和h,那么一帧YUV420P像素数据一共占用w*h*3/2 Byte的数据。其中前w*h Byte存储Y,接着的w*h*1/4 Byte存储U,最后w*h*1/4 Byte存储V。上述调用函数的代码运行后,将会把一张分辨率为256x256的名称为1.yuv的YUV420P格式的像素数据文件分离成为三个文件:
output_420_y.y:纯Y数据,分辨率为256x256。
output_420_u.y:纯U数据,分辨率为128x128。output_420_v.y:纯V数据,分辨率为128x128。
FILE *fp=fopen(url,"rb+"); FILE *fp1=fopen("output_420_y.y","wb+"); FILE *fp2=fopen("output_420_u.y","wb+"); FILE *fp3=fopen("output_420_v.y","wb+"); unsigned char *pic=(unsigned char *)malloc(w*h*3/2); for(int i=0;i<num;i++){ fread(pic,1,w*h*3/2,fp); //Y fwrite(pic,1,w*h,fp1); //U fwrite(pic+w*h,1,w*h/4,fp2); //V fwrite(pic+w*h*5/4,1,w*h/4,fp3);