Итак, у меня есть сценарий, с помощью которого я могу показать канал двух камер, подключенных к устройству, при выборе конкретной опции.
Сценарий, который я использовал, показан ниже:
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);
}
Но мне нужно вместо опции выбора, мне нужна кнопка «Изменить камеру». При нажатии на эту кнопку камера должна переключиться. Есть ли способ достичь этого.
Вы можете проверить скрипку того, что я сделал.
https://jsfiddle.net/abnitchauhan/y8tjrow3/