applyConstraint(),getCapability()不在Windows的电子上工作

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (89)

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

但是,我能够在Ubuntu 16.04和Raspbian上使用相同的相机,相同版本的Electron获得和应用约束。当我在Windows上直接在chrome上运行index.html时,它也可以正常工作。

它是不支持在Electron for Windows或我做错了什么?

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

package.json

    {
      "name": "webrtc",
      "version": "1.0.1",
      "description": "WebRTC",
      "main": "main.js",
      "scripts": {
        "start": "electron ."
      },
      "devDependencies": {
        "electron": "latest"
      }
    }

main.js

    "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

    "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

    <!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>

在Electron Windows上输出getCapabilities()

提问于
用户回答回答于

电子2.0.4基于Chrome 61(检查navigator.userAgent),它在Chrome 66中提供的getCapabilities上没有有意义的实现。Chrome 63中提供了applyConstraints,即使发行说明没有提到它。

所属标签

可能回答问题的人

  • 西风

    renzha.net · 站长 (已认证)

    7 粉丝1 提问12 回答
  • 四无君

    0 粉丝0 提问3 回答
  • HKC

    红客学院 · 创始人 (已认证)

    26 粉丝7 提问2 回答
  • o o

    3 粉丝490 提问2 回答

扫码关注云+社区

领取腾讯云代金券