成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

無(wú)需Flash錄視頻——HTML5中級(jí)進(jìn)階

Cruise_Chan / 3184人閱讀

摘要:比如就會(huì)報(bào)出警告,并執(zhí)行出錯(cuò)。視頻的寬高,并不會(huì)因?yàn)樘顚?xiě)的數(shù)值比例不合法而失真。通過(guò)綁定事件,來(lái)獲取視頻片段數(shù)據(jù),并在內(nèi)存中累積。執(zhí)行之后會(huì)停止觸發(fā)事件。錄制結(jié)束后,把累計(jì)的片段數(shù)據(jù)保存為對(duì)象,并從瀏覽器下載存為視頻文件。

前言

HTML5的權(quán)限越來(lái)越大了,瀏覽器可以直接調(diào)用攝像頭、麥克風(fēng)了,好激動(dòng)啊。我們要用純潔的HTML代碼造出自己的天地。

視頻采集

本篇介紹的栗子 都是在chrome 47 版本以上的,低版本的可能會(huì)出現(xiàn)白屏和錯(cuò)誤。

1.安全環(huán)境

隨著Chrome版本的升高,安全性問(wèn)題也越來(lái)越被重視,較新版本的Chrome瀏覽器在調(diào)用一些API時(shí)需要頁(yè)面處在安全環(huán)境中。本篇文章所介紹的API函數(shù),都需要在安全環(huán)境中執(zhí)行。如果處在非安全環(huán)境下 ( http頁(yè)面 ) 這些API就會(huì)有意想不到的問(wèn)題。

比如 getUserMedia()就會(huì)報(bào)出警告,并執(zhí)行出錯(cuò)。而在設(shè)備枚舉enumerateDevices()時(shí),雖然不會(huì)報(bào)錯(cuò),但是他隱藏了設(shè)備label。

getUserMedia() no longer works on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.

根據(jù)谷歌的意思,常用的安全環(huán)境有如下

http://localhost

http://127.0.0.1

https 開(kāi)頭的地址頁(yè)面

如果你做了一個(gè)視頻測(cè)試的頁(yè)面,想嘚瑟給局域網(wǎng)的其他人,但是又沒(méi)有域名證書(shū)怎么辦?
這時(shí)候只能通過(guò)修改其他人的hosts文件了
比如你的測(cè)試服務(wù)器IP地址是192.168.2.18,那么其他人的hosts文件修改如下:

#localhost 127.0.0.1
localhost 192.168.2.18

當(dāng)使用別人的Chrome瀏覽器訪(fǎng)問(wèn) http://localhost/[getUserMedi...時(shí),就會(huì)順利的執(zhí)行這些API了。

但是移動(dòng)端的瀏覽器并不認(rèn)localhost,就算你修改了hosts ,移動(dòng)端的瀏覽器根本不理你,解析都不解析。
所以想在手機(jī)上測(cè)試,只能老老實(shí)實(shí)申請(qǐng)個(gè)證書(shū)了。

2.設(shè)備枚舉

在開(kāi)啟攝像頭之前,先要把可以使用的麥克風(fēng)和攝像頭 ( 輸入設(shè)備 ) 列出來(lái),如果沒(méi)有這兩樣設(shè)備也就無(wú)法繼續(xù)。

代碼如下:




效果如下圖,和瀏覽器自己獲取的一模一樣。

注意:上圖的實(shí)例中,瀏覽器地址欄最右邊的攝像頭標(biāo)識(shí)是需要使用 getUserMedia()函數(shù)時(shí)才會(huì)出現(xiàn)。


這時(shí)候可以通過(guò)瀏覽器給出的菜單下拉選擇設(shè)備。

3.設(shè)置參數(shù),預(yù)覽

我們可以通過(guò)代碼來(lái)指定使用哪個(gè)攝像頭和麥克風(fēng)設(shè)備。
也可以通過(guò)代碼設(shè)置視頻的寬、高和幀率。

代碼如下:

 

輸出的視頻流通過(guò)blob對(duì)象鏈接綁定到video標(biāo)簽輸出。

這個(gè)deviceId就是從上文設(shè)備枚舉 enumerateDevices() 獲取到的。
兩種設(shè)備,如果有一個(gè)deviceId填寫(xiě)不正確,就會(huì)報(bào)出一個(gè)DevicesNotFoundError的錯(cuò)誤。而且一旦指定了設(shè)備后,瀏覽器自己的設(shè)備選擇就會(huì)變成灰色不可選。

視頻的寬高,并不會(huì)因?yàn)樘顚?xiě)的數(shù)值比例不合法而失真。
比如你設(shè)定了寬度30,高度100,那么他會(huì)從視頻中心截取 30x100 的畫(huà)面,而不是把原畫(huà)面擠壓到這個(gè)30x100的尺寸。

效果如下:

如果您的預(yù)覽一片漆黑,或者只有一個(gè)小黑點(diǎn),那么說(shuō)明您的攝像頭正在被占用...

吐槽:這個(gè)getUserMedia()函數(shù)的參數(shù),w3的官方文檔鏈接如下:
https://www.w3.org/TR/mediaca...
可是Chrome并沒(méi)有遵循它,而且差距還挺大...

視頻保存 1. 格式支持

