Estoy interesado en crear una aplicación web, que será atendida por nginx , y que solicitará al usuario acceso a su cámara web, grabará durante un período de tiempo determinado, tal vez se la reproduzca al usuario y la almacene en el servidor.
También estoy pensando en una interfaz de usuario básica. ¿Podría ser HTML+PHP puro? ¿Podría ser pitón?
Preguntas similares aquí no parecen muy relevantes/útiles.
¿Qué sugieres?
No. El acceso a la cámara web del usuario a través de un navegador requiere JavaScript y las API proporcionadas por el navegador .
Los programas del lado del servidor no se ejecutan en la computadora del usuario y, por lo tanto, no pueden acceder a su hardware (y Python y PHP no pueden ejecutarse en el lado del cliente desde una página web).
Puede usar MediaRecorder para grabar video desde la cámara web.
Grabe un video y guarde sus datos en 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(); }Sube los datos del video a tu página de acción:
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); }Puede implementar la página de acción en cualquier lenguaje de programación, PHP, Java, Python o C#.