Javascript 使用html5但不使用webgl的跨源视频

Javascript 使用html5但不使用webgl的跨源视频,javascript,html,video,video-streaming,webgl,Javascript,Html,Video,Video Streaming,Webgl,我正在尝试使用three.js和threex.videoTexture在我的webGL场景中使用流式视频作为纹理 我理解阻止跨源资源的原因,经过大量研究,我成功地在html5视频标签中实现了这一点:在apache服务器中设置代理设置 然而,尽管我可以在Html5视频标签中看到视频播放,但当我在webGl中将视频作为纹理应用时,我得到以下错误: Uncaught SecurityError: Failed to execute 'texImage2D' on 'WebGLRenderingCont

我正在尝试使用three.js和threex.videoTexture在我的webGL场景中使用流式视频作为纹理

我理解阻止跨源资源的原因,经过大量研究,我成功地在html5视频标签中实现了这一点:在apache服务器中设置代理设置

然而,尽管我可以在Html5视频标签中看到视频播放,但当我在webGl中将视频作为纹理应用时,我得到以下错误:

Uncaught SecurityError: Failed to execute 'texImage2D' on 'WebGLRenderingContext': The video element contains cross-origin data, and may not be loaded.
我确实听到了视频的声音,但我没有看到物体上的视频

工作的html5视频标签没有将crossorigin参数设置为anonymous,但仍然有效。当我在webGL中使用的视频元素上添加crossorigin参数时,我没有收到错误,但我听不到声音,也看不到视频

如果有任何建议,我将不胜感激!蒂亚

我使用的代码取自本教程:

编辑: 这是我添加到httpd.conf中用于配置代理设置的内容:

ProxyRequests On
ProxyVia On
ProxyPreserveHost On

<Proxy *>
    Order allow,deny
    Allow from all
</Proxy>

# VLC server stream

ProxyPass /desktop.ogg http://localhost:8081/desktop.ogg
ProxyPassReverse /desktop.ogg http://localhost:8081/desktop.ogg

根据以上评论,我将提出以下建议

确保您实际使用的是代理。VLC正在传输到8081。您需要确保它是通过Apache代理的,您声明Apache正在端口8888上运行。 由于代理使您的视频具有相同的来源,因此您不必使用完整的uri来引用它;你只需要准确地提到你需要的东西。这就是代理的目的,使资源看起来来自同一个来源。同一台机器上两个不同端口上的HTTP服务器仍然不是同一来源。 以下是修改后的代码:

 <video id="video" src="/desktop.ogg" autoplay>  
    Your browser doesn't appear to support the HTML5 <code>&lt;video&gt;</code> element.  
 </video> 
我不能说这些代理设置是否正确。一些Apache专家将不得不对此发表评论。我只是相信你的话,那是设置代理的正确方式,因为我不知道。
如果您是通过Apache服务器提供视频数据,那么数据不应该是跨源的。浏览器不知道Apache从何处获取数据。似乎是浏览器向原始数据源而不是您的代理发出请求。@JayC谢谢您的评论,我已编辑了我的问题,以提供有关我的设置的更多信息。我正在使用VLC将视频流传输到目标localhost:8081/desktop.ogg,因此如果我没有弄错的话,我应该向该目标发出请求?等等,Apache运行在哪个端口?你在用代理吗?如果服务器运行在不同的端口上,而不是承载页面的端口上,则该服务器将被视为跨域服务器。你确定你不应该这样做吗?假设您运行的是Apache,而不是某个开发环境版本。。。如果没有,您需要使用它的端口,而不是端口VLC设置,如果我记得VLC是做什么的……apache服务器正在端口8888上运行,不是吗;我的错,我的错。我的意思是交叉起源。但是,如果您的Apache在8888端口上运行,那么您显然没有使用代理;您试图直接从流式视频中访问资源。那不是你想要的。你是对的,我没有通过代理。谢谢你的帮助!
 <video id="video" src="/desktop.ogg" autoplay>  
    Your browser doesn't appear to support the HTML5 <code>&lt;video&gt;</code> element.  
 </video>