首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >applyConstraints()、getCapabilities()在Electron for Windows上不工作

applyConstraints()、getCapabilities()在Electron for Windows上不工作
EN

Stack Overflow用户
提问于 2018-07-11 05:41:42
回答 1查看 1K关注 0票数 0

无法在电子(v2.0.4)上构建的相机应用程序上使用getCapabilities()applyConstraints()获取或应用任何约束。getCapabilities()返回一个空对象。

然而,我能够在Ubuntu 16.04和Raspbian上获得并应用约束,使用相同的摄像头,相同版本的Electron。当我直接在Windows的chrome上运行index.html时,它也运行得很好。

在Electron for Windows上是否还不支持它,或者我是不是遗漏了什么?

要运行该应用程序,请将以下文件放入一个目录中,在该目录中运行npm installnpm start

package.json

代码语言:javascript
复制
    {
      "name": "webrtc",
      "version": "1.0.1",
      "description": "WebRTC",
      "main": "main.js",
      "scripts": {
        "start": "electron ."
      },
      "devDependencies": {
        "electron": "latest"
      }
    }

main.js

代码语言:javascript
复制
    "use strict";

    const electron = require("electron");
    const app = electron.app;
    const BrowserWindow = electron.BrowserWindow;

    const path = require("path");
    const url = require("url");

    let mainWindow;

    function createWindow()
    {
      mainWindow = new BrowserWindow({width: 1920, height: 1080});
      mainWindow.loadURL(url.format({
        pathname: path.join(__dirname, "index.html"),
        protocol: "file:",
        slashes: true
      }));

      mainWindow.webContents.openDevTools();

      mainWindow.on("closed", function(){
        mainWindow = null
      });
    }

    app.on("ready", createWindow);

    app.on("window-all-closed", function(){
      app.quit();
    });

    app.on("activate", function(){
      if(mainWindow == null)
      {
        createWindow()
      }
    });

getCamera.js

代码语言:javascript
复制
    "use strict";

    const video = document.getElementById("video");
    var constraints = window.constraints = {
      audio: false,
      video: {
        width: {ideal: 1280},
        height: {ideal: 720},
      },
    };

    navigator.mediaDevices.getUserMedia(constraints).then(videoSetup).catch(errorHandling);

    function videoSetup(stream)
    {
      const track = stream.getVideoTracks()[0];
      console.log("Device: " + track.label);
      window.stream = stream;
      video.srcObject = stream;
      setTimeout(function(){
        // track.applyConstraints({video: {width: 1920, height: 1080}});
        var capabilities = track.getCapabilities();
        console.log("Capabilities: " + JSON.stringify(capabilities));
      }, 2000);
    }

    function errorHandling(error)
    {
      console.log("Error: " + error);
    }

index.html

代码语言:javascript
复制
    <!DOCTYPE html>
    <html>

    <head>
      <meta charset="UTF-8">
      <title>Camera Test</title>
    </head>

    <body>
      <div>
        <video id="video" playsinline autoplay width=100%></video>
      </div>
    </body>

    <script src="getCamera.js"></script>
    </html>

电子视窗上的getCapabilities()输出:功能:{}

Chrome Windows/ Ubuntu/ Raspbian上的getCapabilities()输出:

能力:{“aspectRatio”:{“最大”:2304,“最小”:0.0006510416666666666},“亮度”:{},"colorTemperature":{},“对比度”:{},"deviceId":"b054cbcea100ef88ffbe463a2caee133a5fd10b11915d0e2c5a230fdbf4776b9","exposureCompensation":{},“exposureMode”:“连续”,“手动”,"facingMode":[],“frameRate”:{“最大”:60.000240325927734,“最小”:1},“高度”:{“最大”:1536,“最小”:1},“饱和度”:{},“锐度”:{},“whiteBalanceMode”:“连续”,“手动”,“宽度”:{“最大值”:2304,“最小值”:1},“缩放”:{}}

EN

回答 1

Stack Overflow用户

发布于 2018-07-11 08:34:32

Electron2.0.4基于Chrome61(查看navigator.userAgent),在Chrome66附带的getCapabilities上没有一个有意义的实现。据我所知,applyConstraints是Chrome63自带的,尽管发行说明中没有提到这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51274289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档