webrtc视频流停止共享

webrtc视频流停止共享,webrtc,Webrtc,我已经创建了基于webrtc的视频聊天,起诉peerjs 使用以下控件创建本地和远程视频元素: 本地: 'video id=[local\u peer\u id]autoplay=“true”controls=“true”' 远程: 及 'video id=[remote\u peer\u id]autoplay=“true”controls=“true”>' 现在在视频聊天过程中如果本地用户静音,远程用户听不到任何声音,其工作状态完美 问题在于视频。如果本地用户暂停自己的视频,他可以看到视频已

我已经创建了基于webrtc的视频聊天,起诉peerjs

使用以下控件创建本地和远程视频元素:

本地: 'video id=[local\u peer\u id]autoplay=“true”controls=“true”'

远程: 及 'video id=[remote\u peer\u id]autoplay=“true”controls=“true”>'

现在在视频聊天过程中如果本地用户静音,远程用户听不到任何声音,其工作状态完美

问题在于视频。如果本地用户暂停自己的视频,他可以看到视频已暂停,但远程用户仍然可以看到他的视频直播

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

有人告诉我需要做什么来部署这个功能吗


“暂停”和“恢复”视频对两个对等方都能实时工作?

您需要知道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()。

调用
mediaStream.stop()
将停止摄像机
其中
mediaStream
是调用
getUserMedia

这是一个正在工作的mediaStream.getAudioTracks()[0].stop()
mediaStream.getVideoTracks()[0]。停止()


希望这将与新的标准一起工作。在我的应用程序中工作正常。

您是否已将事件停止和暂停连接到webRTC呼叫停止共享视频?否,我只是在div元素中添加了本地和远程对等视频元素。我刚刚试过默认控件中的“播放”按钮。你能更详细地告诉我你的意思吗?或者我需要做什么?非常感谢mediaStream.getVideoTracks()[0]。已启用=!(mediaStream.getVideoTracks()[0]。已启用);'工作得很好。一个问题是我如何再次恢复流?我需要再打一个新电话,或者我可以用getVideoTracks做些什么吗?你只需要重新启用视频曲目是的。mediaStream.getVideoTracks()[0]。enabled=“true”。谢谢根据MDN文档,enabled是只读的:现在如何暂停和恢复曲目?此解决方案有效!。但是,当我的网络摄像头被禁用时,它是打开的。@igorpavlov在Chrome 46.0.2490.80上仍然可以工作。mIt被弃用,在47中它不能工作。