WebRTC如何獲取音頻視頻設備


enumerateDevices的使用

說明

enumerateDevices :獲取音視頻設備

基本格式

var ePromise = navigator.mediaDevices.enumerateDevices();

MediaDevicesInfo(返回的結構體):

JavaScript中的Promise

案例獲取終端設備

vim index.html

<html>
  <head>
    	<title> WebRTC 獲取音視頻設備</title>
  </head>
  <body>
    <div>
      <div>
        <label>audio input device:</label>
        <select id="audioSource"></select>
      </div>
      <div>
        <label>audio output device:</label>
        <select id="audioOutput"></select>
      </div>
      <div>
        <label>video input device:</label>
        <select id="videoSource"></select>
      </div>
    </div>
    <script src="./js/client.js"></script>
  </body>
</html>

vim client.js

"use strict"
// 獲取js中的文件
var audioSource = document.querySelector("select#audioSource");
var audioOutput = document.querySelector("select#audioOutput");
var videoSource = document.querySelector("select#videoSource");


// 如果瀏覽器不支持音視頻設備就直接退出
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices){
  console.log("enumerateDevices is not supported!");
  
}else{
  navigator.mediaDevices.enumerateDevices()
  .then(gotDevices)
  .catch(handleError);
}

// 打印每一個設置的信息
function gotDevices(deviceInfos){
  	deviceInfos.forEach(function(deviceInfo){
      console.log(deviceInfo.kind + ": label"             
                  + deviceInfo.label + ":id= "
                 	+ deviceInfo.deviceId + ":  groupId = "
                  + deviceInfo.groupId
                 );
      // 判斷類型進行寫入對應的選擇框里面
      var option = document.createElement("option");
      option.text = deviceInfo.label;
      option.value = deviceInfo.deviceId;
      if(deviceInfo.kind === "audiosource"){
        audioSource.appendChild(option);
      }else if(deviceInfo.kind === "audiooutput"){
        audioOutput.appendChild(option);
      }else if(deviceInfo.kind === "videosource"){
        videoSource.appendChild(option);
      }
    });
}

// 打印出錯信息
function handleError(err){
  	console.log(err.name + ":" + err.message);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM