iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么在html5中调用摄像头
  • 841
分享到

怎么在html5中调用摄像头

2023-06-09 21:06:26 841人浏览 独家记忆
摘要

本篇文章给大家分享的是有关怎么在HTML5中调用摄像头,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。调用摄像头第一种方法navigator.getUserMedia用法详见md

本篇文章给大家分享的是有关怎么在HTML5中调用摄像头,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

调用摄像头

第一种方法navigator.getUserMedia用法详见mdn ,代码如下:

<!doctype html><html lang="en"><head>    <meta charset="UTF-8">    <title>摄像头调用1</title></head><body>    <video id="v"></video>    <script>        !(function () {            function userMedia() {                return navigator.getUserMedia = navigator.getUserMedia ||                    navigator.WEBkitGetUserMedia ||                    navigator.mozGetUserMedia ||                    navigator.msGetUserMedia || null;            }            if (userMedia()) {                var constraints = {                    video: true,                    audio: false                };                var media = navigator.getUserMedia(constraints, function (stream) {                    var v = document.getElementById('v');                    var url = window.URL || window.webkitURL;                    v.src = url ? url.createObjectURL(stream) : stream;                    v.play();                }, function (error) {                    console.log("ERROR");                    console.log(error);                });            } else {                console.log("不支持");            }        })();    </script></body></html>

第二种方法navigator.mediaDevices.getUserMedia用法详见mdn。navigator.mediaDevices.getUserMedia 其实和第一种差不多,主要第二种返回是一个 Promise 对象,代码如下:

