Я пытаюсь записать звук через микрофон с помощью последней бета-версии Chrome (версия 21.0.1180.15). Кажется, что почти все, что нужно сделать, теперь реализовано в бета-версии Chrome. Я даже получаю доступ к микрофону. Хотя я не могу подключить поток с элементом audio
. Но, насколько я понимаю, это должно работать, если нет ошибки.
createMediaStreamSource()
еще не реализован. В качестве обходного пути я хочу использовать createMediaElementSource()
для маршрутизации звука с микрофона через приглушенный элемент audio
.
Используя приведенный ниже код, я получаю одно из этих двух сообщений об ошибке в консоли:
GET blob:file%3A///625fd498-f427-43d5-959b-3b49c6d53ab5 404 (не найдено)
or
Не разрешено загружать локальный ресурс: blob:null/8df582cc-b663-489b-bf49-1785226fc7b7
Ошибка вызвана этой строкой:
audio.src = window.webkitURL.createObjectURL(stream)
Что-то не так с этой строкой? Как подключить поток к источнику элемента audio
? Или это ошибка в Chrome, из-за которой невозможно создать URL-адрес объекта?
Код:
var context = null;
var elementSource = null;
function onError(e) {
if (e.code == 1) {
alert('User denied access to their camera');
} else {
alert('getUserMedia() not supported by your browser');
}
}
window.addEventListener('load', initAudio, false);
function initAudio() {
navigator.webkitGetUserMedia({audio:true}, function (stream) {
var audio = document.querySelector('#basic-stream');
audio.src = window.webkitURL.createObjectURL(stream);
audio.controls = true;
context = new webkitAudioContext();
elementSource = context.createMediaElementSource(audio);
elementSource.connect(context.destination);
}, onError);
}
<div>
audio id="basic-stream" class="audiostream" autoplay muted></audio>
</div>