zu erfassen Ich benutze GetUserMedia API, um Bildschirm zu erfassen und Audio (beide zusammen) von Chrome-Erweiterung aufzunehmen. Die API erfasst den Bildschirm, zeichnet das Video auf, erfasst jedoch nicht das Audio.getUserMedia api ist nicht in der Lage, Audio zusammen mit Video von Chrome-Erweiterung
Chrome-Version: 55
Gibt es Gründe, warum der Ton nicht erfasst wird. Gibt es irgendwelche Einschränkungen mit der API oder müssen wir irgendeine andere API verwenden, um Video + Audio zu erfassen? Hier finden Sie das Code-Snippet. (unter Code ist in background.js vorhanden)
(versucht, die Einschränkungen als Audio: True, Video: true, aber das hat nicht funktioniert. Es war ein Fehler. (Fehler - getUserMedia() fehlgeschlagen: [object NavigatorUserMediaError ]))
chrome.desktopCapture.chooseDesktopMedia(['screen','audio'],
function onAccessApproved(id) {
const constraints = { "video": {
mandatory: {
chromeMediaSource: 'desktop',
chromeMediaSourceId: id,
minWidth: 1280,
minHeight: 720,
maxWidth:1280,
maxHeight:720
}
}, "audio" : {
mandatory: {
chromeMediaSource: 'desktop',
chromeMediaSourceId: id}} };
navigator.mediaDevices.getUserMedia(constraints).then(gotMedia).catch(e => { console.error('getUserMedia() failed: ' + e);
});
function gotMedia(stream) {
theStream = stream;
var video = document.createElement('video');
video.src = URL.createObjectURL(stream);
video.srcObject = stream;
try {
recorder = new MediaRecorder(stream, {mimeType : "video/webm"});
} catch (e) {
console.error('Exception while creating MediaRecorder: ' + e);
return;
}
theRecorder = recorder;
recorder.ondataavailable =
(event) => { recordedChunks.push(event.data); };
recorder.start(100);
stream.getVideoTracks()[0].onended = function() {
download();
};
}
function download() {
theRecorder.stop();
theStream.getTracks().forEach(track => { track.stop(); });
var blob = new Blob(recordedChunks, {type: "video/webm"});
var url = URL.createObjectURL(blob);
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
a.href = url;
a.download = 'test.webm';
a.click();
// setTimeout() here is needed for Firefox.
setTimeout(function() { URL.revokeObjectURL(url); }, 100);
}
_ "Es wurde ein Fehler ausgegeben." _ Was ist der Fehler? – guest271314
Fehler: getUserMedia() fehlgeschlagen: [object NavigatorUserMediaError] – Anil
Ist das Protokoll 'https:'? – guest271314