pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

使用HTML5捕捉音頻與視頻信息概述及實例_html5教程

使用HTML5捕捉音頻與視頻信息概述及實例_html5教程技巧HTML5中文學(xué)習(xí)網(wǎng),是中國最大的HTML5中文門戶,為廣大HTML5愛好者提供各種HTML5資料,包括HTML5網(wǎng)站、HTML5資訊、HTML5應(yīng)用、HTML5游戲、
點評:音頻與視頻信息的捕捉一直是Web開發(fā)中的一個難點,下面為大家介紹一種新的API,該API通過使用navigatior.getUserMedia()方法來讓W(xué)eb應(yīng)用程序擁有訪問用戶攝像頭與麥克風(fēng)設(shè)備的能力
本文概述
長期以來,音頻與視頻信息的捕捉一直是Web開發(fā)中的一個難點。許多年來,我們一直依賴瀏覽器插件來實現(xiàn)這個需求。
在HTML 5中,出現(xiàn)了許多可以訪問硬件設(shè)備的API,例如訪問GPS設(shè)備的Geolocation API、訪問accelerometer設(shè)備的Orientation API、訪問GPU設(shè)備的WebGL API、訪問音頻播放設(shè)備的Web Audio API等等。這些API是非常強大的,因為開發(fā)者可以直接通過編寫JavaSccript腳本代碼來訪問底層硬件設(shè)備。
本文介紹一種新的API,該API通過使用navigatior.getUserMedia()方法來讓W(xué)eb應(yīng)用程序擁有訪問用戶攝像頭與麥克風(fēng)設(shè)備的能力。

捕捉媒體數(shù)據(jù)的技術(shù)發(fā)展歷史
在過去幾年里,開始出現(xiàn)了在Web應(yīng)用程序中訪問客戶端本地設(shè)備的需求,因此,W3C組織決定組織一個DAP(Device APIS POLICY)工作小組,來為該需求的實現(xiàn)制定一個統(tǒng)一的標準。
接下來讓我們來看看在2011年發(fā)生了哪些事情:

在HTML頁面文件中實現(xiàn)媒體數(shù)據(jù)的捕捉
DAP工作小組的第一個要制定的標準就是如何在Web應(yīng)用程序的HTML頁面中實現(xiàn)媒體數(shù)據(jù)的捕捉。他們決定重載類型為file的input元素(<input type="file">),并且為accept屬性添加一個新的屬性值。
如果開發(fā)者想實現(xiàn)用戶通過攝像頭進行拍照的功能,可以書寫如下所示的代碼。

復(fù)制代碼
代碼如下:

<input type="file" accept="image/*;capture=camera">

錄制視頻數(shù)據(jù)與音頻數(shù)據(jù)的代碼與之類似:

復(fù)制代碼
代碼如下:

<input type="file" accept="video/*;capture=camcorder">
<input type="file" accept="audio/*;capture=microphone">

在這些代碼中,只需使用file控件(類型為file的input元素)即可完成拍照或錄制媒體數(shù)據(jù)的功能。但是在因為這些代碼中尚缺乏一些實現(xiàn)與之相關(guān)的需求(例如在canvas元素中渲染捕捉到的視頻數(shù)據(jù),或者對捕捉到的視頻數(shù)據(jù)應(yīng)用WEBGL濾鏡)的能力,所以沒有得到開發(fā)者的廣泛應(yīng)用。
支持瀏覽器:
Android 3.0瀏覽器
Chrome for Android (0.16)
Firefox Mobile 10.0
device元素
如果使用file控件,則捕捉媒體數(shù)據(jù)后對其進行處理的能力是非常有限的,所以出現(xiàn)了一種新的可支持任何設(shè)備的標準。該標準使用device元素。
Opera瀏覽器是第一個通過device元素實現(xiàn)視頻數(shù)據(jù)捕捉的瀏覽器。幾乎在同一天,WhatWG組織決定使用navigator.getUserMedia()方法來捕捉媒體數(shù)據(jù)。一個星期后,Opera推出一個新的支持navigator.getUserMedia()方法的瀏覽器。后來,Microsoft工具推出支持該方法的IE 9瀏覽器。
device元素的使用方法如下所示。

復(fù)制代碼
代碼如下:

<device type="media" onchange="update(this.data)"></device>
<video autoplay></video>
<script>
function update(stream) {
document.querySelector('video').src = stream.url;
}
</script>

支持瀏覽器
不幸的是,目前為止尚沒有一個正式版的瀏覽器中支持device元素。
WEBRTC
最近,由于WebRTC(Web Real Time Communication:Web實時通信)API的出現(xiàn),媒體數(shù)據(jù)捕捉技術(shù)又有了一個很大的發(fā)展。Google、Opera、Mozilla等公司均正在努力將其實現(xiàn)在自己的瀏覽器中。
WebRTC API是一個與getUserMedia方法緊密相關(guān)的API,它提供一種訪問客戶端本地的攝像頭或麥克風(fēng)設(shè)備的能力。
支持瀏覽器:
目前為止,在Chrome 18版瀏覽器中,在chrome://flags頁面中進行設(shè)置后可使用WebRTC,在Chrome 21版本的瀏覽器中,該API被默認使用,不再需要設(shè)置。在Opera 12以上與Firefox 17版本的瀏覽器中默認支持WebRTC API。
使用getUserMedia方法
通過使用getUserMedia方法,我們可以不依靠插件而直接訪問客戶端本地的攝像頭設(shè)備與麥克風(fēng)設(shè)備。
檢測瀏覽器支持
可以通過如下所示的方法來檢測瀏覽器是否支持getUserMedia方法。

