【问题标题】:How to display YUV420P data?YUV420P数据如何显示?
【发布时间】:2019-04-12 21:17:16
【问题描述】:

我已经成功将libavcodec库导入到一个iPhone应用项目中,我用它把一个电影文件解码成YUV420P数据,这样我就可以得到电影的所有帧,然后将它们转换成RGB数据,这样就可以了由 OpenGL ES 显示。

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

有没有更聪明的方式来播放视频(假设电影必须由 libavcodec 解码)?喜欢直接显示 YUV 还是转换成可以直接显示的类似 YUV 的数据?或者其他比 glDrawArrays 更快的显示方法? Core Graphics可以加载YUV数据吗?

【问题讨论】:

标签: iphone opengl-es yuv video-player


【解决方案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);
    }

【讨论】:

  • 有没有关于如何使用 swscale 的文档?
猜你喜欢
  • 1970-01-01
  • 2014-07-29
  • 2020-01-24
  • 2020-03-05
  • 1970-01-01
  • 2016-12-10
  • 2021-10-31
  • 2018-06-24
  • 2017-07-08
相关资源
最近更新 更多