<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

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

        來源:懂視網(wǎng) 責(zé)編:小OO 時間:2020-11-27 15:25:27
        文檔

        使用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è)備。
        推薦度:
        導(dǎo)讀音頻與視頻信息的捕捉一直是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è)備。

        這篇文章主要介紹了關(guān)于使用HTML5捕捉音頻與視頻信息概述及實例,有著一定的參考價值,現(xiàn)在分享給大家,有需要的朋友可以參考一下

        音頻與視頻信息的捕捉一直是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)一的標(biāo)準(zhǔn)。
        接下來讓我們來看看在2011年發(fā)生了哪些事情:

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

        代碼如下:

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

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

        代碼如下:

        <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ù)后對其進(jìn)行處理的能力是非常有限的,所以出現(xiàn)了一種新的可支持任何設(shè)備的標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)使用device元素。
        Opera瀏覽器是第一個通過device元素實現(xiàn)視頻數(shù)據(jù)捕捉的瀏覽器。幾乎在同一天,WhatWG組織決定使用navigator.getUserMedia()方法來捕捉媒體數(shù)據(jù)。一個星期后,Opera推出一個新的支持navigator.getUserMedia()方法的瀏覽器。后來,Microsoft工具推出支持該方法的IE 9瀏覽器。
        device元素的使用方法如下所示。

        代碼如下:

        <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頁面中進(jìn)行設(shè)置后可使用WebRTC,在Chrome 21版本的瀏覽器中,該API被默認(rèn)使用,不再需要設(shè)置。在Opera 12以上與Firefox 17版本的瀏覽器中默認(rèn)支持WebRTC API。
        使用getUserMedia方法
        通過使用getUserMedia方法,我們可以不依靠插件而直接訪問客戶端本地的攝像頭設(shè)備與麥克風(fēng)設(shè)備。
        檢測瀏覽器支持
        可以通過如下所示的方法來檢測瀏覽器是否支持getUserMedia方法。

        代碼如下:

        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ù)是一個用于指定媒體類型的對象。例如,當(dāng)你想訪問攝像頭設(shè)備時,第一個參數(shù)應(yīng)該為{video:true},為了同時訪問攝像頭設(shè)備與麥克風(fēng)設(shè)備,需要使用{video:true,audio:true}參數(shù),代碼如下所示:

        代碼如下:

        <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); 
        //請注意:當(dāng)使用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方法,請使用如下所示的代碼:

        代碼如下:

        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方法'); 
        }

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

        代碼如下:

        <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元素中捕捉的視頻添加各種圖像濾鏡效果。

        代碼如下:

        <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)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        使用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è)備。
        推薦度:
        標(biāo)簽: 音頻 捕捉 html5
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久久亚洲欧洲日产国码aⅴ| 免费h成人黄漫画嘿咻破解版| 国产精品亚洲精品日韩已满| 成人午夜免费视频| 国产一区二区三区无码免费| 亚洲AV色无码乱码在线观看| 日本高清免费网站| 国产精品久久久久久亚洲小说| 天天摸天天碰成人免费视频| 亚洲av永久无码精品秋霞电影秋| 免费看少妇作爱视频| 日日摸日日碰夜夜爽亚洲| 亚洲不卡无码av中文字幕| g0g0人体全免费高清大胆视频| 中文字幕亚洲一区二区va在线| 91成人免费观看在线观看| 亚洲国产精品无码久久SM| 最近免费中文字幕大全高清大全1| 日韩亚洲Av人人夜夜澡人人爽 | 亚洲成aⅴ人片久青草影院按摩| 国产大片91精品免费看3| 黄页网址大全免费观看12网站| 亚洲美日韩Av中文字幕无码久久久妻妇| 精品人妻系列无码人妻免费视频| 亚洲av永久无码精品古装片 | 野花视频在线官网免费1| 亚洲第一页日韩专区| 久久青草免费91线频观看不卡| 91嫩草亚洲精品| 国产免费观看视频| 久久精品国产影库免费看| 亚洲日本在线免费观看| 精品少妇人妻AV免费久久洗澡 | 亚洲一级毛片在线播放| 四虎永久成人免费| 精品国产污污免费网站 | 亚洲婷婷综合色高清在线| 国产又长又粗又爽免费视频 | 免费网站观看WWW在线观看| 亚洲日韩乱码中文无码蜜桃臀| 日日夜夜精品免费视频|