我想在WebGL中为远程视频分配纹理。由于视频源与文档源不同,我将Access-Control-Allow-Origin:*添加到视频源的http头。另外,我通过使用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中访问远程视频有任何解决方法吗?任何帮助是极大的赞赏!
谢谢!