我想将远程视频分配给 WebGL 中的纹理。由于视频源和文档源不同,所以我Access-Control-Allow-Origin:*
在视频源的http headers中添加了。此外,我通过使用为视频标签分配了一个匿名来源video.crossOrigin = '';
。有趣的是,跨域属性适用于图像,但不适用于视频标签。一旦将 WebGL 纹理分配给视频对象,javascript 就会抛出以下异常:
未捕获的错误:SECURITY_ERR:DOM 异常 18
这是重现此问题的 jsfiddle。本示例基于three.js的webgl_kinect示例:http: //jsfiddle.net/ZgeTU/2/
以下是相关部分:
// CROSS-ORIGIN VIDEO SOURCE
// REMOTE VIDEO SOURCE PROVIDES "Access-Control-Allow-Origin:*" HEADER
video.src =
'http://kammerl.de/threejs/three.js/examples/textures/kinect.webm';
// DEFINING ANONYMOUS ORIGIN
video.crossOrigin = '';
video.play();
稍后将视频标签分配给 Three.js 纹理:
texture = new THREE.Texture( video );
显然,在 webGL 中使用 crossOrigin 视频的这个问题已经有一段时间了,但我还没有找到任何更新:http: //jbuckley.ca/2012/02/cross-origin-video/
有谁知道这个问题的状态是什么?是否有任何解决方法可以访问 webGL 中的远程视频?任何帮助是极大的赞赏!
谢谢!