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

資訊專(zhuān)欄INFORMATION COLUMN

getUserMedia API的兩個(gè)使用案例

XanaHopper / 3179人閱讀

摘要:之前在微博看到了的文章通過(guò)獲取攝像頭影像,了解到了這個(gè),覺(jué)得挺有意思的,于是親自試驗(yàn)了一番,做了倆簡(jiǎn)單的小。簡(jiǎn)介在的文章中,介紹的是這個(gè),然而我在上查到的是這個(gè)已經(jīng)被廢棄了,取而代之的是。

之前在微博看到了@HeeroLaw的文章《通過(guò)WebRTC獲取攝像頭影像》,了解到了getUserMedia這個(gè)API,覺(jué)得挺有意思的,于是親自試驗(yàn)了一番,做了倆簡(jiǎn)單的小DEMO。

getUserMedia簡(jiǎn)介

在@HeeroLaw的文章中,介紹的是navigator.getUserMedia這個(gè)API,然而我在MDN上查到的是這個(gè)API已經(jīng)被廢棄了,取而代之的是MediaDevices.getUserMedia。

mediaDevices也是掛在navigator對(duì)象下面的,調(diào)用方法如下:

navigator.mediaDevices.getUserMedia(myConstraints).then(function(mediaStream) {
  /* use the stream */
}).catch(function(err) {
  /* handle the error */
});

其中myConstraints參數(shù)是一個(gè)對(duì)象,可以指定需要調(diào)用的外部媒體設(shè)備,目前只有攝像頭和麥克風(fēng):

// 同時(shí)啟用麥克風(fēng)和攝像頭
var myConstraints = { audio: true, video: true }

更為詳細(xì)的參數(shù)介紹,例如視頻尺寸以及攝像頭和幀率等,請(qǐng)參見(jiàn)MediaDevices.getUserMedia()參數(shù)

需要注意的是,getUserMedia不支持在非安全的頁(yè)面內(nèi)調(diào)用,需要https支持,在開(kāi)發(fā)階段則需要使用localhost域來(lái),分別訪問(wèn)百度和新浪微博然后打開(kāi)控制臺(tái)輸入下面的代碼進(jìn)行測(cè)試:

navigator.mediaDevices.getUserMedia({video:true}).then((stream) => console.log(Object.prototype.toString.call(stream))).catch(error => {console.error(error)})

另外同一域名下首次調(diào)用此API需要征求用戶(hù)同意。

攝像頭案例

創(chuàng)建一個(gè)video標(biāo)簽

調(diào)用getUserMedia將數(shù)據(jù)顯示到video標(biāo)簽

var video = document.querySelector("#video")
var myConstraints = {
  video: {
    facingMode: "user" // 優(yōu)先調(diào)用前置攝像頭
  }
}
navigator.mediaDevices.getUserMedia(myConstraints).then((stream) => {
  // createObjectURL是個(gè)非常有用的API,諸位可以多研究研究
  video.src = window.URL.createObjectURL(stream)
  video.play()
}, (error) => {
  console.error(error.name || error)
})

查看在線(xiàn)DEMO

麥克風(fēng)案例

因?yàn)榧兇庥靡粋€(gè)audio標(biāo)簽來(lái)播放麥克風(fēng)拾取到的聲音顯得太沒(méi)特色了,于是我用到了以前寫(xiě)的一個(gè)音頻可視化庫(kù)Vudio.js,代碼如下:

創(chuàng)建一個(gè)canvas來(lái)顯示音頻波形圖

通過(guò)Vudio.js和getUserMedia來(lái)顯示麥克風(fēng)拾取到的音頻的波形

var canvas = document.querySelector("#canvas")

navigator.mediaDevices.getUserMedia({
 audio: true
}).then((stream) => {

  // 調(diào)用Vudio
  var vudio = new Vudio(stream, canvas, {
    accuracy: 256,
    width: 1024,
    height: 200,
    waveform: {
      fadeSide: false,
      maxHeight: 200,
      verticalAlign: "middle",
      horizontalAlign: "center",
      color: "#2980b9"
    }
  })

  vudio.dance()

}).catch((error) => {
 console.error(error.name || error)
})

查看在線(xiàn)DEMO

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

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

相關(guān)文章

  • getUserMedia API及HTML5 調(diào)用手機(jī)攝像頭拍照

    摘要:失敗回調(diào)函數(shù)的參數(shù),可能的異常有硬件問(wèn)題用戶(hù)拒絕了當(dāng)前的瀏覽器實(shí)例的訪問(wèn)請(qǐng)求或者用戶(hù)拒絕了當(dāng)前會(huì)話(huà)的訪問(wèn)或者用戶(hù)在全局范圍內(nèi)拒絕了所有媒體訪問(wèn)請(qǐng)求。 getUserMedia API簡(jiǎn)介 HTML5的getUserMedia API為用戶(hù)提供訪問(wèn)硬件設(shè)備媒體(攝像頭、視頻、音頻、地理位置等)的接口,基于該接口,開(kāi)發(fā)者可以在不依賴(lài)任何瀏覽器插件的條件下訪問(wèn)硬件媒體設(shè)備。 getUserM...

    xiaokai 評(píng)論0 收藏0
  • getUserMedia API及HTML5 調(diào)用手機(jī)攝像頭拍照

    摘要:失敗回調(diào)函數(shù)的參數(shù),可能的異常有硬件問(wèn)題用戶(hù)拒絕了當(dāng)前的瀏覽器實(shí)例的訪問(wèn)請(qǐng)求或者用戶(hù)拒絕了當(dāng)前會(huì)話(huà)的訪問(wèn)或者用戶(hù)在全局范圍內(nèi)拒絕了所有媒體訪問(wèn)請(qǐng)求。 getUserMedia API簡(jiǎn)介 HTML5的getUserMedia API為用戶(hù)提供訪問(wèn)硬件設(shè)備媒體(攝像頭、視頻、音頻、地理位置等)的接口,基于該接口,開(kāi)發(fā)者可以在不依賴(lài)任何瀏覽器插件的條件下訪問(wèn)硬件媒體設(shè)備。 getUserM...

    李增田 評(píng)論0 收藏0
  • 手把手教你如何實(shí)現(xiàn)拍照功能

    摘要:實(shí)現(xiàn)手機(jī)拍照功能,純書(shū)寫(xiě)先上圖為主,再做詳細(xì)講解需要注意的是這里的攝像頭是主要是通過(guò)瀏覽器中的一個(gè)叫做屬性在代碼運(yùn)行時(shí)打開(kāi)頁(yè)面自動(dòng)開(kāi)啟不明白直接上代碼的提供了訪問(wèn)媒體的能力基于該特性開(kāi)發(fā)者可以不依賴(lài)任何瀏覽器插件下去訪問(wèn)視頻和音頻等設(shè)備如不 實(shí)現(xiàn)手機(jī)拍照功能,純JS書(shū)寫(xiě) First: 先上圖為主,再做詳細(xì)講解: showImg(https://segmentfault.com/img/...

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

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

0條評(píng)論

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