如何关闭 WebRTC 中的 peerConnection

4

WebRtc示例

如果我点击“呼叫”按钮,将在屏幕上方显示“允许/拒绝”菜单。当我点击“允许”时,Chrome会在标题栏中显示红色圆圈,表示麦克风正在使用。其他Chrome标签中的所有声音都会被静音(例如,YouTube视频)。

当我点击“挂断”按钮时,红色圆圈并没有消失,第二个标签中的YouTube视频仍然被静音。我必须按F5键才能恢复之前的状态。

是否有PeerConnection来停止通话并停止麦克风录制?


链接已失效。 - Ali Bahrami
1个回答

6
是的,“红灯”仍然亮着的原因是通过getusermedia收集到的媒体流对象中的媒体跟踪(在该特定页面上称为localstream)仍在播放/活动状态。
要关闭媒体流并从而释放对本地媒体输入的任何持有,只需调用localstream.stop(),它将结束流并停止访问本地媒体输入。这将停止所有关联的媒体跟踪。
您还可以通过调用从mediaStream中获取的个别媒体跟踪(从getVideoTracksgetAudioTracks中抓取)上的stop()来完成此操作。
至于其他页面/应用程序中关闭其他音频的问题,请参阅此crbug处理该问题。 附注:如果媒体通过peerConnection传输,则由于mediaStream更改,您可能需要重新协商连接。

有趣的是 - 如果我停止本地流,我可以看到“红灯”被移除了,但是在另一个Chrome标签中的YouTube视频仍然被静音。只有按F5才能解决。 - user12384512

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接