Comment obtenir le réel, la durée réelle d'un fichier MP3 (VBR ou CBR) côté serveur

J'ai utilisé pour calculer la durée de MP3 fichiers côté serveur à l'aide de ffmpeg qui semblait bien fonctionner. Aujourd'hui, j'ai découvert que certains de ces calculs étaient faux. En quelque sorte, pour une raison quelconque, ffmpeg mésestimer la durée et elle semble arriver avec un débit variable fichiers mp3 uniquement.

Lors de l'essai de cette localement, j'ai remarqué que ffmpeg imprimé deux lignes supplémentaires dans le vert.

Commande utilisée:

ffmpeg -i song_9747c077aef8.mp3

ffmpeg dit:

[mp3 @ 0x102052600] max_analyze_duration 5000000 reached at 5015510
[mp3 @ 0x102052600] Estimating duration from bitrate, this may be inaccurate

Après une agréable, chaleureux google session, j'ai découvert quelques posts sur ce sujet, mais aucune solution n'a été trouvée.

J'ai ensuite essayé d'augmenter la durée maximale:

ffmpeg -analyzeduration 999999999 -i song_9747c077aef8.mp3

Après cela, ffmpeg retournée qu'à la deuxième ligne:

[mp3 @ 0x102052600] Estimating duration from bitrate, this may be inaccurate

Mais dans les deux cas, le calcul de la durée était tout simplement faux. En la comparant à VLC, j'ai remarqué que la durée est correcte.

Après plus de recherches, je suis tombé sur mp3info - lequel j'ai installé et utilisé.

mp3info -p "%S" song_9747c077aef8.mp3

mp3info retourné le CORRIGER durée, mais seulement comme un entier, que je ne peux pas l'utiliser car j'ai besoin d'un nombre plus précise, ici. La raison pour cela était expliqué dans un commentaire ci-dessous, par l'utilisateur blahdiblah - mp3info est simplement en tirant l'information ID3 du fichier et non pas en effectuant les calculs.

J'ai aussi essayé d'utiliser mplayer pour récupérer la durée, mais tout comme ffmpeg, mplayer est de retour la valeur faux.

  • id3.org
  • Merci, mais je ne peut présumer de la bonne durée d'informations dans les fichiers Mp3 en-têtes / tags ID3, même si je le voulais. Je dois calculer pour obtenir un 100% résultat précis.
  • Ahh, alors je pense que vous devez aller à travers le mp3, et de trouver à chaque image, puis de calculer une durée à partir de cela.
  • Je Vous remercie pour votre entrée, mais la raison pour laquelle je suis à la recherche d'une solution préparée est parce que c'est exactement ce que je ne veux pas (à) faire.
  • mp3info n'est pas ce que vous cherchez, il tire juste de l'information de l'étiquette ID3 et MP3 les en-têtes.
  • Ah, c'est bon à savoir. Merci pour l'entrée, je vais donc le dump mp3info tout à fait.
  • Pouvez-vous fournir l'un des fichiers ffmpeg obtient la durée de mal pour que nous puissions tester des solutions possibles?
  • Je souhaite que je pourrais, mais je ne peux pas. Je ne suis pas autorisé à le faire. Je pourrais essayer d'obtenir des résultats similaires avec le ré-encodage des fichiers VBR, mais ce serait prendre un certain temps.
  • Pouvez-vous reproduire le problème avec les dernières version de Git? Pas besoin de les installer: juste obtenir le source FFmpeg via git, utilisez un simple ./configure, exécutez make, puis exécuter le binaire résultant.
  • A-t-elle à être Git? Je viens de messaged l'administrateur du serveur de mise à jour de ffmpeg pour la dernière version et de voir ce qui se passe alors..
  • FFmpeg développement est très active. La duplication de la question avec les récentes Git permettrait d'éliminer la possibilité que le problème a déjà été résolu. Encore une fois, vous n'avez pas à remplacer votre actuel ffmpeg, mais il suffit de tester ffmpeg à partir de Git.
  • Après d'autres tests avec la dernière version de ffmpeg, le problème est toujours là. Mal durées sont calculées pour une variété de Mp3. Quelqu'un aurait-il quelques suggestions à ce sujet?
  • Le "Estimer" message peut-être faux - patches.libav.org/patch/36540 fixe le message en mars 2013. Ne vous obtenez toujours ce message avec la dernière version de ffmpeg? De toute façon, ne vous aidera pas si les durées sont mauvais.

InformationsquelleAutor SquareCat | 2012-05-03