<!doctype html><html lang="en"><head>    <meta charset="UTF-8">    <title>摄像头调用2</title></head><body>    <video id="v"></video>    <script>        !(function () {            // 老的浏览器可能根本没有实现 mediaDevices,所以我们可以先设置一个空的对象            if (navigator.mediaDevices === undefined) {                navigator.mediaDevices = {};            }            if (navigator.mediaDevices.getUserMedia === undefined) {                navigator.mediaDevices.getUserMedia = function (constraints) {                    // 首先,如果有getUserMedia的话,就获得它                    var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;                    // 一些浏览器根本没实现它 - 那么就返回一个error到promise的reject来保持一个统一的接口                    if (!getUserMedia) {                        return Promise.reject(new Error('getUserMedia is not implemented in this browser'));                    }                    // 否则,为老的navigator.getUserMedia方法包裹一个Promise                    return new Promise(function (resolve, reject) {                        getUserMedia.call(navigator, constraints, resolve, reject);                    });                }            }            const constraints = {                video: true,                audio: false            };            let promise = navigator.mediaDevices.getUserMedia(constraints);            promise.then(stream => {                let v = document.getElementById('v');                // 旧的浏览器可能没有srcObject                if ("srcObject" in v) {                    v.srcObject = stream;                } else {                    // 防止再新的浏览器里使用它,应为它已经不再支持了                    v.src = window.URL.createObjectURL(stream);                }                v.onloadedmetadata = function (e) {                    v.play();                };            }).catch(err => {                console.error(err.name + ": " + err.message);            })        })();    </script></body></html>

拍照

思路是设置一个标志变量 videoPlaying 看看是否 video 有在 play,监听拍照按钮的点击事件,如果videoPlaying 为 true ,使用一个canvas 获取 video 的宽高(默认 canvas 是不显示的),然后使用 canvas 的drawImage,然后使用 canvas 的 toDataURL返回一个 data url,将这个 url,设置在一个 img 标签上即可?

第一种方法navigator.getUserMedia实现代码:

<!doctype html><html lang="en"><head>    <meta charset="UTF-8">    <title>拍照1</title></head><body>    <button id="take">拍照</button>    <br />    <video id="v" style="width: 640px;height: 480px;"></video>    <canvas id="canvas" style="display:none;"></canvas>    <br />    <img src="Http://placehold.it/640&text=Your%20image%20here%20..." id="photo" alt="photo">    <script>        !(function () {            function userMedia() {                return navigator.getUserMedia = navigator.getUserMedia ||                    navigator.webkitGetUserMedia ||                    navigator.mozGetUserMedia ||                    navigator.msGetUserMedia || null;            }            if (userMedia()) {                let videoPlaying = false;                let constraints = {                    video: true,                    audio: false                };                let video = document.getElementById('v');                let media = navigator.getUserMedia(constraints, function (stream) {                    let url = window.URL || window.webkitURL;                    video.src = url ? url.createObjectURL(stream) : stream;                    video.play();                    videoPlaying = true;                }, function (error) {                    console.log("ERROR");                    console.log(error);                });                document.getElementById('take').addEventListener('click', function () {                    if (videoPlaying) {                        let canvas = document.getElementById('canvas');                        canvas.width = video.videoWidth;                        canvas.height = video.videoHeight;                        canvas.getContext('2d').drawImage(video, 0, 0);                        let data = canvas.toDataURL('image/webp');                        document.getElementById('photo').setAttribute('src', data);                    }                }, false);            } else {                console.log("不支持");            }        })();    </script></body></html>

第二种navigator.mediaDevices.getUserMedia实现方法:

<!doctype html><html lang="en"><head>    <meta charset="UTF-8">    <title>拍照2</title></head><body>    <button id="take">拍照</button>    <br />    <video id="v" style="width: 640px;height: 480px;"></video>    <canvas id="canvas" style="display:none;"></canvas>    <br />    <img src="http://placehold.it/640&text=Your%20image%20here%20..." id="photo" alt="photo">    <script>        !(function () {            // 老的浏览器可能根本没有实现 mediaDevices,所以我们可以先设置一个空的对象            if (navigator.mediaDevices === undefined) {                navigator.mediaDevices = {};            }            if (navigator.mediaDevices.getUserMedia === undefined) {                navigator.mediaDevices.getUserMedia = function (constraints) {                    // 首先,如果有getUserMedia的话,就获得它                    var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;                    // 一些浏览器根本没实现它 - 那么就返回一个error到promise的reject来保持一个统一的接口                    if (!getUserMedia) {                        return Promise.reject(new Error('getUserMedia is not implemented in this browser'));                    }                    // 否则,为老的navigator.getUserMedia方法包裹一个Promise                    return new Promise(function (resolve, reject) {                        getUserMedia.call(navigator, constraints, resolve, reject);                    });                }            }            const constraints = {                video: true,                audio: false            };            let videoPlaying = false;            let v = document.getElementById('v');            let promise = navigator.mediaDevices.getUserMedia(constraints);            promise.then(stream => {                // 旧的浏览器可能没有srcObject                if ("srcObject" in v) {                    v.srcObject = stream;                } else {                    // 防止再新的浏览器里使用它,应为它已经不再支持了                    v.src = window.URL.createObjectURL(stream);                }                v.onloadedmetadata = function (e) {                    v.play();                    videoPlaying = true;                };            }).catch(err => {                console.error(err.name + ": " + err.message);            })            document.getElementById('take').addEventListener('click', function () {                if (videoPlaying) {                    let canvas = document.getElementById('canvas');                    canvas.width = v.videoWidth;                    canvas.height = v.videoHeight;                    canvas.getContext('2d').drawImage(v, 0, 0);                    let data = canvas.toDataURL('image/webp');                    document.getElementById('photo').setAttribute('src', data);                }            }, false);        })();    </script></body></html>

以上就是怎么在html5中调用摄像头,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: 怎么在html5中调用摄像头

本文链接: https://www.lsjlt.com/news/257890.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在html5中调用摄像头
    本篇文章给大家分享的是有关怎么在html5中调用摄像头,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。调用摄像头第一种方法navigator.getUserMedia用法详见md...
    99+
    2023-06-09
  • html5如何实现调用摄像头
    小编给大家分享一下html5如何实现调用摄像头,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!html是什么html的全称为超文本标记语言,它是一种标记语言,包含了...
    99+
    2023-06-09
  • OpenCV调用摄像头
    环境 python:python3.6摄像头:网络摄像头Python库:openCV # -*- coding: utf-8 -*- # @author leone # @desc 使用 python 的 openCV 获取网络摄像...
    99+
    2023-01-31
    摄像头 OpenCV
  • Android中怎么调用摄像头拍照
    本篇文章给大家分享的是有关Android中怎么调用摄像头拍照,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。第一步,获取权限if (ContextCompat.chec...
    99+
    2023-06-04
  • python调用摄像头
    import cv2 #模块称作cv2。python需要用到opencv-python模块。可在命令行模式输入: #pip install opencv-python -i https://pypi.douban.com/simple/ c...
    99+
    2023-10-01
    python opencv 开发语言
  • C#怎么调用USB摄像头
    这篇文章主要介绍“C#怎么调用USB摄像头”,在日常操作中,相信很多人在C#怎么调用USB摄像头问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#怎么调用USB摄像头”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-29
  • 怎么使用python调用摄像头
    这篇文章给大家分享的是有关怎么使用python调用摄像头的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、打开摄像头import cv2import numpy as np...
    99+
    2023-06-15
  • HTML5如何通过navigator.mediaDevices.getUserMedia调用手机摄像头
    这篇文章主要介绍了HTML5如何通过navigator.mediaDevices.getUserMedia调用手机摄像头,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。navi...
    99+
    2023-06-09
  • Android相机调用-CameraX【外接摄像头】【USB摄像头】
    Android相机调用有原生的Camera和Camera2,我觉得调用代码都太复杂了,CameraX调用代码简洁很多。 说明文档:https://developer.android.com/jetpack/androidx/releases...
    99+
    2023-10-22
    数码相机 android
  • 怎么在树莓派中利用mjpg-streamer调用摄像头
    本篇文章给大家分享的是有关怎么在树莓派中利用mjpg-streamer调用摄像头,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。更新软件:sudo apt-get&nb...
    99+
    2023-06-06
  • 怎么用HTML5实现调用手机摄像头拍照功能
    本篇内容介绍了“怎么用HTML5实现调用手机摄像头拍照功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • WPF怎么使用AForge调用摄像头
    本篇内容主要讲解“WPF怎么使用AForge调用摄像头”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“WPF怎么使用AForge调用摄像头”吧!AForge引用1.创建WPF项目, 在NuGet安...
    99+
    2023-06-29
  • 云服务器怎么调用摄像头
    如果您要使用云服务器来调用摄像头,请按照以下步骤操作:在您打开的云服务器上,找到“本地摄像头”或“应用程序摄像头”选项。单击“下一步”或“完成”。在摄像头图标上右键单击,然后单击“使用摄像头”。选择要使用的摄像头。在使用摄像头界面中,单击“...
    99+
    2023-10-25
    摄像头 服务器
  • ubuntu调用外接摄像头
    一、ubuntu20.04调用外接摄像头(如果是Ubuntu18.04用melodic放在第二行) 1.检查是否连接摄像头 ls /dev/video* 输出/dev/video0  /dev/video1  /dev/video2  /d...
    99+
    2023-08-31
    ubuntu linux python
  • 使用javacv怎么调用本机摄像头
    本篇文章给大家分享的是有关使用javacv怎么调用本机摄像头,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各...
    99+
    2023-06-14
  • 利用JavaScript怎么调用网络摄像头
    利用JavaScript怎么调用网络摄像头?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布...
    99+
    2023-06-07
  • WPF使用AForge调用摄像头
    AForge引用 1.创建WPF项目, 在NuGet安装AForge相关SDK包: 2.项目引用 2.1.由于在WPF当中使用AForge,需要通过WindowsFormsHost...
    99+
    2024-04-02
  • yolov5调用usb摄像头及本地摄像头的方法实例
    目录yolov5调用usb摄像头YOLOv5调用本地摄像头总结yolov5 调用 usb 摄像头 文章是在yolov5 v5.0版本的detect.py所修改编写 其他v1.0-v4...
    99+
    2024-04-02
  • 云服务器调用本地摄像头怎么调
    如果您要调用云服务器上的摄像头,需要先在本地安装相应的摄像头驱动程序,下载并解压缩到指定路径,例如c:DocumentsandSettingsAdobeAdobe Camera StudioQuickTime/v2lib。 然后在命令行中...
    99+
    2023-10-26
    摄像头 服务器
  • Python实现调用摄像头拍摄照片
    目录步骤代码实现效果步骤 用opencv打开摄像头并拍照保存照片到本地获取邮箱(如qq邮箱)的授权码,方法可自行百度将照片以附件的形式发送到指定邮箱删除本地照片 代码 import ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作