我创建了基于webrtc的视频聊天suing peerjs。
使用control:
创建本地和远程视频元素本地: 'video id = [local_peer_id] autoplay =“true” controls =“true”>'
远程: 和 'video id = [remote_peer_id] autoplay =“true” controls =“true ”>'
现在在视频聊天期间,如果本地用户静音auido远程用户听不到任何声音并且其工作正常。
问题与视频有关。如果本地用户暂停他自己的视频,他可以看到视频暂停,但远程用户仍然可以看到他的视频。
另一方面,如果远程用户暂停他的视频,本地用户仍然可以看到他的视频。任何人都告诉我们需要做些什么才能部署这种能力
“暂停”和“恢复”视频对两个同行都是实时的?
答案 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();
希望这将符合新标准。它在我的应用程序中正常工作。