elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  como encontrar la duracion de un mp3
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: como encontrar la duracion de un mp3  (Leído 7,607 veces)
Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
como encontrar la duracion de un mp3
« en: 22 Mayo 2013, 18:16 pm »

hola

tengo una duda, estoy sacando los tags de un mp3, y se me ocurrió encontrar la duración del mismo

hasta ahorita mediante fseek he logrado sacar los hexadecimales, donde se encuentra la mayoria de las cosas, pero después de usar un rato el buscador del foro me encontré con esto, pero es para visual basic

Citar
Para la duración de un archivo de audio, lo primero que tienes que plantearte es el formato. ¿Es un MP3? Por ejemplo, un archivo de tres minutos en MP3 codificado a 128 kilobits por segundo (Kbps) ocupa 2,8 Megabytes en disco duro.

Bien, 2,8 * 1048575 = 2936010 bytes. Ok, entonces 3 minutos a 128 kbps son unos 2936010 bytes lo que nos salen unos 978670 bytes por minuto.

Entonces, coges el tamaño del archivo con FileLen. Supongamos que te devuelve 1174404 bytes. Divide 1174404 entre 978670 y ¡voila! tenemos que el archivo tiene 1,2 minutos de duración

con ftell puedo sacar el tamaño del archivo, y al parecer se multiplica por 1048576, que seria 128kb a bits (128x1024x8bits)

lo que no entiendo es de donde salio la cantidad 978670?, alguien sabe como o de donde se obtiene esa cantidad?

porque después de eso se obtiene la longitud y se divide entre esa cantidad y podría encontrar la duración

espero me puedan ayudar


En línea

.                                 
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: como encontrar la duracion de un mp3
« Respuesta #1 en: 22 Mayo 2013, 19:16 pm »

Citar
Bien, 2,8 * 1048575 = 2936010 bytes. Ok, entonces 3 minutos a 128 kbps son unos 2936010 bytes lo que nos salen unos 978670 bytes por minuto.
lo que no entiendo es de donde salio la cantidad 978670?, alguien sabe como o de donde se obtiene esa cantidad?
Se calcula, división entre tres.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
Re: como encontrar la duracion de un mp3
« Respuesta #2 en: 22 Mayo 2013, 19:44 pm »

jeje ok gracias, lo intente entre 60 y entre 180 y no se me ocurrió entre 3

gracias de nuevo
En línea

.                                 
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: como encontrar la duracion de un mp3
« Respuesta #3 en: 22 Mayo 2013, 20:10 pm »

y que pasa si es un mp3 con bitrate variable? D:
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
Re: como encontrar la duracion de un mp3
« Respuesta #4 en: 22 Mayo 2013, 23:08 pm »

mmm cierto, no lo habia pensado, mmm creo tendre que googlear un poco mas

bueno, ahorita intente hacer lo mismo en un mp3 de 128kbps que pesa 4.1mb y al final me dio 3.88, que redondeando me aparece 3.9, y para encontrar el tamaño exacto dividi la longitud, ((longitud/1024.0)/1024.0) =  3.9 y le tuve que sumar 0.2 para que me aparezca igual que en las propiedades 4,1

al hacer la misma operacion de arriba, multiplique 4.1 * 1048576, despues dividi el resultado por el mismo tamaño redondeado y me aparecio 1074790

y para finalizar, dividi la longitud entre los bites por minuto

4064417÷1074790 = 3,781591753, lo que serian 3 minutos y siete segundos, redondeado serian 3.8, y le sume 0.2, de los primeros 0.2 que le sume al principio, asi que seria 3.8+0.2= 4.1

la duracion del mp3 es de 4:12, seria muy cercano a 4.1, pero no sabria si es 4:01 o 4:10, a lo que le veo muchos problemas porque ademas la duracion es de 4:12 y no 4:01 ni 4:10

alguien sabria otra forma de hacer esto, o como podria mejorarlo?

salu2
En línea

.                                 
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: como encontrar la duracion de un mp3
« Respuesta #5 en: 23 Mayo 2013, 03:57 am »

4.1 minutos = 4.1 * 60 = 246 = 4:06 y te debe descuadrar porque no todos los bits son "musica" hay cabeceras y ciertas codificaciones (ya tu mismo las viste)

de donde sacas ese 0.2? fue arbitrario?
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
Re: como encontrar la duracion de un mp3
« Respuesta #6 en: 23 Mayo 2013, 04:39 am »

sip, 0.2 lo puse solo para llegar a 4,1, ya que por la longitud, me salio 3.9 redondeado, asi que hice la prueba con un mp3 y un .avi y me aparecio bien la cantidad al sumarle 0.2 al final

(((longitud/1024.0)/1024.0) + 0.2);

pues creo buscare otra forma de encontrar la duracion, se me ha ocurrido encontrar la longitud eliminando los ID3_tags del inicio y del final, y luego dividirlo entre el bitrate, el problema es como mencionaste, como saber cuando el bitrate es variable

En línea

.                                 
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: como encontrar la duracion de un mp3
« Respuesta #7 en: 28 Mayo 2013, 07:20 am »


alguien sabria otra forma de hacer esto, o como podria mejorarlo?


Creo  que simplemente es esto:

Código
  1. 3,9 MB* 1024 KB/MB = 3993,6 KB
  2.  
  3. 3993,6 KB * 8 kb/kB = 31948,8 kb en total
  4.  
  5. 31948,8 kb / 128 kb/s = 249,6 segundos / 60 S= 4,16 MIN = 4 MIN 9,6 SEG
  6.  

O sea los 4.10, redondeando, que te marcaba.

Saluditos!. .... ..
« Última modificación: 28 Mayo 2013, 12:04 pm por leosansan » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines