在Vue中獲取相機可以通過調用 navigator.mediaDevices.getUserMedia 方法來實現。該方法返回 一個 Promise 對象,成功時會返回一個 MediaStream對象,其中包含有關流媒體的信息,包括音頻軌道(如果請求了音頻)和視頻軌道(如果請求了視頻)。下面我們來看看如何在Vue中獲取相機。
//引入 getUserMedia require('webrtc-adapter') navigator.getUserMedia = (navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia); export default { data () { return { mediaStream: null } }, mounted () { //調用 getUserMedia 方法獲取流 navigator.mediaDevices.getUserMedia({ video: true, audio: true }) .then((stream) => { //獲取到媒體流后,將其賦值給data里的mediaStream this.mediaStream = stream; //為video元素設置srcObject let video = document.querySelector('video'); video.srcObject = stream; video.play(); }) .catch((err) => { console.log(err) }); } }
在上面的代碼中,我們首先引入了 getUserMedia 方法,由于不同瀏覽器支持getUserMedia方法的名稱不一樣,因此需要進行兼容性處理。然后在Vue組件中定義了一個 data 屬性 mediaStream,用于存儲獲取到的流。
在 mounted 鉤子中,我們調用 getUserMedia 方法同時傳入了一個對象參數,通過設置video和audio屬性為true來獲取視頻和音頻軌道。當成功獲取到流時,通過將流賦值給 data 中的 mediaStream,然后再通過 document.querySelector 方法獲取video元素,將其 srcObject 設置為流,并調用其play方法來實現播放。如果獲取失敗,則通過 catch 捕捉錯誤并打印到控制臺。
下一篇vue獲取電腦文件