gpt4 book ai didi

opengl - ffmpeg:如何从 AVframe 获取 YUV 数据并使用 opengl 绘制它?

转载 作者:行者123 更新时间:2023-12-04 23:05:08 30 4
gpt4 key购买 nike

如何从 AVframe 结构访问 YUV 数据?通过访问其数据[]?
是否有任何简单的方法来使用 opengl 绘制 YUV 数据,而不是创建着色器并自己绘制 Y、U、V 图像?

最佳答案

是的,你使用 frame->data[]。通常每个人都使用着色器/纹理,所以你也应该这样做。只需将它们作为纹理上传,使用这样的代码上传纹理:

glPixelStorei(GL_UNPACK_ROW_LENGTH, frame->linesize[0])
glActiveTexture(GL_TEXTURE0 + id);
glBindTexture(GL_TEXTURE_2D, texture[id]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, frame->width, frame->height,
0, GL_LUMINANCE, GL_UNSIGNED_BYTE, frame->data[0]);

以相同的方式上传数据 [1] 和 [2],但将色度子采样应用于宽度/高度(例如 uvwidth = (width + 1) >> 1)。此代码还假设您在名为 texture[] 的数组中创建了 3 个纹理。在您的绘图循环中,您可以引用这些纹理 ID 以将它们链接到着色器中的统一纹理,最终用于绘制。几乎可以在任何地方找到进行 YUV 到 RGB 转换的着色器示例。

关于opengl - ffmpeg:如何从 AVframe 获取 YUV 数据并使用 opengl 绘制它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30218922/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com