我目前正在使用Client.stopMediaSessions()
。它是否正确?根据我在文档中阅读的内容,并在示例中看到,这似乎是正确的方法。
这应该停止本地和远程流,对吗?
调用stopMediaSessions()
时会触发哪些事件?从我的日志中,似乎没有调用mediaStream:end
的处理程序。应该是吗?或enterState:closed
是唯一被解雇的事件?或者都被解雇了?
我的问题与从DOM中删除<video>
元素有关 - 包括远程和本地元素。在MediaStream
中API Reference
的示例中,addStream()
函数处理mediaStream:start
和mediaStream:end
个事件。但是,当使用它来添加本地和远程流时,您不能指望mediaElement
处理程序中的mediaStream:end
变量,因为没有任何东西将该var与流绑定,因此您不知道哪个要执行removeChild()
的元素。
无论如何,这不是什么大不了的事。我很好奇当调用stopMediaSessions()
时事件的顺序是什么;从那以后我可以确保删除正确的<video>
元素。
但总的来说,我确实想知道在一组参与者中挂断/终止视频通话的正确方法。
非常感谢!
答案 0 :(得分: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
个事件(来自{{1} }}和vline.MediaStream
事件(来自enterState:closed
)。
为了添加和删除vline.MediaSession
元素并跟踪它们,我建议做类似于vLine shell example的操作。它使用唯一的MediaStream ID命名它将<video>
元素放入的div
:
<video>