【发布时间】:2019-03-11 14:59:28
【问题描述】:
我有一个来自 FFMPEG 的 YUV 格式的 AVFrame。我想使用来自 QOpenGLWidget 和 QOpenGLFunctions 的 qt 派生类来渲染它。
我是 qt 和 OpenGL 的初学者。
有人可以帮忙吗?
谢谢 阿斯温
【问题讨论】:
标签: qt ffmpeg yuv qopenglfunctions
我有一个来自 FFMPEG 的 YUV 格式的 AVFrame。我想使用来自 QOpenGLWidget 和 QOpenGLFunctions 的 qt 派生类来渲染它。
我是 qt 和 OpenGL 的初学者。
有人可以帮忙吗?
谢谢 阿斯温
【问题讨论】:
标签: qt ffmpeg yuv qopenglfunctions
好吧,实际上,如果您需要实现一个真正快速渲染播放器,您将不得不处理缓冲区优化、屏幕外渲染、缓冲区流——来自那些.但就 Qt 新手而言,有一些简单但有效的解决方案:
上面链接中的 QFFmpegGLWidget 类足以让您了解这个想法。转换为 RGB 是通过片段着色器完成的,使用 GL_LUMINANCE 应用的 3 个纹理的好老技巧在那里工作。
我在自己的几乎类似的解决方案上苦苦挣扎,但从相机 (rtsp) 中得到的图片颜色错误、混乱。因此,请确保您正在在 YUV420p 中获取帧。如果其他像素格式更适合您,请查看这些中文资源以更深入地了解它(谷歌翻译使它们可读):
祝你好运!
【讨论】: