如何显示YUV420P数据?

问题描述 投票:0回答:1

我已成功将libavcodec库导入到iPhone应用程序项目中,并用它将电影文件解码为YUV420P数据,以便我可以获取电影的所有帧然后将它们转换为RGB数据,因此可以通过OpenGL ES。

电影可以成功播放,但由于从YUV到RGB的转换和OpenGL的显示方法(glDrawArrays)很慢,所以它很慢。

是否有更智能的方式播放视频(假设电影必须由libavcodec解码)?比如直接显示YUV或转换为类似YUV的数据,可以直接显示?或者其他显示方法比glDrawArrays更快? YUV数据可以由Core Graphics加载吗?

iphone opengl-es yuv video-player
1个回答
1
投票

尝试将YUV转换为RGB。就像是:

img_convert_ctx = sws_getContext(320, 
                192,
                                                         PIX_FMT_YUV420P,
                                                         480, 
                                                         320,
                                                         PIX_FMT_RGB24,
                                                         sws_flags, NULL, NULL, NULL);

然后:

if (frameData->data[0]) {
        sws_scale (img_convert_ctx, frameData->data, frameData->linesize,
                   0, 192,
                   picture.data, picture.linesize);
    }
© www.soinside.com 2019 - 2024. All rights reserved.