webrtc快速入门——使用 WebRTC 拍摄静止的照片

文章目录

  • 使用 getUserMedia() 拍摄静态照片
    • HTML 标记
    • JavaScript 代码
    • 初始化
      • startup() 函数
        • 获取元素引用
        • 获取流媒体
      • 监听视频开始播放
        • 处理按钮上的点击
        • 包装 startup() 方法
      • 清理照片框
      • 从流中捕获帧
  • 例子代码
      • HTML代码
      • CSS代码
      • JavaScript代码
  • 过滤器
  • 使用特定设备

使用 getUserMedia() 拍摄静态照片

介绍了如何在 WebRTC 的支持下可以访问到电脑或者手机的摄像头并且使用它来拍摄照片。

本文介绍在支持 getUserMedia() 的计算机或手机上如何使用 navigator.mediaDevices.getUserMedia() 访问摄像机,并用其拍照。

HTML 标记

我们的 HTML 界面有两个主要的操作部分:流和捕获面板以及演示面板。它们俩都在它们自己的

中并排渲染,以便于添加样式和控制。

左边的面板包含两个组件:一个 元素,它将接收来自 navigator.mediaDevices.getUserMedia() 的流,以及用于用户点击以捕获视频帧的

这很简单,当我们进入 JavaScript 代码时,我们将看到它们是如何紧密联系在一起的。

接下来,我们有一个 元素,捕获的帧被存储到其中,可能以某种方式进行操作,然后转换为输出图像文件。通过使用样式 display:none 将画布保持隐藏,以避免画面的混乱——用户不需要看到这个中间过程。

我们还有一个 元素,我们将在其中绘制图像——这是让用户看到的最终显示。

 
捕获的图像会显示在这里。

这是所有相关的 HTML。其余的只是一些页面布局和提供一个返回页面链接的些许文本。

JavaScript 代码

现在来看看 JavaScript 代码。我们将把它分解成几个小的部分,使其更容易解释。

初始化

我们首先将整个脚本包装在匿名函数中,以避免使用全局变量,然后设置我们将要使用的各种变量。

(() => {
  const width = 320;    
  const height = 0;     

  const streaming = false;

  let video = null;
  let canvas = null;
  let photo = null;
  let startbutton = null; 

这些变量分别是:

width

无论输入视频的尺寸如何,我们将把所得到的图像缩放到宽度为 320 像素。

height

给定流的 width 和宽高比,计算出图像的输出高度。

streaming

指示当前是否有活动的视频流正在运行。

video

这将是页面加载完成后对 元素的引用。

canvas

这将是页面加载完成后对 元素的引用。

photo

这将在页面加载完成后引用 元素。

startbutton

这将引用用于触发捕获的

你可能感兴趣的:(#,webrtc,webrtc)