10
votes

Calcul de la longueur des cadres MP3 en millisecondes

permet de dire qu'une longueur de cadre mp3 en octets est de 104: Comment obtenir cela en millisecondes? Y a-t-il une formule ou quelque chose à faire?


6 commentaires

Je dirais que le débit binaire est la clé. CBR est plus facile et VBR vous obligera à faire attention aux variations de taux.


Pourquoi as-tu besoin de cette information?


Vous n'avez pas "besoin" de faire quoi que ce soit! Mais, généralement, quand les gens posent ce genre de questions ("Comment puis-je obtenir x") ils en ont besoin pour autre chose. Et que "autre chose" peut parfois être résolu différemment.


AHA OK


Vous trouverez peut-être la réponse ici: Stackoverflow.com/Questtions/383164/...


@Andrei tandis que cela peut être vrai, c'est une mauvaise idée de faire face à la question réelle. Je suis venu ici vouloir connaître la réponse exacte à cette question exacte. Stackoverflow signifie être une archive publique de questions et de réponses au plus que l'OP.


6 Réponses :


0
votes

image n'est pas la même chose que le temps. Mais si vous connaissez la taille totale, vous pouvez faire quelque chose comme ce time-tête + image * TIME = Taille totale.


2 commentaires

J'ai une longueur de trame et j'ai la durée totale du fichier MP3 .. Mais j'ai besoin d'une manière d'une manière ou d'une autre, obtenez l'heure de chaque cadre en millisecondes .. Pour des exemples Si je reçois 20 cadres MP3, je mets environ 1k millisecondes qui signifie 1 seconde. . Comment accomplir cela


mp3-converter.com/mp3codec/frames.htm encadrement = 144 * Bittrate / (Samplate + rembourrage)



0
votes

http://fr.wikipedia.org/wiki/mp3 a une entrée sur mp3 Structure de fichier mais vous devriez essayer d'en trouver un avec plus de détails.

L'en-tête de cadre contient un champ appelé débit binaire. Compte tenu de ce débit binaire et de la taille des données du cadre, vous pouvez déterminer la quantité de temps de musique réelle dans ce cadre. Je m'attends à ce que la formule soit: DataSize = débit de débit * TIMEITINERTAL.

voir http://www.mp3-tech.org/programmer/frame_header.html pour plus de détails sur le codage du débit binaire.


2 commentaires

Je n'ai pas besoin du datasize .. J'ai juste besoin du temps total de ce cadre ..


... que vous obtenez via une division.



12
votes

Vous devez analyser l'en-tête MP3 Frame pour obtenir la version MP3 et le numéro de calque (voir Ce document pour le format d'en-tête de cadre). Une fois que vous en avez eu, vous pouvez utiliser la table de recherche suivante pour obtenir le nombre d'échantillons dans le cadre. xxx


5 commentaires

OK .. Sa version mpeg 1 et le calque est 1152 maintenant où dois-je ajouter cela pour obtenir le temps total du cadre?


Le taux d'échantillon peut également être découvert à partir de l'en-tête MP3. Le taux d'échantillon est des échantillons par seconde de sorte que le nombre d'échantillons divisé par la fréquence d'échantillon est la durée du cadre. (Je ne me souviens pas de haut de ma tête si vous devez également prendre en compte le nombre de canaux. Je pense que vous le faites, donc pour la stéréo, vous supprimez de moitié le nombre d'échantillons d'abord)


Hmm, maintenant j'ai fait ce que tu m'as dit mais je reçois toujours "0" .. voici ce que j'ai fait, "mp3frame.samplecount / mp3frame.Samplate" .. BTW, MP3RAME.SAMPOUNT = 576 et MP3RAME.Samplate = 11025 .. Peut-être que j'ai besoin de multiplier le samplecount par 2?


Vous devez utiliser des chiffres de points flottants. La trame dure environ 52 ms (0,052 secondes).


"Vous devez utiliser des chiffres de points flottants" - ou inverser la direction de la division et travailler dans des cadres-par-seconde plutôt que des secondes-par-cadre.



0
votes

J'ai utilisé une approche différente pour calculer l'heure de chaque image dans le fichier MP3 .. En supposant que toutes les images ont la même taille dans le fichier .. Donc, je viens d'obtenir le temps total du fichier MP3 en millisecondes .. puis calculez les images totales dans le fichier et diviser enfin le temps total par des cadres totaux .. donc la formule Comme: xxx

Vous obtiendrez le temps total de chaque image dans la piste en millisecondes .. Après que j'ai fait que j'ai eu environ 52 millisecondes ... et c'était similaire à ce que Mark Heath a dit.

De toute façon Merci tout le monde des solutions ..


1 commentaires

Si c'est un flux MP3, comme si vous souhaitez diffuser sur un lecteur multimédia et que vous souhaitez diffuser du même taux que le fichier joue en retardant chaque image. Vous ne connaissez pas les cadres totaux (une station de radio Internet Internet fonctionnera pour toujours). La bonne réponse est donc un mélange de ce que Mark Heath écrit et Lucianolev.



0
votes

Étant donné que les données sont cryptées, vous ne pouvez pas connaître le débit binaire joué jusqu'à ce que les données soient déchiffrées. Personne ne discute de chiffrer (compresser) et de décompresser les données. Tout ce que je sais, c'est que le programme boiteux prendra un fichier d'ondes puis filtrera / rééchantillonnera alors en quelque sorte comprimer les données avant de la placer dans les cadres. Je ne sais pas si ces lecteurs MP3 utilisent des mots 8 ou 16 bits pour jouer dans chaque canal. Mais le débit binaire et tous sont liés à la taille de l'octet de canal et de la fréquence d'échantillonnage jouée. Pas la même chose que les données d'abord impuchent sur le codeur. Comment voir les résultats finaux joués par le joueur est l'astuce ici. CBR fait une bonne référence à partir de laquelle pour apprendre plus tard VBR.

Comment prendre 16 bits (mot par échantillon) d'un échantillon d'un canal et compressez-le pour les données MP3? Les résultats 12 bits sont-ils ou moins? Quelle est la routine de compression appelée?


1 commentaires

crypté? Voulez-vous dire compressé? Votre réponse est un peu déroutante.



25
votes

hmm, c'est étrange mais personne ne répond à la question correctement. J'ai enquêté, voici la formule:

Longueur de l'image (dans MS) = (échantillons par image / débit d'échantillon (en Hz)) * 1000

Le MP3 typique (une couche MPEG III, version 1) comporte 1152 échantillons par image et la fréquence d'échantillon est (généralement) 44100 Hz. Donc (1152/44100) * 1000 = 26 122449 ms par image.

remarque la longueur de l'image (heure) ne dépend pas du débit binaire.

Plus d'infos: http://www.mp3-converter.com/mp3codec/frame .htm


1 commentaires

Cela devrait être marqué comme une réponse correcte.