在第一节FFmpeg开发教程1、FFmpeg 版 Hello world中遇到一个问题,在保存YUV的时候,粗暴的使用:html
fwrite(buf, 1, xsize * ysize, f);
方式去拷贝YUV数据是有问题的,获得的图片是这样的:
必须经过如下循环才能获得正确的YUV:code
static void save_gray_frame(unsigned char *buf, int wrap, int xsize, int ysize, char *filename) { FILE *f = NULL; int i = 0; f = fopen(filename, "w"); fprintf(f, "P5\n%d %d\n%d\n", xsize, ysize, 255);  for (i = 0; i < ysize; i++) { fwrite(buf + wrap * i, 1, xsize, f); } //fwrite(buf, 1, xsize * ysize, f); fclose(f); }