Веб-приложение для записи видео с веб-камеры пользователя - PullRequest
0 голосов
/ 30 апреля 2020

Я заинтересован в создании веб-приложения, которое будет обслуживаться nginx, и которое будет запрашивать у пользователя доступ к своей веб-камере, записывать данные за определенный период времени, возможно воспроизводить его пользователю и сохранять в сервер.

Я также думаю о базовом c пользовательском интерфейсе. Это может быть чистый HTML + PHP ?. Может ли это быть python?

Подобные вопросы здесь не кажутся очень уместными / полезными.

Что бы вы предложили?

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Вы можете использовать MediaRecorder для записи видео с веб-камеры.

Записать видео и сохранить его данные в recordedBlobs:

function handleDataAvailable(event) {
    if (event.data && event.data.size > 0) {
        recordedBlobs.push(event.data);
    }
}

function startRecording() {
    recordedBlobs = [];
    let options = { mimeType: 'video/webm;codecs=vp8' };
    let types = ['video/webm;codecs=vp9', 'video/webm\;codecs=h264', 'video/webm', 'video/mpeg', ''];

    for (let i in types) {
        try {
            if (MediaRecorder.isTypeSupported(types[i])) {
                options = { mimeType: types[i] };
                break;
            }
        }
        catch (e) {
            console.log('Exception while creating MediaRecorder: ${JSON.stringify(e)}');
        }
    }

    try {
        mediaRecorder = new MediaRecorder(window.stream, options);
    } catch (e) {
        console.error('Exception while creating MediaRecorder: ${JSON.stringify(e)}');
        return;
    }
    mediaRecorder.onstop = (event) => {
        console.log('Recorder stopped: ', event);
    };
    mediaRecorder.ondataavailable = handleDataAvailable;
    mediaRecorder.start(10); // collect 10ms of data
}

function stopRecording() {
    mediaRecorder.stop();
}

Загрузить данные видео на страницу действий:

function upload() {
    const blob = new Blob(recordedBlobs, { type: 'video/webm' });
    var formData = new FormData();
    formData.append("video", blob, fileName + ".webm");

    var xhr = new XMLHttpRequest();
    xhr.open("POST", "upload.aspx");
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            if (xhr.status === 200) {

            } 
        }
    };
    xhr.onerror = function () {
        alert(`Network Error`);
    };
    xhr.send(formData);
}

Вы можете реализовать страницу действий на любом языке программирования, PHP, Java, Python или C#.

1 голос
/ 30 апреля 2020

Нет. Для доступа к веб-камере пользователя через браузер требуется JavaScript и API, предоставляемые ей браузером .

Серверные программы не запускаются на компьютере пользователя и, следовательно, не могут получить доступ к его оборудованию (и Python и PHP не могут запускать клиентскую часть с веб-страницы).

...