2013-08-05 23 views
0

我目前使用的是Client.stopMediaSessions()。它是否正確?根據我在文檔中閱讀的內容,並在示例中看到,這似乎是正確的做法。在vLine中掛斷視頻電話的正確方法是什麼?

這應該停止本地和遠程流,正確?

當調用stopMediaSessions()時會觸發什麼事件?從我的日誌中,似乎並沒有調用mediaStream:end的處理程序。它應該是?或者是enterState:closed唯一被解僱的事件?還是被解僱?

我的問題與去除DOM中的<video>元素有關 - 無論是遠程元素還是本地元素。在API ReferenceMediaStream的示例中,addStream()函數可處理mediaStream:startmediaStream:end事件。但是,如果使用它來添加本地和遠程流,則不能指望mediaStream:end處理程序中的mediaElement變量,因爲沒有將該變量與流關聯起來,因此您不知道要在哪個元素上執行removeChild()

無論如何,這不是什麼大不了的事情。我只是好奇當stopMediaSessions()被調用時事件的順序是什麼;從那我可以確保正確的<video>元素被刪除。

但總的來說,我確實想知道在一組參與者之間掛斷/終止視頻通話的正確方法。

非常感謝!

回答

1

client.stopMediaSessions()將停止所有vline.MediaSessions對於給定的vline.Client,所以是的,它會「掛斷」的電話。

要與特定用戶(vline.Person)「掛斷」音頻/視頻會話,您可以使用Person.stopMedia()

一個vline.MediaSession可以有本地和遠程vline.MediaStreams與之相關聯,因此通過停止vline.MediaSession你會隱含停止與它相關聯的所有vline.MediaStreams

由於client.stopMediaSessions()被停止所有vline.MediaSession的(因此vline.MediaStream的),你應該就獲得了mediaStream:end事件(從vline.MediaStream)和enterState:closed事件(從vline.MediaSession)。

要添加和刪除<video>元素並對它們進行跟蹤,我會建議做一些類似於vLine shell example的操作。它採用獨特的MediaStream ID來命名它把<video>元素在div

mediaSession.on('mediaSession:addLocalStream mediaSession:addRemoteStream', function(event) { 
    var stream = event.stream; 

    // guard against adding a local video stream twice if it is attached to two media sessions 
    if ($('#' + stream.getId()).length) { 
    return; 
    } 

    $('#video-wrapper').append(elem); 
}); 

// add event handler for remove stream events 
mediaSession.on('mediaSession:removeLocalStream mediaSession:removeRemoteStream', function(event) { 
    $('#' + event.stream.getId()).remove(); 
}); 
+0

湯姆,一個點評:'的getId()'方法沒有任何地方'API reference'定義,所以沒有除非你實施(或仔細研究)這些例子,否則就會了解它的方式。這聽起來像一個有用的函數,所以也許在某些時候你可以在你的'API Reference'中添加一些doco。 – Lew

+0

@Lew文檔現在應該[更新](https://vline.com/developer/docs/vline.js/vline.MediaStream#getId) –

相關問題