码迷,mamicode.com
首页 > 其他好文 > 详细

FFmpeg中AVFrame.linesize的含义

时间:2019-05-13 19:01:19      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:html   img   stack   ref   name   char   通过   frame   fprintf   

在第一节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);
    ![](https://img2018.cnblogs.com/blog/919516/201905/919516-20190510142313623-420164045.jpg)


    for (i = 0; i < ysize; i++) {
        fwrite(buf + wrap * i, 1, xsize, f);
    }
    //fwrite(buf, 1, xsize * ysize, f);
    
    fclose(f);
}

网友解答:Understanding of AVFrame.linesize[]

FFmpeg中AVFrame.linesize的含义

标签:html   img   stack   ref   name   char   通过   frame   fprintf   

原文地址:https://www.cnblogs.com/ichenwin/p/10844671.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!