復(fù)制代碼
代碼如下:

function hasGetUserMedia() {
//請注意:在Opera瀏覽器中不使用前綴
return !!(navigator.getUserMedia || navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia || navigator.msGetUserMedia);
}
if (hasGetUserMedia()) {
alert('您的瀏覽器支持getUserMedia方法');
}
else {
alert('您的瀏覽器不支持getUserMedia方法');
}

獲取訪問設(shè)備的權(quán)限
為了訪問客戶端攝像頭設(shè)備與麥克風(fēng)設(shè)備,我們首先需要獲取權(quán)限。getUserMedia方法的第一個參數(shù)是一個用于指定媒體類型的對象。例如,當你想訪問攝像頭設(shè)備時,第一個參數(shù)應(yīng)該為{video:true},為了同時訪問攝像頭設(shè)備與麥克風(fēng)設(shè)備,需要使用{video:true,audio:true}參數(shù),代碼如下所示:

復(fù)制代碼
代碼如下:

<video autoplay id="video"></video>
<script>
var onFailSoHard = function() {
alert('設(shè)備拒絕訪問');
};
//不使用供應(yīng)商前綴
navigator.getUserMedia({video: true, audio: true}, function(localMediaStream) {
var video = document.getElementById('video');
video.src = window.URL.createObjectURL(localMediaStream);
//請注意:當使用getUserMedia方法時,在Chrome瀏覽器中不觸發(fā)onloadedmetadata事件
video.onloadedmetadata = function(e) {
//后續(xù)代碼略
};
}, onFailSoHard);
</script>

在這段代碼中,結(jié)合了video元素的使用。請注意我們沒有使用video元素的src屬性值,而是為video元素指定了一個引用媒體文件的URL地址,同時將代表了從攝像頭中所獲取到的視頻數(shù)據(jù)的LocalMediaStream對象轉(zhuǎn)換為一個Blob URL。
在這段代碼中,同時為video元素使用autoplay屬性,如果不使用該屬性,則video元素將停留在所獲取的第一幀畫面處。
請注意:在Chrome瀏覽器中,如果只使用{audio:true},則引發(fā)BUG,在Opera瀏覽器中,同樣不能使用audio元素。
如果你想讓多個瀏覽器同時支持getUserMedia方法,請使用如下所示的代碼:

復(fù)制代碼
代碼如下:

window.URL = window.URL || window.webkitURL;
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia || navigator.msGetUserMedia;
var video = document.getElementById('video');
if (navigator.getUserMedia) {
navigator.getUserMedia({audio: true, video: true}, function(stream) {
video.src = window.URL.createObjectURL(stream);
}, onFailSoHard);
}
else {
alert('您的瀏覽器不支持getUserMedia方法');
}

安全性
在有些瀏覽器中,當調(diào)用getUserMedia方法時,顯示一個提示窗口,詢問用戶是否允許或拒絕訪問他們的攝像頭或麥克風(fēng)。
拍照
在Canvas API中,可以使用ctx.drawImage(video,0,0)方法將video元素中的某一幀畫面輸出到canvas元素中。當然,既然我們已經(jīng)將捕捉到的用戶攝像頭中的圖像信息輸出到video元素中,當然也可以將圖像信息通過video元素輸出到canvas元素中,即實現(xiàn)實時拍照功能,代碼如下所示。

復(fù)制代碼
代碼如下:

<video autoplay></video>
<img src="" id="img" ></img>
<canvas style="display:none;" id="canvas" ></canvas>
var video = document.getElementById('video');
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var localMediaStream = null;
function snapshot() {
if (localMediaStream) {
ctx.drawImage(video, 0, 0);
document.getElementById('img').src = canvas.toDataURL('image/png');
}
}
video.addEventListener('click', snapshot, false);
//不使用供應(yīng)商前綴
navigator.getUserMedia({video: true}, function(stream) {
video.src = window.URL.createObjectURL(stream);
localMediaStream = stream;
}, onFailSoHard);

應(yīng)用CSS濾鏡
目前為止,可以在Chrome 18以上版本的瀏覽器中使用CSS濾鏡。
通過CSS濾鏡的使用,我們可以對video元素中捕捉的視頻添加各種圖像濾鏡效果。

復(fù)制代碼
代碼如下:

