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 获取视频流》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

领域驱动设计

领域驱动设计

埃文斯 / 赵俐、盛海艳、刘霞 / 人民邮电出版社 / 2010-11 / 69.00元

《领域驱动设计:软件核心复杂性应对之道》是领域驱动设计方面的经典之作。全书围绕着设计和开发实践,结合若干真实的项目案例,向读者阐述如何在真实的软件开发中应用领域驱动设计。书中给出了领域驱动设计的系统化方法,并将人们普遍接受的一些最佳实践综合到一起,融入了作者的见解和经验,展现了一些可扩展的设计最佳实践、已验证过的技术以及便于应对复杂领域的软件项目开发的基本原则。《领域驱动设计:软件核心复杂性应对之......一起来看看 《领域驱动设计》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具