
<select id="camera-all">select>
<video id="localVideo" playsinline autoplay muted>video>
1. 获取前、后置摄像头并以下拉框的形式展示
var cameraAllDom = document.getElementById('camera-all')var cameraList=[];navigator.mediaDevices.enumerateDevices().then((devices) => {if(devices){devices.forEach((device,index)=>{if(device.kind=="videoinput"){cameraList.push(value);}});if(cameraList.length>0){var str="";cameraList.forEach((device,index)=>{str+=`">${device.label}`});cameraAllDom.innerHTML = str;}}});
2. 监听select的改变:切换摄像头
cameraAllDom.onchange = () => {if (cameraAllDom.children.length > 0) {var index = cameraAllDom.selectedIndex; var deviceId = cameraAllDom.options[selIndex].value; selectCamera(deviceId);};}
function selectCamera(deviceId){return new Promise(function (resolve,reject) {var constraints;constraints = {audio: {echoCancellation: true,},video: {deviceId: {exact: deviceId}}};getUserMedia(constraints).then(stream=>{resolve(stream);document.getElementById('localVideo').srcObject = stream;})}
function getUserMedia(constrains,success,error){if(navigator.mediaDevices.getUserMedia){navigator.mediaDevices.getUserMedia(constrains).then(success).catch(error);} else if (navigator.webkitGetUserMedia){navigator.webkitGetUserMedia(constrains).then(success).catch(error);} else if (navigator.mozGetUserMedia){navigator.mozGetUserMedia(constrains).then(success).catch(error);} else if (navigator.getUserMedia){navigator.getUserMedia(constrains).then(success).catch(error);}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!