Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome扩展捕获选项卡音频_Javascript_Html_Google Chrome Extension_Webrtc - Fatal编程技术网

Javascript Chrome扩展捕获选项卡音频

Javascript Chrome扩展捕获选项卡音频,javascript,html,google-chrome-extension,webrtc,Javascript,Html,Google Chrome Extension,Webrtc,我正在尝试创建一个Chrome扩展,它从活动选项卡捕获音频,并将其发送到另一台服务器或通过URL访问 我正在使用,可以成功地获取选项卡音频的MediaStream,但我不知道之后该怎么办 Chrome文档中没有关于MediaStreams的内容,因此我查阅了一些文档并使用JS调试器查看了可用的方法,但找不到将MediaStream发送到某处的方法。现在可以使用MediaRecorder在JS中本地录制流。有一个演示,w3c规范是 演示中的方法startRecording要求将window.str

我正在尝试创建一个Chrome扩展,它从活动选项卡捕获音频,并将其发送到另一台服务器或通过URL访问

我正在使用,可以成功地获取选项卡音频的
MediaStream
,但我不知道之后该怎么办


Chrome文档中没有关于MediaStreams的内容,因此我查阅了一些文档并使用JS调试器查看了可用的方法,但找不到将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);
}

  • Mozilla开发者网络可能是您的朋友:您可以通过网络发送音频。您可以在捕获时指定音频,并仅为您的SDP选项发送。对不起,我应该提到所有这些都是在本地网络上进行的,因此web rtc似乎有些过分。有没有简单的方法可以让流通过本地URL或其他什么东西可用@bwtwebrtc仍然非常简单。但是,您可能有一种方法可以简单地发布所创建的流blob,我只是不确定.MediaStreamRecorder是如何被积极开发的,并且有一个实验性的实现。crbug.com/262211