网页打开摄像头预览画面,再关闭视频流stream

Demo功能点

  • 使用js打开摄像头,并使用video元素预览视频画面
  • 使用 web rtc API getUserMedia()捕获视频流mediaStream
  • 打开摄像头视频流并在网页上实时播放
  • 用户可以关闭摄像头视频流,停止捕获视频,stop/close mediaStream
  • web网页获取视频流,并指定视频分辨率
  • navigator.mediaDevices.getUserMedia() demo
  • stream.getTracks() track.stop() 停止捕获视频
  • webrtc 入门demo
  • js 能获取视频吗? 可以,这个webrtc 的demo就实现了
  • webrtc 能做什么,在线测试音视频能力
video元素:

demo完整代码


<button onclick="openCamera()">open camera 打开摄像头</button>
<button onclick="closeCam()">关闭摄像头、stop/close mediaStream</button>

<div>
  video元素:<br>
  <video id="video" style="background: #eee; max-width: 400px;" autoplay controls></video>
</div>

<script>
  function openCamera() {
    var constraints = {
      audio: true,
      // video: true
      video: {
        width: 640,
        height: 360,
      }
    }

    navigator.mediaDevices.getUserMedia(constraints)
      .then(function (mediaStream) {
        console.log('get mediaStream', mediaStream)
        // var videoTracks = mediaStream.getVideoTracks()
        // console.log(videoTracks)
        var video = document.querySelector('#video')
        video.srcObject = mediaStream
        video.play()
      })
  }

  function closeCam() {
    var video = document.querySelector('#video')
    stream = video.srcObject

    stream.getTracks().forEach(function (track) {
      track.stop();
    });
  }
</script>