从浏览器捕获系统声音
Capture system sound from browser
我正在尝试构建一个 Web 应用程序,它可以从 webrtc 调用中捕获本地和远程音频,但我无法录制远程音频(使用 recordRTC)。
我想知道我是否可以通过某种方式捕获系统声音。
有没有办法从浏览器中捕捉系统声音(不仅仅是麦克风)。也许延期?
在Chrome中chrome.desktopCapture
extension API can be used to capture the screen, which includes system audio (but only on Windows and Chrome OS and without plans for OS X or Linux)。例如
chrome.desktopCapture.chooseDesktopMedia([
'screen', 'window' // ('tab' is not supported; use chrome.tabCapture instead)
], function(streamId) {
navigator.webkitGetUserMedia({
audio: {
mandatory: {
chromeMediaSource: 'system',
chromeMediaSourceId: streamId
}
},
video: false, // We only want audio for now.
}, function(stream) {
// Do what you want with this MediaStream.
}, function(error) {
// Handle error
});
});
我不确定 Firefox 是否可以捕获系统声音,但至少它能够捕获一些输出 (tab/window/browser/OS?)。
首先,您需要访问 about:config
并将 media.getusermedia.audiocapture.enabled
设置为 true
(这可以通过 Firefox 插件自动完成)。然后可以抓流如下:
navigator.mozGetUserMedia({
audio: {
mediaSource: 'audioCapture'
},
video: false, // Just being explicit, we only want audio for now
}, function(stream) {
// Do what you want with this MediaStream.
}, function(error) {
// Handle error
});
这是在 Firefox 42 中实现的,位于 https://bugzilla.mozilla.org/show_bug.cgi?id=1156472
新 Screen Capture API 可以做到这一点,但浏览器支持仍然有限。
有关详细信息,请参阅 above-linked MDN 页面中的“浏览器兼容性”部分。一些浏览器目前还不支持音频捕获,而另一些浏览器目前只允许从特定选项卡捕获音频,而不是整个操作系统。
示例代码:
videoElem.srcObject = await navigator.mediaDevices.getDisplayMedia({audio:true, video:true});
我正在尝试构建一个 Web 应用程序,它可以从 webrtc 调用中捕获本地和远程音频,但我无法录制远程音频(使用 recordRTC)。 我想知道我是否可以通过某种方式捕获系统声音。
有没有办法从浏览器中捕捉系统声音(不仅仅是麦克风)。也许延期?
在Chrome中chrome.desktopCapture
extension API can be used to capture the screen, which includes system audio (but only on Windows and Chrome OS and without plans for OS X or Linux)。例如
chrome.desktopCapture.chooseDesktopMedia([
'screen', 'window' // ('tab' is not supported; use chrome.tabCapture instead)
], function(streamId) {
navigator.webkitGetUserMedia({
audio: {
mandatory: {
chromeMediaSource: 'system',
chromeMediaSourceId: streamId
}
},
video: false, // We only want audio for now.
}, function(stream) {
// Do what you want with this MediaStream.
}, function(error) {
// Handle error
});
});
我不确定 Firefox 是否可以捕获系统声音,但至少它能够捕获一些输出 (tab/window/browser/OS?)。
首先,您需要访问 about:config
并将 media.getusermedia.audiocapture.enabled
设置为 true
(这可以通过 Firefox 插件自动完成)。然后可以抓流如下:
navigator.mozGetUserMedia({
audio: {
mediaSource: 'audioCapture'
},
video: false, // Just being explicit, we only want audio for now
}, function(stream) {
// Do what you want with this MediaStream.
}, function(error) {
// Handle error
});
这是在 Firefox 42 中实现的,位于 https://bugzilla.mozilla.org/show_bug.cgi?id=1156472
新 Screen Capture API 可以做到这一点,但浏览器支持仍然有限。
有关详细信息,请参阅 above-linked MDN 页面中的“浏览器兼容性”部分。一些浏览器目前还不支持音频捕获,而另一些浏览器目前只允许从特定选项卡捕获音频,而不是整个操作系统。
示例代码:
videoElem.srcObject = await navigator.mediaDevices.getDisplayMedia({audio:true, video:true});