2010-09-27 33 views
0

Le problème que j'ai est lors de l'utilisation de ffmpeg pour encoder un YUV en utilisant libx264 Je ne reçois pas toutes les informations de trame dans la sortie -vstats. Cela soulève la question de savoir à quel point ffmpeg est fiable, et donc peut-on faire confiance à un examen de «benchmark codec» basé sur ffmpeg? J'analyse les codecs pour déterminer leur performance. J'utilise ffmpeg et son option -vstats pour regarder un film encodé image par image. le processus j'utilise:ffmpeg vstats problèmes, cadres manquants et des informations trompeuses!

RAW YUV -> de code à barres de chaque trame avec le numéro de trame -> code à barres YUV

code à barres YUV -> codée (par exemple avec libx264) -> MKV -> décodée YUV

Je peux comparer les deux sorties ('YUV à code à barres &' Décodé à YUV ') en utilisant le code à barres dans chaque trame. Je peux ensuite comparer, exactement, un cadre original avec un cadre codé en utilisant PSNR, etc.

Lors de l'encodage en utilisant libx264 et libdirac, certaines informations de trame sont manquantes. D'autres codecs, tels que mpeg2video ou même libvpx, n'ont pas ce problème.

J'ai trouvé que libstatus vstats sont manquants pour les premières 40 à 50 images. J'ai prouvé depuis que les informations manquantes sont en fait les dernières 40 à 50 images.

Il semble également que ffmpeg calcule le débit moyen en fonction des informations contenues dans vstats. Mais comme il manque des trames, le débit moyen est inférieur à ce qu'il devrait être.

Voici les liens à l'exemple d'erreur de débit moyen:

http://dl.dropbox.com/u/6743276/ffmpeg_probs/ffmpeg_av_bitrate_error.png

http://dl.dropbox.com/u/6743276/ffmpeg_probs/ffmpeg_av_bitrate_error.xlsx

est au-dessous un lien vers le PSNR & f_size graphique:

http://dl.dropbox.com/u/6743276/ffmpeg_probs/frame_mismatch.png

Ci-dessous est un lien vers la sortie & options de ligne de commande:

http://dl.dropbox.com/u/6743276/ffmpeg_probs/stderr.txt

Je pense que c'est un bug, tout le monde assez intelligent pour travailler dehors pourrait vouloir suivre ce tracker: http://roundup.ffmpeg.org/issue2248

Répondre

0

Je viens de découvrir quelque chose qui me fait très rouge dans le visage !! assez ennuyé, mais peu importe :)

Un utilisateur ffmpeg a souligné que ffprobe devrait afficher plus d'informations sur les trames, ce qu'il a fait. voici un lien vers son astuce pratique:

http://forums.creativecow.net/thread/291/71

L'utilisation de ce que j'ai trouvé ce qui suit:

débit moyen réel (données ffprobe): 8355,2776056338
bitrate moyen réel (ffmpeg vstats données): 8406,23275471698
Ffmpeg -vstats avg_br: 7816.3
Reproduit ci-dessus: 7816,32168421053
sortie d'erreur standard Ffmpeg 'bitrate =': 8365,8

Voici un lien vers mon élaborations:

http://dl.dropbox.com/u/6743276/ffmpeg_probs/ffprobe_vs_ffmpeg-vstats.xlsx

Ce que j'ai découvert est que j'aurais été en utilisant l'information de débit moyen de la sortie d'erreur standard ffmpeg, il ressemble le plus fiable!