2017-04-11 5 views
0

Je voudrais vérifier si une vidéo webm encodée a des erreurs. Jusqu'à présent, j'ai réussi à attraper une erreur en utilisant quelque chose comme ceci:Comment vérifier la vidéo webm corrompue en utilisant node.js et fluent-ffmpeg?

ffmpeg -v error -i ../broken.webm -f null - 

qui délivre en sortie:

[matroska,webm @ 0x7fba5400a200] Read error at pos. 110050 (0x1ade2) 

je voudrais obtenir le même résultat en utilisant Node.js et fluent-ffmpeg, mais je ne pouvait pas comprendre pour passer -v error et -f null - en utilisant la syntaxe js wrapper.

Ma tentative naïve ressemble à ceci:

// ffmpeg -v error -i ../broken.webm -f null - 
ffmpeg("../broken.webm") 
.on('error', function(err) { 
    console.error('An error occurred: ',err.message) 
}) 
.save('-f null -') 
.on('end', function() { 
    console.log('done !') 
}) 

mais je me suis une erreur tout de suite: ffmpeg exited with code 1: Unrecognized option '-f null -'.

Toutes les idées sur la façon dont je pourrais appeler ffmpeg -v error -i ../broken.webm -f null - de Node.js en utilisant-ffmpeg couramment?

Répondre

1

Vous vous dirigez dans la bonne direction, mais il y a quelques autres entrées à ajouter à votre ligne ffmpeg pour gérer les options que vous voulez. Quelque chose comme ce qui suit devrait faire ce que vous avez besoin:

var ffmpeg = require('fluent-ffmpeg'); 
var ff = new ffmpeg(); 

ff.on('start', function(commandLine) { 
    // on start, you can verify the command line to be used 
    console.log('The ffmpeg command line is: ' + commandLine); 
}) 
.on('progress', function(data) { 
    // do something with progress data if you like 
}) 
.on('end', function() { 
    // do something when complete 
}) 
.on('error', function(err) { 
    // handle error conditions 
    if (err) { 
    console.log('Error transcoding file'); 
    } 
}) 
.addInput('../broken.webm') 
.addInputOption('-v error') 
.output('outfile') 
.outputOptions('-f null -') 
.run(); 

Courant-ffmpeg sépare les options de ligne de commande dans addInputOption et outputOptions. Si vous avez plusieurs options de sortie, vous pouvez les passer à outputOptions sous forme de tableau de paramètres.

Notez que pour utiliser outputOptions, je pense que vous devez spécifier un fichier de sortie. Si vous n'en avez pas besoin, faites-en un fichier temporaire, puis supprimez-le à la fin ou éventuellement en sortie sur un périphérique null. Jetez un oeil à la page readme fluent-ffmpeg au https://github.com/fluent-ffmpeg/node-fluent-ffmpeg. Il détaille ces options et d'autres en détail.

Bien qu'il puisse y avoir de meilleurs moyens de valider vos fichiers, j'espère que cela vous permettra d'utiliser fluent-ffmpeg.

+0

Merci beaucoup de l'avoir ventilé! Tellement bien expliqué (+1). Si vous avez d'autres meilleures façons de valider le fichier, je serais plus qu'heureux de les essayer. –

+1

Je n'ai pas de meilleure façon de recommander, et c'est probablement un moyen simple et direct d'accomplir ce dont vous avez besoin. Je pensais qu'il pourrait y avoir des outils de validation généraux ou spécifiques au codec disponibles, mais ma recherche rapide n'a rien révélé. – Rayzzor