• 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

    这将引用用于触发捕获的

  • 相关阅读:
    (六) ES6 新特性 —— 迭代器(iterator)
    电商美工设计有哪些基本规范原则 优漫动游
    leetcode面试经典150题——29 三数之和
    2024年湖北专升本C语言模拟试卷
    Android am start命令
    jenkins自动化脚本整理
    如何解决多人编辑场景下的内容覆盖问题
    Java项目:32 基于springboot的课程作业管理系统(含源码数据库+文档免费送)
    spice VDAgent简介
    洛谷P5723 【深基4.例13】质数口袋
  • 原文地址:https://blog.csdn.net/e891377/article/details/133869297