微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从 mpv 电影绘制到 OpenGL

如何解决如何从 mpv 电影绘制到 OpenGL

我们可以使用 mpv 库在 OpenGL 窗口的左下角进行绘制。虽然 mpv 似乎能够绘制任意宽度和高度,但我们发现绘制到另一个位置的唯一方法是写入另一个帧缓冲区,但随后我们必须将第二个帧缓冲区 blit 到第一个

有没有办法告诉 mpv 将 OpenGL 绘制到 (x,y,w,h) 上?

此外,当我们复制它多次崩溃时,然后突然开始工作,这很奇怪。即使它工作,它也会显示两张我们完全看不懂的图片

enter image description here

创建帧缓冲区:

os.system

要将电影帧缓冲区复制到常规帧缓冲区中:

 glGenFramebuffers(1,&fbo);
 glBindFramebuffer(GL_FRAMEBUFFER,fbo);
 glGenTextures(1,&texture);
 glBindTexture(GL_TEXTURE_2D,texture);
 glTexImage2D(GL_TEXTURE_2D,GL_RGB,drawWidth,drawHeight,GL_UNSIGNED_BYTE,nullptr);
 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
 glFramebufferTexture2D(GL_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_TEXTURE_2D,texture,0);
 glBindTexture(GL_TEXTURE_2D,0);
  glBindFramebuffer(GL_FRAMEBUFFER,0);

解决方法

从 mpv C API 头文件的浏览来看,是的。 render.h 表示您可以使用渲染属性来更改视频的绘制位置、缩放方式,甚至可以根据需要进行裁剪。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。