chrome.desktopCapture 和 RecortRTC 无法使用扬声器 + 麦克风音频
Can't get speaker + microphone audio working with chrome.desktopCapture and RecortRTC
我正在尝试构建一个 chrome 扩展程序来捕获用户屏幕上的扬声器音频(计算机音频)和麦克风音频。使用 RecordRTC 中的示例,我将以下内容拼凑在一起,但是当我打开录制的 .webm
文件时,我根本听不到任何声音。
我还应该做些什么来获取音频吗?
下面是我的后台脚本的代码,删除了一些部分以使其更清晰。当有人点击开始录制按钮时,startRecording()
函数被调用。
const OPTIONS = {
type: 'video',
disableLogs: false,
mimeType: 'video/webm'
}
const captureUserMedia = callback => {
chrome.desktopCapture.chooseDesktopMedia(['screen', 'window', 'audio'], chromeMediaSourceId => {
const options = {
audio: {
mandatory: {
chromeMediaSource: 'desktop',
chromeMediaSourceId: chromeMediaSourceId,
echoCancellation: true
},
optional: []
},
video: {
mandatory: {
chromeMediaSource: 'desktop',
chromeMediaSourceId: chromeMediaSourceId
},
optional: []
}
};
navigator.mediaDevices.getUserMedia(options)
.then(callback)
.catch(err => new Error(err));
});
};
const startRecording = () => {
captureUserMedia(mediaStream => {
state.recordData = RecordRTC(mediaStream, OPTIONS);
state.mediaStream = mediaStream;
state.recordData.startRecording();
});
}
const stopRecording = () => {
state.recordData.stopRecording(function(videoURL) {
chrome.tabs.create({ url: 'show-video.html?video=' + videoURL });
});
state.mediaStream.getTracks().forEach(track => track.stop());
}
显然这不是错误,而是 MacOS 本身的问题。 Chrome 知道它但似乎没有任何修复它的计划:bugs.chromium.org/issue/603259
我正在尝试构建一个 chrome 扩展程序来捕获用户屏幕上的扬声器音频(计算机音频)和麦克风音频。使用 RecordRTC 中的示例,我将以下内容拼凑在一起,但是当我打开录制的 .webm
文件时,我根本听不到任何声音。
我还应该做些什么来获取音频吗?
下面是我的后台脚本的代码,删除了一些部分以使其更清晰。当有人点击开始录制按钮时,startRecording()
函数被调用。
const OPTIONS = {
type: 'video',
disableLogs: false,
mimeType: 'video/webm'
}
const captureUserMedia = callback => {
chrome.desktopCapture.chooseDesktopMedia(['screen', 'window', 'audio'], chromeMediaSourceId => {
const options = {
audio: {
mandatory: {
chromeMediaSource: 'desktop',
chromeMediaSourceId: chromeMediaSourceId,
echoCancellation: true
},
optional: []
},
video: {
mandatory: {
chromeMediaSource: 'desktop',
chromeMediaSourceId: chromeMediaSourceId
},
optional: []
}
};
navigator.mediaDevices.getUserMedia(options)
.then(callback)
.catch(err => new Error(err));
});
};
const startRecording = () => {
captureUserMedia(mediaStream => {
state.recordData = RecordRTC(mediaStream, OPTIONS);
state.mediaStream = mediaStream;
state.recordData.startRecording();
});
}
const stopRecording = () => {
state.recordData.stopRecording(function(videoURL) {
chrome.tabs.create({ url: 'show-video.html?video=' + videoURL });
});
state.mediaStream.getTracks().forEach(track => track.stop());
}
显然这不是错误,而是 MacOS 本身的问题。 Chrome 知道它但似乎没有任何修复它的计划:bugs.chromium.org/issue/603259