Я использую следующий код, чтобы попытаться записать WebRT C видео (поток, созданный с помощью вызова getUserMedia ()):
...
var OK_Proceed = 1; //indicate recording status, assume recording is possible
var recOptions = {mimeType: 'video/webm'}; //options for MediaRecorder
...
navigator.mediaDevices.getUserMedia({
audio: false,
video: true
})
.then(gotStream)
.catch(function(e) {
alert('getUserMedia() error: ' + e.name);
});
function gotStream(stream) {
console.log('Adding local stream.');
localStream = stream;
localVideo.srcObject = stream;
sendMessage('got user media');
//**initialize MediaRecorder
if (MediaRecorder.isTypeSupported('video/webm;codecs=vp9')) {
recOptions = {mimeType: 'video/webm; codecs=vp9'};
} else if (MediaRecorder.isTypeSupported('video/webm;codecs=vp8')) {
recOptions = {mimeType: 'video/webm; codecs=vp8'};
} else {
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);
OK_Proceed = -1; //indicate unable to record video chat session...
}
if (OK_Proceed === 1) {
mediaRecorder = new MediaRecorder(stream, recOptions);
//do other stuff related to recording...
} //OK_Proceed is "1"...recording is enabled
//**
}
Видео с моей веб-камеры действительно отображается в видео на странице HTML должным образом, однако я всегда получаю следующую ошибку = "getusermedia (): ReferenceError". Я использую последнюю версию Chrome для браузера. Эта ошибка сохраняется независимо от того, что я пытаюсь сделать, включая использование «try / catch» в качестве альтернативного способа установки параметров кода c. Код, который я использую, в основном взят непосредственно из онлайн-документации с открытым исходным кодом, относящейся к настройке MediaRecorder.
У кого-нибудь есть подсказка, почему я постоянно получаю эту 'ReferenceError' ...? Заранее благодарю вас.
ПРИМЕЧАНИЕ. Я знаю, что ошибка вызвана кодом «MediaRecorder», если я удалю его (весь код между примечаниями «// **»), ошибки не будет. Поскольку я не получаю предупреждающее сообщение браузера об использовании более поздних версий Chrome / FireFox, ошибка ДОЛЖНА быть вызвана следующей строкой: «mediaRecorder = new MediaRecorder (stream, recOptions);» ... однако я понятия не имею, почему ...?