【问题标题】:Converting YUV420SP to YUV420P将 YUV420SP 转换为 YUV420P
【发布时间】:2011-05-23 08:35:41
【问题描述】:

如何使用 ffmpeg sws_scale 或其他有效方法将 YUV420SP 转换为 YUV420P?

【问题讨论】:

    标签: ffmpeg yuv


    【解决方案1】:

    如果您使用的是 ffmpeg 中的 swscale lib,以下代码可能会对您有所帮助。

    static struct SwsContext *swsContext;
    
    swsContext = sws_getContext(c->width, c->height,PIX_FMT_NV21,
            c->width, c->height,
            PIX_FMT_YUV420P,
            SWS_FAST_BILINEAR, NULL, NULL, NULL);
    
    avpicture_fill((AVPicture*)picture, data, PIX_FMT_NV21, c->width, c->height);
    
    avpicture_fill((AVPicture*)outpic, outbuffer, PIX_FMT_YUV420P, c->width, c->height);
    
    sws_scale(swsContext, picture->data, picture->linesize, 0, c->height, outpic->data, outpic->linesize);
    
    sws_freeContext(swsContext);
    

    【讨论】:

      【解决方案2】:

      有大量不同的 YUV 格式可用,作为起点,请参阅 http://www.fourcc.org/yuv.php

      您的问题需要更加具体,因为“半平面”和“平面”并不能真正说明数据的格式。

      但作为一般建议,它只是连续放置的原始数据。您需要做的就是从流中读取正确数量的数据,然后使用您喜欢的语言将其写入外流。

      【讨论】:

        猜你喜欢
        • 2018-01-24
        • 2017-08-04
        • 1970-01-01
        • 1970-01-01
        • 2018-11-19
        • 2018-03-14
        • 1970-01-01
        • 1970-01-01
        • 2021-02-03
        相关资源
        最近更新 更多