html5调用摄像头实例代码


Posted in HTML / CSS onJune 28, 2021

最近在学习在做HTML5的项目,看了博客上html5调用摄像头拍照的文章,但各有瑕疵。于是自己查阅书籍写了一个demo,主要分三步,废话不多说上代码。

HTML代码部分:

<!--video用于显示媒体设备的视频流,自动播放-->   
<video  id="video" autoplay style="width: 480px;height: 320px"></video>
<!--拍照按钮-->
<div>
    <button id="capture">拍照</button>
</div>
<!--描绘video截图-->
<canvas id="canvas" width="480" height="320"></canvas>

接下来是js代码部分:

<script>  
    var video = document.getElementById('video');
    var canvas = document.getElementById('canvas');
    var capture = document.getElementById('capture');
    var context = canvas.getContext('2d');
    function getUserMediaToPhoto(constraints,success,error) {
        if(navigator.mediaDevices.getUserMedia){
            //最新标准API
            navigator.mediaDevices.getUserMedia(constraints).then(success).catch(error);
        }else if (navigator.webkitGetUserMedia) {
            //webkit核心浏览器
            navigator.webkitGetUserMedia(constraints,success,error);
        }else if(navigator.mozGetUserMedia){
            //firefox浏览器
            navigator.mozGetUserMedia(constraints,success,error);
        }else if(navigator.getUserMedia){
            //旧版API
            navigator.getUserMedia(constraints,success,error);
        }
    }
    //成功回调函数
    function success(stream){
        //兼容webkit核心浏览器
        var CompatibleURL = window.URL || window.webkitURL;
        //将视频流转化为video的源
        video.src = CompatibleURL.createObjectURL(stream);
        video.play();//播放视频
    }
    function error(error) {
        console.log('访问用户媒体失败:',error.name,error.message);
    }
    if(navigator.mediaDevices.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.getUserMedia){
        getUserMediaToPhoto({video:{width:480,height:320}},success,error);
    }else{
        alert('你的浏览器不支持访问用户媒体设备');
    }
    capture.addEventListener('click',function() {
        // 将video画面描绘在canvas画布上
        context.drawImage(video,0,0,480,320);
    })
 </script>

值得注意的是:

使用的时候打开摄像头一定要上server上打开,否则没办法使用!因为打开的是属于网络的webcam,需要在server上打开。

目前好像chrome和opera还有大多数移动设备支持HTLM5打开摄像头,我这个是在chrome上测试成功的。

还有一点,如果没成功,很可能是你不小心关闭了chrome打开摄像头的权限,你重新启用权限就可以啦!

到此这篇关于html5调用摄像头实例的文章就介绍到这了,更多相关html5调用摄像头内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
网页布局中CSS样式无效的十个重要原因详解
Aug 10 HTML / CSS
css3弹性盒模型实例介绍
May 27 HTML / CSS
一款利用css3的鼠标经过动画显示详情特效的实例教程
Dec 29 HTML / CSS
使用CSS3制作饼状旋转载入效果的实例
Jun 23 HTML / CSS
CSS3中的Transition过度与Animation动画属性使用要点
May 20 HTML / CSS
用CSS3打造HTML5的Logo(实现代码)
Jun 16 HTML / CSS
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
Feb 07 HTML / CSS
CSS3新增布局之: flex详解
Jun 18 HTML / CSS
HTML5 语音搜索(淘宝店语音搜素)
Jan 03 HTML / CSS
浅谈html5增强的页面元素
Jun 14 HTML / CSS
详解HTML5将footer置于页面最底部的方法(CSS+JS)
Oct 11 HTML / CSS
详解Canvas 跨域脱坑实践
Nov 07 HTML / CSS
CSS 伪元素::marker详解
深入理解margin塌陷和margin合并的解决方案
CSS实现章节添加自增序号的方法
CSS变量实现主题切换的方法
Jun 23 #HTML / CSS
CSS3实现列表无限滚动/轮播效果
HTML5页面音频自动播放的实现方式
Jun 21 #HTML / CSS
html中显示特殊符号(附带特殊字符对应表)
You might like
linux php mysql数据库备份实现代码
2009/03/10 PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
PHP array_shift()用法实例分析
2019/01/07 PHP
Expandable &quot;Detail&quot; Table Rows
2007/08/29 Javascript
收集的10个免费的jQuery相册
2011/02/26 Javascript
用javascript为页面添加天气显示实现思路及代码
2013/12/02 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
详解Webpack + ES6 最新环境搭建与配置
2018/06/04 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
Python Queue模块详解
2014/11/30 Python
python实现八大排序算法(2)
2017/09/14 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
python opencv进行图像拼接
2020/03/27 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
2020/12/08 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
2021/02/18 Python
Sunglasses Shop荷兰站:英国最大的太阳镜独立在线零售商和供应商
2017/01/08 全球购物
德国富尔达运动鞋店:43einhalb
2020/12/25 全球购物
教师推荐信范文
2013/11/24 职场文书
应届毕业生如何写求职信
2014/02/16 职场文书
美术教学感言
2014/02/22 职场文书
公司周年庆活动方案
2014/08/25 职场文书
三下乡个人总结
2015/03/04 职场文书
2015年教务主任工作总结
2015/07/22 职场文书
关于感恩的歌曲整理(8首)
2019/08/14 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
mysqldump进行数据备份详解
2022/07/15 MySQL