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,是吗?不管怎样,这件我请客;-检查我的编辑。