webrtc视频流停止共享

时间:2014-02-01 11:41:58

标签: webrtc

我创建了基于webrtc的视频聊天suing peerjs。

使用control:

创建本地和远程视频元素

本地: 'video id = [local_peer_id] autoplay =“true” controls =“true”>'

远程: 和 'video id = [remote_peer_id] autoplay =“true” controls =“true ”>'

现在在视频聊天期间,如果本地用户静音auido远程用户听不到任何声音并且其工作正常。

问题与视频有关。如果本地用户暂停他自己的视频,他可以看到视频暂停,但远程用户仍然可以看到他的视频。

另一方面,如果远程用户暂停他的视频,本地用户仍然可以看到他的视频。

任何人都告诉我们需要做些什么才能部署这种能力

“暂停”和“恢复”视频对两个同行都是实时的?

3 个答案:

答案 0 :(得分:11)

您需要了解HTML标记与WebRTC流之间的区别......

您可以让流运行,而不必将其附加到任何HTML标记,并且每个对等方仍可以发送和接收媒体。因此,每个对等体都可以将流附加到音频/视频标签,并且标签将仅用作播放已播放的流的播放器。

因此,如果您将HTML标记静音,则只会使播放器静音,而不是流。如果你想让任何东西对另一个对等体产生影响,你需要在流或对等连接上做一些事情。

特别是要静音和恢复音频或视频,您需要切换媒体流中的媒体曲目

    // create a button to toggle video 
    var button = document.createElement("button");
    button.appendChild(document.createTextNode("Toggle Hold"));

    button.onclick = function(){
        mediaStream.getVideoTracks()[0].enabled =
         !(mediaStream.getVideoTracks()[0].enabled);
    }

要暂停/恢复音频,请改用getAudioTracks()。

答案 1 :(得分:4)

呼叫mediaStream.stop()将停止相机 其中mediaStream是您在调用getUserMedia

时获得的流

这是一个有效的example

答案 2 :(得分:0)

mediaStream.getAudioTracks()[0] .stop();
  mediaStream.getVideoTracks()[0] .stop();

希望这将符合新标准。它在我的应用程序中正常工作。