<style>
#video3 {
width: 307px;
height: 250px;
background: rgba(255,255,255,0.5);
border: 1px solid #ccc;
}
.grayscale {
-webkit-filter: grayscale(1);
}
.sepia {
-webkit-filter: sepia(1);
}
.blur {
-webkit-filter: blur(3px);
}
...
</style>
<video id="video" autoplay></video>
<script>
var idx = 0;
var filters = ['grayscale', 'sepia', 'blur', 'brightness', 'contrast', 'hue-rotate',
'hue-rotate2', 'hue-rotate3', 'saturate', 'invert', ''];
function changeFilter(e) {
var el = e.target;
el.className = '';
var effect = filters[idx++ % filters.length]; // loop through filters.
if (effect) {
el.classList.add(effect);
}
}
document.getElementById('video').addEventListener('click', changeFilter, false);
</script>

【網(wǎng)站聲明】本站除付費源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

主站蜘蛛池模板: 免费个人pos机申请办理-移动pos机刷卡-聚合收款码办理 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 污水处理设备维修_污水处理工程改造_机械格栅_过滤设备_气浮设备_刮吸泥机_污泥浓缩罐_污水处理设备_污水处理工程-北京龙泉新禹科技有限公司 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 球形钽粉_球形钨粉_纳米粉末_难熔金属粉末-广东银纳官网 | 螺旋丝杆升降机-SWL蜗轮-滚珠丝杆升降机厂家-山东明泰传动机械有限公司 | 模具ERP_模具管理系统_模具mes_模具进度管理_东莞市精纬软件有限公司 | 立刷【微电签pos机】-嘉联支付立刷运营中心 | 苏商学院官网 - 江苏地区唯一一家企业家自办的前瞻型、实操型商学院 | 常州翔天实验仪器厂-恒温振荡器-台式恒温振荡器-微量血液离心机 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | 一航网络-软件测评官网| 防爆暖风机_防爆电暖器_防爆电暖风机_防爆电热油汀_南阳市中通智能科技集团有限公司 | 单电机制砂机,BHS制砂机,制沙机设备,制砂机价格-正升制砂机厂家 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 聚氨酯催化剂K15,延迟催化剂SA-1,叔胺延迟催化剂,DBU,二甲基哌嗪,催化剂TMR-2,-聚氨酯催化剂生产厂家 | 聚丙烯酰胺PAM-聚合氯化铝PAC-絮凝剂-河南博旭环保科技有限公司 巨野电机维修-水泵维修-巨野县飞宇机电维修有限公司 | 青岛代理记账_青岛李沧代理记账公司_青岛崂山代理记账一个月多少钱_青岛德辉财税事务所官网 | 衬塑设备,衬四氟设备,衬氟设备-淄博鲲鹏防腐设备有限公司 | 江苏密集柜_电动_手动_移动_盛隆柜业江苏档案密集柜厂家 | 酒店品牌设计-酒店vi设计-酒店标识设计【国际级】VI策划公司 | 产业规划_产业园区规划-产业投资选址及规划招商托管一体化服务商-中机院产业园区规划网 | 大白菜官网,大白菜winpe,大白菜U盘装系统, u盘启动盘制作工具 | 企业微信scrm管理系统_客户关系管理平台_私域流量运营工具_CRM、ERP、OA软件-腾辉网络 | 酒糟烘干机-豆渣烘干机-薯渣烘干机-糟渣烘干设备厂家-焦作市真节能环保设备科技有限公司 | 欧必特空气能-商用空气能热水工程,空气能热水器,超低温空气源热泵生产厂家-湖南欧必特空气能公司 | 天一线缆邯郸有限公司_煤矿用电缆厂家_矿用光缆厂家_矿用控制电缆_矿用通信电缆-天一线缆邯郸有限公司 | 热镀锌槽钢|角钢|工字钢|圆钢|H型钢|扁钢|花纹板-天津千百顺钢铁贸易有限公司 | 焊接烟尘净化器__焊烟除尘设备_打磨工作台_喷漆废气治理设备 -催化燃烧设备 _天津路博蓝天环保科技有限公司 | 管家婆-管家婆软件-管家婆辉煌-管家婆进销存-管家婆工贸ERP | RTO换向阀_VOC高温阀门_加热炉切断阀_双偏心软密封蝶阀_煤气蝶阀_提升阀-湖北霍科德阀门有限公司 | 杭州画室_十大画室_白墙画室_杭州美术培训_国美附中培训_附中考前培训_升学率高的画室_美术中考集训美术高考集训基地 | 假肢-假肢价格-假肢厂家-河南假肢-郑州市力康假肢矫形器有限公司 | 二手回收公司_销毁处理公司_设备回收公司-找回收信息网 | 河南生物显微镜,全自动冰冻切片机-河南荣程联合科技有限公司 | 防水试验机_防水测试设备_防水试验装置_淋雨试验箱-广州岳信试验设备有限公司 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 | 塑钢课桌椅、学生课桌椅、课桌椅厂家-学仕教育设备首页 | 泰来华顿液氮罐,美国MVE液氮罐,自增压液氮罐,定制液氮生物容器,进口杜瓦瓶-上海京灿精密机械有限公司 | 诺冠气动元件,诺冠电磁阀,海隆防爆阀,norgren气缸-山东锦隆自动化科技有限公司 | 手术室净化厂家-成都做医院净化工程的公司-四川华锐-15年特殊科室建设经验 | 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 |