如何解决如何从 mpv 电影绘制到 OpenGL
我们可以使用 mpv 库在 OpenGL 窗口的左下角进行绘制。虽然 mpv 似乎能够绘制任意宽度和高度,但我们发现绘制到另一个位置的唯一方法是写入另一个帧缓冲区,但随后我们必须将第二个帧缓冲区 blit 到第一个。
有没有办法告诉 mpv 将 OpenGL 绘制到 (x,y,w,h) 上?
此外,当我们复制它多次崩溃时,然后突然开始工作,这很奇怪。即使它工作,它也会显示两张我们完全看不懂的图片。
创建帧缓冲区:
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 举报,一经查实,本站将立刻删除。