文档章节

HTML5 Camera(摄像头) 和 Video(视频)控制

UIkitAPP
 UIkitAPP
发布于 2015/04/06 10:51
字数 506
阅读 204
收藏 2

最近写了一个上传头像的功能,主要是使用了HTML5的方法来开发.主要从两个方面处理.一是通过input文件控件,二是通过摄像头,今天我们主要是从摄像头来处理.那我们开始怎么从浏览器中获取摄像头的操作.

首先我们先编写HTML代码

<video id="video" width="640" height="480" autoplay></video>
<button id="snap">拍照</button>
<canvas id="canvas" width="640" height="480"></canvas>

首要确认下你的浏览器是否支持video和canvas,否则是不支持这个功能的,我们创建了一个640x480的视频和画板.

下面我们加入javascript代码来控制video

window.addEventListener("DOMContentLoaded", function() {	// 获取基本的元素,设置.
	var canvas = document.getElementById("canvas");	
        var context = canvas.getContext("2d");	
        var video = document.getElementById("video");	
        var videoObj = { "video": true };	
        var errBack = function(error) {		
            console.log("Video capture error: ", error.code); 
	};	// 获取摄像头的方式
	if(navigator.getUserMedia) { // 标准
		navigator.getUserMedia(videoObj, function(stream) {
			video.src = stream;
			video.play();
		}, errBack);
	} else if(navigator.webkitGetUserMedia) { // WebKit浏览器
		navigator.webkitGetUserMedia(videoObj, function(stream){
			video.src = window.webkitURL.createObjectURL(stream);
			video.play();
		}, errBack);
	}	else if(navigator.mozGetUserMedia) { // Firefox浏览器
		navigator.mozGetUserMedia(videoObj, function(stream){
			video.src = window.URL.createObjectURL(stream);
			video.play();
		}, errBack);
	}
}, false);

现在的浏览器获取摄像头流的方式是不一样的,因为之前没有统一的标准,浏览器商使用各自处理方式,所以我们获取相关元素后,做相关的处理.

其实在这里,浏览器会提示你是否允许或拒绝使用摄像头,点允许就可以显示到页面上了,否则就不可以.

下面我们对摄像头进行拍照,给拍照按钮,加入事件

document.getElementById("snap").addEventListener("click", function() {
	context.drawImage(video, 0, 0, 640, 480);
});

也就是将数据放入到画板中,这样就显示了拍照的图片了.通过画板获取图片的64位数据,然后通过这个数据进行上传功能.拍照和上传头像就可以完成了

本文属于吴统威的博客原创文章,转载时请注明出处及相应链接:http://www.wutongwei.com/front/infor_showone.tweb?id=103


本文转载自:http://www.wutongwei.com/front/infor_showone.tweb?id=103

共有 人打赏支持
UIkitAPP
粉丝 2
博文 19
码字总数 8218
作品 0
深圳
程序员
HTML5 Video/Canvas拍照初级

通过HTML5 Video和Canvas实现拍照的功能,功能很简单;另外,因为用到了getUserMedia()函数,目前只能在Chrome和Opera里使用,详见:Can I use getUserMedia/Stream API? 演示地址:HTML5 W...

Xiaopeng
2012/10/30
0
1
扣丁学堂HTML5培训课程怎么样

  在如今,随着移动互联网技术的发展和进步,比如HTML5在移动互联端的应用,让更多人了解到它的丰富性趣味性便利性,但HTML5就包括这些么?扣丁学堂HTML5培训课程怎么样?零基础能学会么?...

扣丁学堂
06/01
0
0
HTML5 视频转换软件 Freemake Video Converter

HTML5的Video标签可以说算是HTML5的重头戏,各大浏览器都纷纷响应,现代浏览器都能支持Video标签,基于Video标签的播放器也越来越多,但问题是每个浏览器所支持的视频格式不同,想在各大浏览...

海纳百川
2013/01/14
0
1
28个你必须知道的HTML5的新特性,技巧以及技术

原文:http://net.tutsplus.com/tutorials/html-css-techniques/25-html5-features-tips-and-techniques-you-must-know/ 译文来自:http://adamlu.com/?p=584 总结一下: 1. 新的Doctype 尽管......

山哥
2012/05/10
0
0
惊艳!9个不可思议的 HTML5 Canvas 应用试验

HTML5 Video Destruction 这是一个真正抢眼的 Canvas 演示,我必须顶礼膜拜。你会看到一个可扩展的画布视频,点击视频片爆炸,但视频爆炸过程中继续播放,并能够自动回到其原来的位置。这是一...

颖辉小居
2017/10/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Bash各类扩展详解

Bash各类扩展详解 Bash中主要包括大括号扩展、波浪号扩展、变量扩展、子命令扩展、文件名扩展和算数扩展。这些扩展组合在一起为Bash带来了极大的易用性。掌握这些扩展的用法和功能,能够为B...

小陶小陶
今天
1
0
EventBus原理深度解析

一、问题描述 在工作中,经常会遇见使用异步的方式来发送事件,或者触发另外一个动作:经常用到的框架是MQ(分布式方式通知)。如果是同一个jvm里面通知的话,就可以使用EventBus。由于Event...

yangjianzhou
今天
5
0
OpenCV图像处理实例:libuv+cvui显示摄像头视频

#include <iostream>#include <opencv2/opencv.hpp>#define CVUI_IMPLEMENTATION#include <cvui.h>extern "C"{#include <uv.h>}using namespace std;#define WINDOW_NAM......

IOTService
今天
3
0
openJDK之JDK9的String

1.openJDK8的String 先来看下openJDK8的String的底层,如下图1.1所示: 图1.1 底层上使用的是char[],即char数组 每个char占16个bit,Character.SIZE的值是16。 2.openJDK9中的String 图2.1...

克虏伯
今天
3
0
UEFI 模式下如何安装 Ubuntu 16.04

作者:知乎用户 链接:https://www.zhihu.com/question/52092661/answer/259583475 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 针对UEFI模式下安装U...

寻知者
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部