在第一節FFmpeg開發教程一、FFmpeg 版 Hello world中遇到一個問題,在保存YUV的時候,粗暴的使用:
fwrite(buf, 1, xsize * ysize, f);
方式去拷貝YUV數據是有問題的,得到的圖片是這樣的:
必須通過以下循環才能得到正確的YUV:
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);
}