Je cherche à convertir des fichiers webM en mp4 avec ffmpeg.js. J'enregistre une vidéo depuis le canvas (superposé avec quelques informations) et j'enregistre les données audio de la vidéo.
stream = new MediaStream();
var videoElem = document.getElementById('video');
var videoStream = videoElem.captureStream();
stream.addTrack(videoStream.getAudioTracks()[0]);
stream.addTrack(canvas.captureStream().getVideoTracks()[0]);
var options = {mimeType: 'video/webm'};
recordedBlobs = [];
mediaRecorder = new MediaRecorder(stream, options);
mediaRecorder.onstop = handleStop;
mediaRecorder.ondataavailable = handleDataAvailable;
mediaRecorder.start(100); // collect 100ms of data
function handleDataAvailable(event) {
if (event.data && event.data.size > 0) {
recordedBlobs.push(event.data);
}
}
mediaRecorder.stop();
Ce code fonctionne comme prévu et retourne une vidéo webm
var blob = new Blob(recordedBlobs, {type: 'video/webm'});
Maintenant, je veux un fichier mp4 et j'ai vérifié le ffmpeg.js de muaz-khan. Les exemples montrent simplement comment convertir en mp4 lorsque l'on a 2 flux distincts (audio et vidéo). Mais j'ai un flux avec une piste audio supplémentaire. Puis-je convertir un tel flux en mp4? Comment cela peut-il être fait?