Dans le paysage moderne du développement Web, l'interaction avec le matériel utilisateur (comme les caméras et les microphones) est devenue beaucoup plus facile avec l'avènement de diverses API de navigateur. L'une de ces API utiles est l'API MediaRecorder, qui permet aux développeurs d'enregistrer de l'audio et de la vidéo directement à partir du navigateur.
Dans cet article, nous expliquerons comment enregistrer des vidéos à l'aide de JavaScript en accédant à la webcam de l'utilisateur, en enregistrant le flux vidéo et en proposant la vidéo enregistrée en téléchargement, le tout via les API du navigateur !
Traditionnellement, l'enregistrement du contenu multimédia d'un utilisateur nécessitait des outils ou des plugins externes (comme Flash). Cependant, avec la pile WebRTC, vous pouvez facilement enregistrer des vidéos, créer des connexions peer-to-peer et interagir avec des appareils multimédias tels que des caméras, des microphones et des écrans, sans avoir besoin d'outils tiers.
L'API MediaRecorder fait partie de cette pile, faisant de l'enregistrement vidéo dans le navigateur un processus transparent.
Pour enregistrer des vidéos, nous allons :
Regardons l'implémentation du code.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Video Recorder</title> </head> <body> <h1>Video Recorder using JavaScript</h1> <video id="video" autoplay></video> <button id="start-btn">Start Recording</button> <button id="stop-btn" disabled>Stop Recording</button> <video id="recorded-video" controls></video> <a id="download-link" download="recorded-video.webm">Download Recorded Video</a> <script> const videoElement = document.getElementById('video'); const startButton = document.getElementById('start-btn'); const stopButton = document.getElementById('stop-btn'); const recordedVideoElement = document.getElementById('recorded-video'); const downloadLink = document.getElementById('download-link'); let mediaRecorder; let recordedChunks = []; // Access webcam async function startVideoStream() { const stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true }); videoElement.srcObject = stream; // Set up MediaRecorder to record the stream mediaRecorder = new MediaRecorder(stream); // When data becomes available, store it mediaRecorder.ondataavailable = (event) => { if (event.data.size > 0) { recordedChunks.push(event.data); } }; // When recording stops, create a video blob and show it mediaRecorder.onstop = () => { const blob = new Blob(recordedChunks, { type: 'video/webm' }); const videoURL = URL.createObjectURL(blob); recordedVideoElement.src = videoURL; downloadLink.href = videoURL; }; } // Start recording startButton.addEventListener('click', () => { recordedChunks = []; mediaRecorder.start(); startButton.disabled = true; stopButton.disabled = false; }); // Stop recording stopButton.addEventListener('click', () => { mediaRecorder.stop(); startButton.disabled = false; stopButton.disabled = true; }); // Initialize the video stream startVideoStream(); </script> </body> </html>
Nous utilisons la méthode navigator.mediaDevices.getUserMedia() pour demander l'accès à la caméra et au microphone de l'utilisateur.
const stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true }); videoElement.srcObject = stream;
Cette méthode renvoie une promesse qui se résout en un objet MediaStream, qui contient la vidéo et l'audio en direct de la caméra de l'utilisateur. La vidéo est ensuite affichée à l'aide de l'option
Une fois que nous avons le flux en direct, nous pouvons créer une instance de MediaRecorder pour enregistrer la vidéo.
mediaRecorder = new MediaRecorder(stream);
Le MediaRecorder capturera le flux en morceaux, et chaque fois que des données sont disponibles, l'événement ondataavailable est déclenché. Nous stockons ces morceaux dans un tableau appelé recordChunks.
mediaRecorder.ondataavailable = (event) => { if (event.data.size > 0) { recordedChunks.push(event.data); } };
Lorsque l'enregistrement est arrêté, nous combinons les morceaux dans un Blob et créons une URL pour télécharger la vidéo.
mediaRecorder.onstop = () => { const blob = new Blob(recordedChunks, { type: 'video/webm' }); const videoURL = URL.createObjectURL(blob); recordedVideoElement.src = videoURL; downloadLink.href = videoURL; };
La vidéo peut maintenant être lue dans le menu
Nous avons ajouté deux boutons pour contrôler l'enregistrement :
Les boutons sont également désactivés ou activés en conséquence pour éviter les interactions inutiles pendant le processus.
Enregistrer des vidéos directement dans le navigateur à l'aide de JavaScript est devenu incroyablement simple grâce à l'API MediaRecorder et à la méthode getUserMedia(). Ces outils vous permettent de créer des applications puissantes et riches en médias directement dans le navigateur sans nécessiter de logiciel externe.
En suivant l'exemple ci-dessus, vous pouvez facilement implémenter la fonctionnalité d'enregistrement vidéo dans vos applications Web, offrant aux utilisateurs la possibilité d'enregistrer, de prévisualiser et de télécharger des vidéos directement depuis leur navigateur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!