javascript - HTML5 相机在 Tomcat7 中无法工作

标签 javascript html camera

我有一个 angular2 项目,我在其中添加了 html5 相机访问权限。 我使用 Angular CLI (ngserve) 启动我的 angular2 项目 这将从测试时的“ng 服务”Web 容器开始。 当我访问相机时,浏览器询问我是否要访问相机。 允许浏览器访问相机后一切正常。

private showCam() {
    this.showCamScreen = true;
    // 1. Casting necessary because TypeScript doesn't
    // know object Type 'navigator';
    const nav = <any>navigator;

    // 2. Adjust for all browsers
    nav.getUserMedia = nav.getUserMedia || nav.mozGetUserMedia || nav.webkitGetUserMedia;

    // 3. Trigger lifecycle tick (ugly, but works - see (better) Promise example below)
    setTimeout(() => { }, 100);

    // 4. Get stream from webcam
    nav.getUserMedia(
      { video: { width: 1280, height: 720 } },
      (stream) => {
        const webcamUrl = URL.createObjectURL(stream);

        // 4a. Tell Angular the stream comes from a trusted source
        this.videosrc = this.sanitizer.bypassSecurityTrustUrl(webcamUrl);

        // 4b. Start video element to stream automatically from webcam.
        this.element.nativeElement.querySelector('video').autoplay = true;
      },
      (err) => console.log(err));


    // OR: other method, see http://stackoverflow.com/questions/32645724/angular2-cant-set-video-src-from-navigator-getusermedia for credits
    const promise = new Promise<string>((resolve, reject) => {
      nav.getUserMedia({ video: true }, (stream) => {
        resolve(stream);
      }, (err) => reject(err));
    }).then((stream) => {
      const webcamUrl = URL.createObjectURL(stream);
      this.videosrc = this.sanitizer.bypassSecurityTrustResourceUrl(webcamUrl);
      // for example: type logic here to send stream to your  server and (re)distribute to
      // other connected clients.
    }).catch((error) => {
      console.log(error);
    });
  }

如果我将代码复制到我们使用 Tomcat7 WebContainer 的目标环境,网络浏览器不会要求我访问摄像头?我在那里通过“t00-lhoist01:8083/GF”访问该应用程序。为什么摄像头在 tomcat 上无法工作,但如果我使用 AngularCLI 容器,它就可以正常工作?

有人可以帮助我们解决这个问题吗?我错过了什么吗?

最佳答案

我找到了解决方案。问题是,如果不是 https 连接,chrome 不会要求访问相机。如果您使用本地主机执行此操作,则浏览器将要求访问相机,即使它不是 https 连接。

请记住,IE、Chrome 或 Firefox 的行为有所不同。

例如,Firefox 会要求通过 http 连接访问摄像头,但您无法保存您的决定。

问候

关于javascript - HTML5 相机在 Tomcat7 中无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46660124/

相关文章:

javascript - 如何使在控件中输入的值出现在查询字符串中的单引号内

android - 如何使用 PhoneGap 拍摄应用内照片?

android - 显示录音相机预览的 MediaRecorder

iphone - 如何在 iPhone 中使用 avFoundation 拍摄方形照片,就像在 Instagram 应用程序中一样?

javascript - 从 axios 返回数据而不是 promise

javascript - 每当我尝试使用 useContext Hook 使用分派(dispatch)时,我都会收到 "Uncaught TypeError: dispatch is not a function"

javascript - 如何从 Odoo 8 的前端删除 Powered by Odoo #1 Open Source eCommerce 页脚?

php - 我想使用 php 在下拉菜单中的给定条件下访问 mysql 数据库表

html - 试图在 2 个子 div 之间覆盖 100% 的父 div 宽度(不包括填充)。

javascript - JavaScript 中的回调函数如何接收其参数值