Chrome瀏覽器是大力推廣webm的視頻格式的??梢杂?b>MediaRecorder.isTypeSupported("video/webm")來(lái)測(cè)試是否支持這種類(lèi)型的編碼。如果返回true,那么我們錄制的視頻就可以被保存為這種指定的格式。如果不指定,那么將會(huì)使用瀏覽器自動(dòng)指定的文件格式。文檔原話(huà)如下

If this paramater is not specified, the UA will use a platform-specific default format.

但是這個(gè)默認(rèn)值卻無(wú)法直接獲取,全靠猜...

2. 視頻錄制 MediaRecorder

我們使用 MediaRecorder來(lái)錄制視頻,參數(shù)是通過(guò)getUserMedia()獲取的媒體流。

通過(guò)綁定ondataavailable事件,來(lái)獲取視頻片段數(shù)據(jù),并在內(nèi)存中累積。

錄制的開(kāi)始和結(jié)束分別使用 startstop 函數(shù)。

執(zhí)行start之后會(huì)周期性觸發(fā)ondataavailable事件。

執(zhí)行stop之后會(huì)停止觸發(fā)ondataavailable事件。

錄制結(jié)束后,把累計(jì)的片段數(shù)據(jù)保存為blob對(duì)象,并從瀏覽器下載存為視頻文件。

代碼如下:

注意:本例并沒(méi)有填寫(xiě)視頻文件頭,所以保存出來(lái)的視頻文件沒(méi)有時(shí)間軌,無(wú)法快進(jìn)和跳躍??梢杂酶袷焦S(chǎng)轉(zhuǎn)

“莫基了”上面有一個(gè)錄制音頻的例子 傳送門(mén)

這篇文章的DEMO請(qǐng)戳 這里


相關(guān)閱讀

多屏互動(dòng)——H5中級(jí)進(jìn)階
前端,想說(shuō)愛(ài)你不容易!
無(wú)需Flash實(shí)現(xiàn)圖片裁剪——HTML5中級(jí)進(jìn)階

作者信息
作者來(lái)自力譜宿云 LeapCloud 團(tuán)隊(duì)_UX成員:王詩(shī)詩(shī) 【原創(chuàng)】
力譜宿云 LeapCloud 團(tuán)隊(duì)首發(fā):https://blog.maxleap.cn/archi...

歡迎關(guān)注微信訂閱號(hào):MaxLeap_yidongyanfa

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/11762.html

相關(guān)文章

  • 無(wú)需Flash實(shí)現(xiàn)圖片裁剪——HTML5中級(jí)進(jìn)階

    摘要:需求就是那么簡(jiǎn)單,在瀏覽器里裁剪圖片并上傳到服務(wù)器。原圖片對(duì)象上傳裁剪后的對(duì)象初始化圖片預(yù)覽根據(jù)裁剪參數(shù)繪制轉(zhuǎn)對(duì)象以下將對(duì)每個(gè)環(huán)節(jié)詳解。或者根據(jù)獲取裁剪信息包括旋轉(zhuǎn)和縮放用進(jìn)行手動(dòng)繪制。 前言 圖片裁剪上傳,不僅是一個(gè)很貼合用戶(hù)體驗(yàn)的功能,還能夠統(tǒng)一特定圖片尺寸,優(yōu)化網(wǎng)站排版,一箭雙雕。 需求就是那么簡(jiǎn)單,在瀏覽器里裁剪圖片并上傳到服務(wù)器。 我第一個(gè)想到的方法就是,將圖片和裁剪參數(shù)(x...

    JerryC 評(píng)論0 收藏0
  • JS進(jìn)階篇--ckplayer.js視頻播放插件

    摘要:,是否自動(dòng)播放,可以為或,默認(rèn)為,參數(shù)不為時(shí)播放器加載完成后均為暫停狀態(tài)。,視頻開(kāi)始前廣告播放的秒數(shù),只針對(duì)或圖片有效,默認(rèn)為。,視頻結(jié)束后的動(dòng)作,停止播放并發(fā)送,是不發(fā)送且重新循環(huán)播放,停止播放,默認(rèn)為。 網(wǎng)頁(yè)中常見(jiàn)的功能就是播放視頻,下面介紹的這個(gè)ckplayer.js既可以在pc端播放,也可以在手機(jī)網(wǎng)頁(yè)上播放。 可調(diào)用flash也可以調(diào)用html5播放器: var ...

    tangr206 評(píng)論0 收藏0
  • 那是我在夕陽(yáng)下的奔跑:邊跑邊學(xué)習(xí)html5之a(chǎn)udio與video

    摘要:尤其是喬布斯在年發(fā)布的一篇的文章。喬布斯在里面寫(xiě)下了關(guān)于的一點(diǎn)看法,說(shuō)明自己為什么不使用,談到關(guān)于的一些問(wèn)題,比如開(kāi)放性,安全性,對(duì)于設(shè)備續(xù)航的影響,不利于觸摸屏,等等。終于,于年月日,爸爸也放棄治療了,宣布將于年正式退休。 今天為大家分享一下html5中的視頻(video)與音頻(audio)。在進(jìn)入主題之前我們先了解一下Flash與html5這兩種技術(shù)的時(shí)代背景與發(fā)展歷史。 1.前...

    gself 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<