video视频播放截图, 跨域问题

“SecurityError: Failed to execute ‘toDataURL’ on ‘HTMLCanvasElement’: Tainted canvases may not be exported.”
翻译: 执行“toDataURL”:可能无法导出受污染的画布

这就是出现跨域问题了, 在video标签加上crossOrigin="Anonymous"就ok了

<!-- html -->
<video id="videoPlayer"
       controls="controls"
       crossOrigin="Anonymous">
   <source src="http://192.168.0.70:8909/video/03/1504633439555.mp4"
           type="video/mp4" />
   <!-- <source src="../assets/测试视频.mp4"
                type="video/mp4" /> -->
</video>
// js
const canvas = document.createElement('canvas') //  创建canvas 用来截图
      let video = document.getElementById('videoPlayer')
      canvas.getContext('2d').drawImage(video, 0, 0, video.clientWidth, video.clientHeight)
      let b64 = canvas.toDataURL('image/png')
      console.log('b64', b64) // 转换后的base64
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
video.js是一个开源的HTML5视频播放器库,可以在网页上播放各种格式的视频。当我们在本地测试播放视频源时,有时候会遇到跨域的问题。 跨域是由浏览器的同源策略所导致的。同源策略要求浏览器只能请求同源下的资源,即域名、端口和协议必须完全一致。而当我们在本地测试时,视频源与当前网页的域名、端口和协议可能不一致,导致浏览器拒绝请求该资源。 要解决这个问题,可以在前端自己处理跨域。一种常见的方法是通过服务器端代理来解决跨域。 具体步骤如下: 1. 在本地搭建一个简单的服务器,可以使用Node.js的http模块或其他服务器技术。 2. 将视频源请求转发到该本地服务器上。 3. 在本地服务器上进行跨域请求,并将请求到的视频源返回给前端。 4. 在前端使用video.js播放返回的视频源。 这样做的原理是,由于浏览器对服务端的请求没有跨域限制,而本地服务器将视频源的请求转发到目标服务器上,然后将返回结果返回给浏览器,这样就绕过了浏览器的同源策略,实现了跨域请求。 需要注意的是,这种方式只适用于本地测试阶段,如果将网站部署到真实环境中,应该使用真实的服务器来处理跨域请求,而不是通过本地服务器来解决跨域问题。 总结起来,video.js本地测试播放视频源前端自己处理跨域的方法是通过搭建一个本地服务器,并将视频源请求转发到该服务器上,然后在本地服务器上进行跨域请求,并将请求到的视频源返回给前端进行播放。这样就能够解决跨域的问题。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值