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


    使用 getUserMedia() 拍摄静态照片

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

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

    HTML 标记

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

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

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

    • 1
    • 2
    • 3
    • 4

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

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

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

     
    
    捕获的图像会显示在这里。
    • 1
    • 2
    • 3
    • 4

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

    JavaScript 代码

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

    初始化

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

    (() => {
      const width = 320;    
      const height = 0;     
    
      const streaming = false;
    
      let video = null;
      let canvas = null;
      let photo = null;
      let startbutton = null; 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    这些变量分别是:

    width

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

    height

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

    streaming

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

    video

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

    canvas

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

    photo

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

    startbutton

    这将引用用于触发捕获的

  • 相关阅读:
    接口自动化测试思路和实战(4):数据驱动测试框架
    集简云&银行系统:API连接广告推广与客服系统,降低企业研发成本
    使用CIntHeap 二叉堆进行A*路径搜索代码学习
    【LeetCode-简单题】350. 两个数组的交集 II
    Tamll商城管理系统订单模块(2)
    模版代码:Express 中间件快速入门
    python螺旋数字矩阵
    AWTK 表格视图的实现原理和用法
    Java、Go、Rust大比拼,高并发时代谁能称雄?
    [moeCTF 2023] pwn
  • 原文地址:https://blog.csdn.net/e891377/article/details/133869297