我正在尝试创建一个Chrome扩展程序,用于捕获活动选项卡中的音频,并将其发送到另一台服务器或通过URL进行访问。
我正在使用chrome.tabCapture.capture
API,并成功地获取了选项卡音频的MediaStream
,但是之后我不知道该怎么做。
Chrome文档中没有关于MediaStreams的内容,因此我查看了一些文档这里,并尝试调试JavaScript以查看有哪些可用方法,但找不到将MediaStream发送到其他位置的方法。
我正在尝试创建一个Chrome扩展程序,用于捕获活动选项卡中的音频,并将其发送到另一台服务器或通过URL进行访问。
我正在使用chrome.tabCapture.capture
API,并成功地获取了选项卡音频的MediaStream
,但是之后我不知道该怎么做。
Chrome文档中没有关于MediaStreams的内容,因此我查看了一些文档这里,并尝试调试JavaScript以查看有哪些可用方法,但找不到将MediaStream发送到其他位置的方法。
MediaRecorder
在JS中本地记录流。这里有一个演示链接,W3C规范在这里。startRecording
需要将window.stream
设置为MediaStream实例。// The nested try blocks will be simplified when Chrome 47 moves to Stable
var mediaRecorder;
var recordedBlobs;
window.stream = myMediaStreamInstance;
function startRecording() {
var options = {mimeType: 'video/webm', bitsPerSecond: 100000};
recordedBlobs = [];
try {
mediaRecorder = new MediaRecorder(window.stream, options);
} catch (e0) {
console.log('Unable to create MediaRecorder with options Object: ', e0);
try {
options = {mimeType: 'video/webm,codecs=vp9', bitsPerSecond: 100000};
mediaRecorder = new MediaRecorder(window.stream, options);
} catch (e1) {
console.log('Unable to create MediaRecorder with options Object: ', e1);
try {
options = 'video/vp8'; // Chrome 47
mediaRecorder = new MediaRecorder(window.stream, options);
} catch (e2) {
alert('MediaRecorder is not supported by this browser.\n\n' +
'Try Firefox 29 or later, or Chrome 47 or later, with Enable experimental Web Platform features enabled from chrome://flags.');
console.error('Exception while creating MediaRecorder:', e2);
return;
}
}
}
console.log('Created MediaRecorder', mediaRecorder, 'with options', options);
// do UI cleanup here
mediaRecorder.onstop = function() {/** stop */};
mediaRecorder.ondataavailable = function() {/** data avail */};
mediaRecorder.start(10); // collect 10ms of data
console.log('MediaRecorder started', mediaRecorder);
}