2016-03-29 7 views
0

Я пытаюсь записать медиапоток удаленного пользователя. Объект Media Stream, который передается от удаленного пользователя, похоже, очень похож на локальный объект Media Stream, созданный с помощью getUserMedia, однако при передаче этого в визуализатор Media Stream ничего не выводится (если я пропускаю локальный медиапоток, то визуализатор имеет вывод). Я могу слышать медиа-поток удаленного пользователя, поэтому я знаю, что что-то передается.Как записать удаленный webRTC MediaStream?

поток удаленного медиа выглядит как

active: true 
id: "Q7aYJkeOt5xhHJ53c3JVhr41scl6QQEib5lt" 
onactive: null 
onaddtrack: null 
onended:() 
oninactive: null 
onremovetrack: null 
__proto__: MediaStream 

и имеет звуковую дорожку

enabled: true 
id: "021f5032-a524-42ae-ad40-bf0798df89cd" 
kind: "audio" 
label: "021f5032-a524-42ae-ad40-bf0798df89cd" 
muted: false 
onended: null 
onmute: null 
onunmute: null 
readyState: "live" 
remote: true 
__proto__: MediaStreamTrack 

Местные СМИ Поток выглядит что-то вроде

active: true 
id: "fP3smf9D78yl9YXV8jZwGPkMNL2UkwrXc2sl" 
onactive: null 
onaddtrack: null 
onended:() 
oninactive: null 
onremovetrack: null 
__proto__: MediaStream 

с аудио дорожкой

enabled: true 
id: "32da421e-0a35-4fe4-b553-8a3206d244ec" 
kind: "audio" 
label: "Default" 
muted: false 
onended: null 
onmute: null 
onunmute: null 
readyState: "live" 
remote: false 
__proto__: MediaStreamTrack 

Единственная реальная разница, которую я вижу, - это удаленный флаг в звуковой дорожке.

ответ

1

После кода поддерживается начиная с Chrome 48:

peer.onaddstream = function(event) { 
    var stream = event.stream; 

    window.recorder = new MediaRecorder(stream, { 
     type: 'video/webm' 
    }); 

    recorder.start(99999999999999999); 
}; 

btnStopRecording.onclick = function() { 
    if (!window.recorder) return; 
    recorder.ondataavailable = function(event) { 
     var blob = event.data; 
     console.log(blob.size, blob); 
    }; 
    recorder.stop(); 
}; 

реализация кросс-браузер: https://github.com/streamproc/MediaStreamRecorder

+0

Я намерен использовать инфраструктуру записи на основе облака, такие как Twilio запись медиапотоков, главным образом, уменьшить нагрузку на клиентскую сторону. Я не вижу разницы между локальным медиапотоком и удаленным, кроме локального, можно визуализировать и записывать, тогда как пульт не может. Нужно ли мне разбирать объект Media Stream, или я могу использовать MediaStreamTrack и передать его в инфраструктуру записи? –

+0

@ muaz-khan [Chrome 49 является первым, кто поддерживает API MediaRecorder без флага] (https://github.com/addpipe/Media-Recorder-API-Demo). –