2015-05-30 8 views
1

Я использую getUserMedia, чтобы получить доступ к веб-камере. У меня есть функция, которая включать и выключать видео, выполнив следующие действия:Как я могу получить уведомление/событие при изменении mediaStreamTrack.enabled?

var videoTracks = this.stream.getVideoTracks(); 
    if (videoTracks.length === 0) { 
    trace('No local video available.'); 
    return; 
    } 

    trace('Toggling video mute state.'); 
    for (var i = 0; i < videoTracks.length; ++i) { 
    videoTracks[i].enabled = !videoTracks[i].enabled; 
    } 

    trace('Video ' + (videoTracks[0].enabled ? 'unmuted.' : 'muted.')); 

Как можно получить событие, когда значение enabled изменяется? Я пытался использовать Object.observe, но он не работает.

ответ

1

Насколько я могу судить, в настоящее время нет события, вызванного/обратного вызова, когда изменяется свойство enabled.

here От:

Кроме того, нет "onmuted" и "onunmuted" события определены или обжигают в нативной реализации WebRTC.

Вы могли бы построить этот механизм самостоятельно:

Имейте в виду, что вы отключение медиа-трек на местном уровне; он не будет запускать какое-либо событие на стороне целевых пользователей. Если вы отключили видеодорожку; то это приведет к «пустым видео» на стороне целевых пользователей.

Вы можете вручную запускать события типа «onmuted» или «onmediatrackdisabled» с помощью сокета, который использовался для сигнализации. Вы можете отправить/испускают сообщения типа:

yourSignalingSocket.send({ 
    isMediaStreamTrackDisabled: true, 
    mediaStreamLabel: stream.label 
}); 

Согласно spec это должно быть частью интерфейса MediaStreamTrack в конце концов:

onmute типа EventHandler,

Этот обработчик события типа mute, должны поддерживаться всеми объектами, реализующими интерфейс MediaStreamTrack.

Я попытался назначая функцию трека onmute в Chrome (43), но он никогда не получил колл (looks like this is not implemented yet).