我想在我的webGL場景中使用流視頻作爲紋理,使用three.js和threex.videoTexture。交叉原點視頻工作HTML5但不是webgl
我明白阻塞交叉來源資源的原因,經過大量研究後,我設法通過在我的apache服務器中設置代理服務器設置來獲取html5視頻標籤:)。
然而,即使我可以看到視頻中的HTML5視頻標籤玩,當我申請了視頻中的WebGL紋理我得到以下錯誤:
Uncaught SecurityError: Failed to execute 'texImage2D' on 'WebGLRenderingContext': The video element contains cross-origin data, and may not be loaded.
我聽到的聲音視頻,但我沒有看到對象上的視頻。
正在工作的html5視頻標記沒有將crossorigin參數設置爲「匿名」,但它仍然有效。當我在webGL中使用的視頻元素上添加crossorigin參數時,我沒有收到錯誤信息,但我沒有聽到聲音,也沒有看到視頻
我真的很感激任何建議! TIA!
編輯: 這是我加入到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
這是我的htm5視頻標籤(工作):
<video id="video" src="http://localhost:8081/desktop.ogg" autoplay>
Your browser doesn't appear to support the HTML5 <code><video></code> element.
</video>
如果您通過Apache服務器提供視頻數據來提供服務,那麼數據不應該是跨源的。瀏覽器不知道Apache從哪裏獲取數據。這似乎是瀏覽器向原始數據源發出請求,而不是您的代理。 – JayC 2014-12-03 20:55:56
@JayC感謝您的評論,我編輯了我的問題以提供有關我的設置的更多信息。我正在使用VLC將視頻流到目的地localhost:8081/desktop.ogg,所以如果我沒有弄錯,我應該向那個目的地提出請求? – 2014-12-03 21:32:00
等一下,Apache運行的端口是什麼?你甚至使用代理?運行在與託管頁面不同的端口上的服務器將被視爲「跨域」。你確定你不應該有'