Canvas + Video + Nginx截取跨域视频第一帧

1、同域情况:


同域时代码


页面效果

如上图,将待播放的视频存放于项目路径中,即同域情况下可正常播放,使用canvas的drawImage方法可成功截取视频第一帧;

2、跨域情况

(1)跨域描述

跨域:协议类型、域名、端口号三者有一不一致即为跨域,根据浏览器同源策略,跨域请求的返回结果会被浏览器拦截。根据canvas的安全规则,跨域资源也无法被输出。

(2)nginx静态资源服务器

通过nginx搭建一个静态资源服务器,将待播放视频存放至静态资源服务器中,从而导致跨域问题。


nginx静态资源配置

配置一下三个参数防止乱码以及展示资源大小、时间;

nginx静态资源配置

特别需要注意的是,使用alias配置静态资源地址时,路径需要以/结尾。


静态资源目录

访问静态资源地址,可看到放置其中的视频文件;

(3)跨域问题呈现


播放静态资源服务器中视频文件
页面效果

如上图,视频仍能正常加载播放,而通过canvas输出的图片则由于跨域限制而无法获取。

(4)跨域问题解决


video标签crossorigin属性添加
静态资源响应头配置

在video中添加属性crossorigin="*",同时在配置静态资源响应头中加入'Access-Control-Allow-Origin' '*';的配置即可;


展示效果

至此,问题解决;同理,使用其他服务器时只需在资源请求的响应头中添加上允许跨域的头部即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 视频参考:ajax跨域完全讲解 本文精华版:【综合】ajax跨域问题 什么是跨域问题 简单来讲,当前台调用后台,如...
    一颗语法糖阅读 1,140评论 2 8
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,828评论 1 45
  • 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实...
    Yaoxue9阅读 1,414评论 0 6
  • 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实...
    他方l阅读 1,141评论 0 2
  • 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实...
    HeroXin阅读 962评论 0 4

友情链接更多精彩内容