Предотвратить браузер для iOS, чтобы включить режим полноэкранной камеры при потоковой передаче видео камерыIOS

Программируем под IOS
Anonymous
Предотвратить браузер для iOS, чтобы включить режим полноэкранной камеры при потоковой передаче видео камеры

Сообщение Anonymous »

Я работал в этом учебном пособии https://www.digitalocean.com/community/ ... tusermedia для захвата видеопотоков с передней или задней камеры на iPhone. Safari или Edge. Он показывает канал камеры в режиме полноэкранного режима, а не в сером видео поле.feather.replace();

const controls = document.querySelector('.controls');
const cameraOptions = document.querySelector('.video-options>select');
const video = document.querySelector('video');
const canvas = document.querySelector('canvas');
const screenshotImage = document.querySelector('img');
const buttons = [...controls.querySelectorAll('button')];
let streamStarted = false;

const [play, pause, screenshot] = buttons;

const constraints = {
video: {
width: {
min: 1280,
ideal: 1920,
max: 2560,
},
height: {
min: 720,
ideal: 1080,
max: 1440
},
}
};

cameraOptions.onchange = () => {
const updatedConstraints = {
...constraints,
deviceId: {
exact: cameraOptions.value
}
};

startStream(updatedConstraints);
};

play.onclick = () => {
if (streamStarted) {
video.play();
play.classList.add('d-none');
pause.classList.remove('d-none');
return;
}
if ('mediaDevices' in navigator && navigator.mediaDevices.getUserMedia) {
const updatedConstraints = {
...constraints,
deviceId: {
exact: cameraOptions.value
}
};
startStream(updatedConstraints);
}
};

const pauseStream = () => {
video.pause();
play.classList.remove('d-none');
pause.classList.add('d-none');
};

const doScreenshot = () => {
canvas.width = video.videoWidth;
canvas.height = video.videoHeight;
canvas.getContext('2d').drawImage(video, 0, 0);
screenshotImage.src = canvas.toDataURL('image/webp');
screenshotImage.classList.remove('d-none');
};

pause.onclick = pauseStream;
screenshot.onclick = doScreenshot;

const startStream = async (constraints) => {
const stream = await navigator.mediaDevices.getUserMedia(constraints);
handleStream(stream);
};

const handleStream = (stream) => {
video.srcObject = stream;
play.classList.add('d-none');
pause.classList.remove('d-none');
screenshot.classList.remove('d-none');

};

const getCameraSelection = async () => {
const devices = await navigator.mediaDevices.enumerateDevices();
const videoDevices = devices.filter(device => device.kind === 'videoinput');
const options = videoDevices.map(videoDevice => {
return `${videoDevice.label}`;
});
cameraOptions.innerHTML = options.join('');
};

getCameraSelection();


Подробнее здесь: https://stackoverflow.com/questions/784 ... amera-vide

Вернуться в «IOS»