Javascript 切换B/W按钮上的多个摄像头单击网页:HTML,JS
因此,我拥有的是一个脚本,通过它,我可以在选择特定选项时显示连接到设备的两个摄像头 我使用的脚本如下所示:Javascript 切换B/W按钮上的多个摄像头单击网页:HTML,JS,javascript,html,html5-canvas,Javascript,Html,Html5 Canvas,因此,我拥有的是一个脚本,通过它,我可以在选择特定选项时显示连接到设备的两个摄像头 我使用的脚本如下所示: var videoElement = document.querySelector('video'); var videoSelect = document.querySelector('select#videoSource'); videoSelect.onchange = getStream; getStream().then(getDevices).the
var videoElement = document.querySelector('video');
var videoSelect = document.querySelector('select#videoSource');
videoSelect.onchange = getStream;
getStream().then(getDevices).then(gotDevices);
function getDevices()
{
return navigator.mediaDevices.enumerateDevices();
}
function gotDevices(deviceInfos)
{
window.deviceInfos = deviceInfos; // make available to console
console.log("Available Input and Output Devices: ", deviceInfos);
for(const deviceInfo of deviceInfos)
{
const option = document.createElement('option');
option.value = deviceInfo.deviceId;
if(deviceInfo.kind === 'videoinput'){
option.text = deviceInfo.label || `Camera ${videoSelect.length + 1}` ;
videoSelect.appendChild(option);
}
}
}
function getStream()
{
if(window.stream)
{
window.stream.getTracks().forEach(track =>{
track.stop();
});
}
const videoSource = videoSelect.value
const constraints = {
video:{deviceId: videoSource ? { exact: videoSource}: undefined }
};
return navigator.mediaDevices.getUserMedia(constraints).
then(gotStream).catch(handleError);
}
function gotStream(stream)
{
window.stream = stream ;
videoSelect.selectedIndex = [...videoSelect.options].
findIndex(option => option.text === stream.getVideoTracks()[0].label);
console.log("videoSelecte.selectedIndex : ", videoSelect.selectedIndex)
videoElement.srcObject = stream;
}
function handleError(error)
{
console.log("Error: ", error);
}
但我需要的不是选择选项,而是“更改相机”按钮。单击该按钮后,相机将切换。有没有办法做到这一点
你可以检查一下我所做的事
网络摄像头
选择视频输入
切换照相机
主要功能{
const videoElement=document.queryselector视频;
const toggleButton=document.querySelectortoggleCam;
/**
*@type{Array}
*/
让视频设备;
设currendex=-1;
初始化;
函数初始化{
如果navigator.mediaDevices&&navigator.mediaDevices.enumerateDevices{
navigator.mediaDevices
.getUserMedia{视频:{}
.then=>navigator.mediaDevices.enumerateDevices
.ThenDeviceInfo=>{
videoDevices=Array.FromDeviceInfo.filteritem=>item.kind==videoinput;
如果videoDevices.length==0{
诺卡美拉;
}如果videoDevices.length==1,则为else{
常量标签=视频设备[0]。标签| |默认摄像机;
toggleButton.textContent=`Using${label}`;
toggleButton.setAttributedisabled,1;
使用摄像设备[0];
}否则{
切换摄像机;
toggleButton.addEventListenerclick,toggleCamera;
}
};
}否则{
诺卡美拉;
}
}
函数nocamera{
toggleButton.textContent=无摄像头;
toggleButton.setAttributedisabled,1;
}
/**
*@param{MediaDeviceInfo}设备
*/
功能使用摄像设备{
如果videoElement&&videoElement.srcObject&&videoElement.srcObject.getTracks{
videoElement.srcObject.getTracks.forEachtrack=>track.stop;
}
const deviceId=device.deviceId;
常量约束={
视频:{deviceId:deviceId?{exact:deviceId}:undefined}
};
navigator.mediaDevices
.getUserMediaconstraints
.thenstream=>{
videoElement.srcObject=流;
}
.catchhandleError;
}
功能切换照相机{
currIndex=currIndex+1%videoDevices.length;
使用摄像设备[当前索引];
const nextIndex=currendex+1%videoDevices.length;
const label=videoDevices[nextIndex].label | | `Camera${nextIndex}`;
toggleButton.textContent=`Use${label}`;
}
函数句柄错误{
console.logError:,错误;
}
}
主要的
我不想要选择选项。我只要按钮。在按钮上单击。相机应该在没有任何选择选项的情况下切换。@没有人不熟悉JS,是吗?不管怎样,这件我请客;-检查我的编辑。