Я пытаюсь получить аудиопоток, используя navigator.mediaDevices.getUserMedia. Это прекрасно работает в Firefox, к сожалению, не в Chrome. сделали это с помощью защищенной страницы (например, https), но Chome не реагирует на функцию «onAudioProcess».
в консоли, Firefox показывает фрагменты аудио, захваченные микрофоном. Но Chrome ничего не показывает.
У кого-нибудь есть идея? это было бы здорово.
рабочий пример jsfiddle можно показать здесь: https://jsfiddle.net/aminekassir/3fjxq7wr/2/
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
<input type="button" id="btn_001" value="Click" />
```html
```javascript
console.log(adapter.browserDetails.browser);
$(function () {
$('#btn_001').click(function () {
console.log('start recording');
startRecording();
});
});
const mediaConstraints = window.constraints = { audio: true, video: false };
const micBufferSize = 512;
var audioCtx;
function startRecording() {
if (typeof AudioContext === 'function') {
console.log('AudioContext defined');
audioCtx = new AudioContext();
} else if (typeof webkitAudioContext === 'function') {
console.log('webkitAudioContext defined');
audioCtx = new webkitAudioContext();
} else if (typeof mozAudioContext === 'function') {
console.log('mozAudioContext defined');
audioCtx = new mozAudioContext();
} else {
console.error('Web Audio not supported!');
}
console.log('audioCtx', audioCtx);
audioCtx.resume();
navigator.mediaDevices.getUserMedia(mediaConstraints).then(onMicrophoneStream).catch(onMicrophoneStreamError);
console.log('hasOwnProperty("createScriptProcessor")', window.AudioContext.prototype.hasOwnProperty('createScriptProcessor'));
function onMicrophoneStream(stream) {
console.log('onMicrophoneStream', stream);
let micStream = audioCtx.createMediaStreamSource(stream);
var scriptProcessorNode = audioCtx.createScriptProcessor(micBufferSize, 1, 1);
scriptProcessorNode.onaudioprocess = onAudioProcess;
micStream.connect(scriptProcessorNode);
}
function onMicrophoneStreamError(e) {
console.log('onMicrophoneStreamError', e);
}
function onAudioProcess(e) {
//console.log('onAudioProcess');
if (audioCtx.state === 'suspended') {
audioCtx.resume();
}
var micOutBuff = e.inputBuffer.getChannelData(0); // incoming microphone stream is Float32
console.log(micOutBuff);
}
}
```javascript