Chrome Extension Capture Audio Tab

I am trying to create a Chrome extension that captures sound from an active tab and sends it to another server or makes it accessible through a URL.

I use the chrome.tabCapture.capture API and can successfully get the MediaStream sound of the tab, but I don't know what to do after that.

Chrome docs have nothing about MediaStreams, so I looked at the documentation here and played with the JS debugger to find out what methods are available, but cannot find a way to send MediaStream anywhere.

+6
source share
1 answer

Now you can record the stream locally in JS using MediaRecorder . There is a demo here , and the w3c specification is here

The startRecording method in the demo requires window.stream be installed in the MediaStream instance.

 // 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); } 
+2
source

Source: https://habr.com/ru/post/970064/


All Articles