我在使用Chrome浏览器获取视频截图时遇到问题,我已经用尽了所有互联网和所有Stackoverflow的答案;没有运气。
无论我尝试什么,当我尝试使用canvas
元素截取不同域上的视频截图,甚至只是一个不同的端口时,我最终得到{{{ 1}}错误。
这是我的设置:
网络应用网址
http://client.myapp.com/home.html
CDN网址(我已尝试过两种方式)
http://client.myapp.com:8181/somevideo.mp4
http://cdn.myapp.com/somevideo.mp4
标题从CDN发回MP4:
Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.
我有:
Accept-Ranges:bytes
Access-Control-Allow-Origin:*
Access-Control-Expose-Headers:x-ms-request-id,Server,x-ms-version,Content-Type,Last-Modified,ETag,x-ms-lease-status,x-ms-lease-state,x-ms-blob-type,Accept-Ranges,Content-Length,Date,Transfer-Encoding
Content-Length:5253832
Content-Range:bytes 48-5253879/5253880
Content-Type:video/mp4
Date:Sat, 06 Feb 2016 17:24:05 GMT
ETag:"0x8D32E3EDB17EC00"
Last-Modified:Fri, 05 Feb 2016 15:13:08 GMT
Server:Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-blob-type:BlockBlob
x-ms-lease-state:available
x-ms-lease-status:unlocked
x-ms-request-id:88d3aaef-0629-4316-995f-021aa0153c32
x-ms-version:2015-04-05
,但这只会导致视频无法加载crossOrigin="anonymous"
回复Access-Control-Allow-Origin
(如上所述)然而,仍然是爆炸性的错误。
修改
添加了代码:
*
请帮忙。
答案 0 :(得分:11)
我已经回答了我自己的问题。
我现在感到非常头疼。
问题在于HTML5视频crossorigin / CORS规范的细微规范。
我只在Chrome和Edge中测试过,但在撰写本文时,您需要了解以下内容:
如果设置了crossOrigin
,则加载HTML5视频将失败,但您的视频是从 80 和 使用https
不:
这将失败
http://www.myapp.com/player.html的客户:
<video crossOrigin="anonymous" src="http://cdn.myapp.com:81/video.mp4"></video>
这将成功
http://www.myapp.com/player.html的客户:
<video crossOrigin="anonymous" src="https://cdn.myapp.com:81/video.mp4"></video>
getImageData()
和toDataURL()
将被安全阻止,除非:
anonymous
或use-credentials
(as defined here)。如果你这样做太晚了,它仍会失败。最后,如果您要在javascript中设置crossOrigin
,请确保为javascript属性使用正确的大小写:crossOrigin
(不是crossorigin
)