无法在电子(v2.0.4)上构建的相机应用程序上使用getCapabilities(),applyConstraints()获取或应用任何约束。getCapabilities()返回一个空对象。
然而,我能够在Ubuntu 16.04和Raspbian上获得并应用约束,使用相同的摄像头,相同版本的Electron。当我直接在Windows的chrome上运行index.html时,它也运行得很好。
在Electron for Windows上是否还不支持它,或者我是不是遗漏了什么?
要运行该应用程序,请将以下文件放入一个目录中,在该目录中运行npm install和npm 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>
电子视窗上的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},“缩放”:{}}
https://stackoverflow.com/questions/51274289
复制相似问题