J'utilise la bibliothèque fluent-ffmpeg avec node.js pour transcoder des vidéos à l'origine dans un format de film flash au format mp3 avec plusieurs résolutions, 1080p, etc. Une fois le transcodage terminé, Je voudrais déplacer la vidéo transcodée vers un s3 s3.Télécharger la sortie FFmpeg directement sur Amazon S3
Je tire le fichier .flv d'origine d'un compartiment source s3 et passe le flux à la fonction constructeur ffmpeg. Le problème se situe après la fin du transcodage, comment puis-je obtenir le flux des données mp4 à envoyer à s3.
Voici le code que j'ai jusqu'à présent:
var params = {
Bucket: process.env.SOURCE_BUCKET,
Key: fileName
};
s3.getObject(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
var format = ffmpeg(data)
.size('854x480')
.videoCodec('libx264')
.format('flv')
.toFormat('mp4');
.on('end', function() {
//Ideally, I would like to do the uploading here
var params = {
Body: //{This is my confusion, how do I get the stream to add here?},
Bucket: process.env.TRANSCODED_BUCKET,
Key: fileName
};
s3.putObject(params, function (err, data) {
});
})
.on('error', function (err) {
console.log('an error happened: ' + err.message);
});
});
Pour le code ci-dessus, où puis-je obtenir le flux transcodé pour ajouter à la propriété « Body » de l'objet params?
Mise à jour:
Voici une révision de ce que je suis en train de faire:
var outputStream: MemoryStream = new MemoryStream();
var proc = ffmpeg(currentStream)
.size('1920x1080')
.videoCodec('libx264')
.format('avi')
.toFormat('mp4')
.output(outputStream)
// setup event handlers
.on('end', function() {
uploadFile(outputStream, "").then(function(){
resolve();
})
})
.on('error', function (err) {
console.log('an error happened: ' + err.message);
});
Je voudrais éviter de copier le fichier sur le système de fichiers local à partir s3, plutôt je préférerais traiter le fichier en mémoire et le télécharger sur s3 lorsque vous avez terminé. Est-ce que fluent-ffmpeg permettrait ce scénario?
Existe-t-il un moyen d'écrire temporairement dans un tampon mémoire, puis d'envoyer le tampon dans le paramètre Body? – user1790300
Y at-il un moyen d'éviter d'avoir à écrire temporairement le fichier sur le système de fichiers? – user1790300