WebRTC:removeStream 协商后再重新addStream:安全吗?
WebRTC: removeStream and then re- addStream after negotiation: Safe?
建立 WebRTC 会话后,我想在某个时候停止向对等方发送流,稍后再恢复发送。
如果我调用 removeStream,它确实会停止发送数据。如果我随后调用 addStream(使用之前删除的流),它将恢复。太棒了!
但是,这样安全吗?或者我需要在删除后 re-negotiate/exchange SDP and/or 在重新添加之后?我在几个地方看到它提到在进行此类更改后需要重新协商 SDP,但我想知道在删除并重新添加相同流的这种简单情况下是否可以?
PS:以防万一有人想建议:我不想更改曲目的启用状态,因为我仍然需要本地流播放,即使它没有被发送到同行.
它仅适用于 Chrome,并且是 non-spec,因此它既不兼容网络也不兼容 future-proof。
Firefox 中的 spec has pivoted from streams to tracks, sporting addTrack
and removeTrack
instead of addStream
and removeStream
. As a result the latter 。
不幸的是,因为 Chrome 没有跟上,这意味着重新协商目前在不同的浏览器中以不同的方式工作。 It is possible不过要努力去做。
新模型在流和 RTCPeerConnection 中发送的内容之间有更清晰的分离。
与其重新协商,不如设置 track.enabled = false
是个好主意。您仍然可以通过 cloning 曲目播放视频的本地视图。
建立 WebRTC 会话后,我想在某个时候停止向对等方发送流,稍后再恢复发送。
如果我调用 removeStream,它确实会停止发送数据。如果我随后调用 addStream(使用之前删除的流),它将恢复。太棒了!
但是,这样安全吗?或者我需要在删除后 re-negotiate/exchange SDP and/or 在重新添加之后?我在几个地方看到它提到在进行此类更改后需要重新协商 SDP,但我想知道在删除并重新添加相同流的这种简单情况下是否可以?
PS:以防万一有人想建议:我不想更改曲目的启用状态,因为我仍然需要本地流播放,即使它没有被发送到同行.
它仅适用于 Chrome,并且是 non-spec,因此它既不兼容网络也不兼容 future-proof。
Firefox 中的 spec has pivoted from streams to tracks, sporting addTrack
and removeTrack
instead of addStream
and removeStream
. As a result the latter
不幸的是,因为 Chrome 没有跟上,这意味着重新协商目前在不同的浏览器中以不同的方式工作。 It is possible不过要努力去做。
新模型在流和 RTCPeerConnection 中发送的内容之间有更清晰的分离。
与其重新协商,不如设置 track.enabled = false
是个好主意。您仍然可以通过 cloning 曲目播放视频的本地视图。