使用 WebRTC 时不立即显示视频

Not displaying video immediately when using WebRTC

我想知道在使用 WebRTC 调用 getUserMedia(); 后不立即显示视频的最佳方法是什么。许多教程似乎让您立即显示视频,但对于实际用例,在用户按下按钮之前不显示视频通常是有意义的。

我不确定大多数应用程序是如何处理这个问题的,但目前,我认为也许可以通过在用户按下按钮之前不在页面上显示视频元素来通过样式来实现这一点,但这会意味着流在技术上将是 "on",只是不显示在页面上。所以,我想知道是否有一种方法可以使用 JS 在按下按钮时稍后设置或访问流。

似乎在使用 getUserMedia(); 时必须立即设置和存储流 (below is code from the Google Code Lab),所以我不确定这是否可行。

// Local stream that will be reproduced on the video.
let localStream;

// Handles success by adding the MediaStream to the video element.
function gotLocalMediaStream(mediaStream) {
  localStream = mediaStream;
  localVideo.srcObject = mediaStream;
}

// Initializes media stream.
navigator.mediaDevices.getUserMedia(mediaStreamConstraints)
  .then(gotLocalMediaStream).catch(handleLocalMediaStreamError);
  
  

干脆不显示。

您可以将该流保存在您的变量中。只是不要将其指定为视频元素上的 srcObject