2015-05-30 37 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接口的一部分:

EventHandler類型onmute,

此事件處理程序,靜音類型,必須由實現MediaStreamTrack接口的所有對象支持。

我試圖將其分配給軌道的onmute在Chrome(43)的功能,但它從來沒有得到所謂的(looks like this is not implemented yet)。

相關問題