WebRTC 使用之 —— 使用 getUserMedia 获取视频流

栏目: 后端 · 前端 · 发布时间: 5年前

内容简介:我们都知道 WebRTC 可以用来进行实时的音视频处理,那么第一步肯定是要获取本地的音视频流,在 WebRTC 中获取本地的音视频流,需要用到 API:getUserMedia。本节教程就叫你如何使用 getUserMedia 来获取本地的音视频流。创建如下的工程:

我们都知道 WebRTC 可以用来进行实时的音视频处理,那么第一步肯定是要获取本地的音视频流,在 WebRTC 中获取本地的音视频流,需要用到 API:getUserMedia。

本节教程就叫你如何使用 getUserMedia 来获取本地的音视频流。

创建工程

创建如下的工程:

WebRTC 使用之 —— 使用 getUserMedia 获取视频流

一个 index.html + 一个main.js。

在 html 中添加 video

因为要显示视频,所以要在 html 中添加一个 video,如下:

<!DOCTYPE html>
<html>

<body>

<div id="container">

    <video id="gum-local" autoplay playsinline></video>
</div>

<script src="js/main.js"></script>

</body>
</html>

复制代码

然后在加一个 showVideo 的按钮,意思是按了这个按钮之后,在调用摄像头显示视频,代码如下:

<!DOCTYPE html>

<html>

<body>

<div id="container">

    <video id="gum-local" autoplay playsinline></video>
    <button id="showVideo">Open camera</button>

</div>

<script src="js/main.js"></script>

</body>
</html>

复制代码

效果为:

WebRTC 使用之 —— 使用 getUserMedia 获取视频流

给 showVideo 添加事件

下来在 main.js 里添加代码,首先是获取 showVideo 的按钮,为其添加点击的事件监听:

document.querySelector('#showVideo').addEventListener('click', e => init(e));

async function init(e) {

}
复制代码

使用 getUserMedia

getUserMedia 的使用方式为:

navigator.mediaDevices.getUserMedia(constraints);
复制代码

需要传入 constraints 参数,constraints 参数可以控制是否开启视频和音频,如下:

const constraints = window.constraints = {
  audio: true,
  video: true
};
复制代码

所以在 init() 方法里就可以这么写:

async function init(e) {
  const constraints = window.constraints = {
    audio: true,
    video: true
  };
  
  try {
    const stream = await navigator.mediaDevices.getUserMedia(constraints);
    handleSuccess(stream);
    e.target.disabled = true;
  } catch (e) {
    handleError(e);
  }
}
复制代码

handleSuccess() 和 handleError() 为:

function handleSuccess(stream) {
  const video = document.querySelector('video');
  const videoTracks = stream.getVideoTracks();
  console.log('Got stream with constraints:', constraints);
  console.log(`Using video device: ${videoTracks[0].label}`);
  window.stream = stream; // make variable available to browser console
  video.srcObject = stream;
}

function handleError(error) {
  console.error(error);
}
复制代码

点击 Open camera 后,首先会弹出授权框:

WebRTC 使用之 —— 使用 getUserMedia 获取视频流

点击 Allow 后,就可以看到视频了:

WebRTC 使用之 —— 使用 getUserMedia 获取视频流

以上所述就是小编给大家介绍的《WebRTC 使用之 —— 使用 getUserMedia 获取视频流》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Design and Analysis of Distributed Algorithms (Wiley Series on P

Design and Analysis of Distributed Algorithms (Wiley Series on P

Nicola Santoro / Wiley-Interscience / 2006-10-27 / USD 140.95

This text is based on a simple and fully reactive computational model that allows for intuitive comprehension and logical designs. The principles and techniques presented can be applied to any distrib......一起来看看 《Design and Analysis of Distributed Algorithms (Wiley Series on P》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具