Je suis en train de convertir des fichiers webM en mp4 avec ffmpeg.js. Je suis en train d'enregistrer une vidéo à partir de canvas (superposition avec quelques informations) et d'enregistrer les données audio de la vidéo.webRTC convertir webm en mp4 avec ffmpeg.js
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 renvoie une vidéo WebM
var blob = new Blob(recordedBlobs, {type: 'video/webm'});
Maintenant, je veux un fichier mp4 et vérifié les ffmpeg.js de Muaz-khan. Les exemples montrent juste comment convertir en mp4 lorsque vous avez 2 flux uniques (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?
c'est une bidouille impressionnante. Maintenant, j'économise beaucoup de code et je peux me débarrasser de ffmpeg_asm.js. Merci beaucoup. –
@Ajay _ "Donc, vous pouvez obtenir l'enregistrement mp4 directement à partir de chrome MediaRecorder avec piratage suivant" _ '$ ffmpeg -i fichier.mp3' sorties' Entrée # 0, matroska, webm, de 'fichier.mp3': Métadonnées: encodeur: Chrome Durée: N/A, début: 0.000000, débit: N/A Stream # 0: 0 (eng): Audio: opus, 48000 Hz, mono, fltp (par défaut) 'et' $ ffprobe -v error -select_streams a: 0 -show_entries stream = codec_name -of default = noprint_wrappers = 1: nokey = 1 fichier.mp3' sort 'opus' pour utiliser l'approche avec l'entrée de fichier' .wav'. – guest271314
@Ajay que voulez-vous dire par "obtenir l'enregistrement mp4 directement"? Peut-être que j'ai fait une erreur, mais dans mon test je reçois seulement la vidéo webm/h264 originale mais avec un type mime différent. Donc, le conteneur vidéo ne change pas. Ainsi, les données binaires sont exactement les mêmes après la nouvelle ligne Blob (...), n'est-ce pas? Thats ce que j'ai essayé: https://jsfiddle.net/zqd8qf6e/ Est-ce que le but ici n'est pas que le conteneur vidéo change de webm en mp4 sans ffmpeg.js? –