getUserMedia APIを使用して、画面をキャプチャし、オーディオを(両方とも)クロム拡張から取得しています。 apiは画面をキャプチャし、ビデオを記録しますが、オーディオはキャプチャしません。getUserMedia APIはクロム拡張子のビデオと共にオーディオをキャプチャできません
クロムバージョン:55
音声がキャプチャされていない理由。 apiに制限がありますか、ビデオ+オーディオをキャプチャするために他のAPIを使用する必要がありますか? 以下のコードスニペットをご覧ください。 (下のコードはbackground.jsにあります)
(audio:true、video:trueのように制約を渡してみましたが、これはエラーを投げていました(エラー - getUserMedia()は失敗しました:[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);
}
_「それはエラーを投げていました」_エラーは何ですか? – guest271314
エラー:getUserMedia()に失敗しました:[オブジェクトNavigatorUserMediaError] – Anil
プロトコル 'https:'ですか? – guest271314