Recuperar información ID3 del archivo m4a en PHP

He escrito un código PHP para extraer etiquetas ID3 de archivos mp3. El siguiente paso es hacer lo mismo con los archivos .m4a. Según la investigación que he realizado, parece que la mayoría de los archivos m4a no usan ID3, sino un formato que usa 'átomos'.

¿Existe alguna biblioteca PHP que pueda analizar estos 'átomos'? He visto algunos de C # / C ++ pero no he podido encontrar ninguno de PHP. Cualquier otra guía o documentación también sería genial.

Muchas Gracias

preguntado el 30 de enero de 12 a las 20:01

Puedes probar getID3() - He tenido un gran éxito con esta biblioteca en el pasado para varios tipos de etiquetas de medios. -

Una cosa que olvidé mencionar es que no tengo el archivo completo. Solo tengo los primeros X bytes. ¿GetID3 admite archivos parciales? -

Creo que solo lee las etiquetas en el encabezado, y creo que esto suele estar en los primeros X bytes del archivo, pero la respuesta realmente es "Pruébelo y verá".

Esto no funciona bien con getID3. He bifurcado la biblioteca y la he integrado para usar archivos de datos parciales. Lo tengo funcionando, pero para una canción de 8 MB, requiere un átomo de al menos 325kb de datos. ¿Existe una mejor manera de analizar estos datos de m4a sin descargar tantos datos? Quiero hacer esto más eficiente. ¿Hay otras bibliotecas que manejen esto mejor, en cualquier idioma, sin descargar tantos datos? -

Hace unos años estaba buscando una biblioteca de mp3 confiable pero nunca encontré una. Hubo muchos pero nada 100% estable. La situación podría cambiar pero si no hago lo que hice. Descargue la fuente de mp3info (ibiblio.org/mp3info) y reescriba una parte que le interese en PHP. Si no desea hacerlo, puede instalar mp3info y llamarlo desde su script para obtener toda la información. -

2 Respuestas

Este proyecto maneja muchos formatos de archivos de audio, incluido AAC (M4A es AAC): http://getid3.sourceforge.net/

espero que esto pueda ayudar

Respondido el 17 de diciembre de 14 a las 01:12

Gracias por compartir el enlace. - Gowri

Me encontré con un problema similar no hace mucho y eché un vistazo. El método más simple y efectivo (en mi opinión) es usar el comando exec para obtener información adicional de los medios.

Basé mi código en una publicación del foro en longtailvideo http://www.longtailvideo.com/support/forums/jw-player/setup-issues-and-embedding/9448/how-to-get-video-duration-with-ffmpeg-and-php

<?php
$videofile="/var/video/user_videos/partofvideo.avi";
ob_start();
passthru("/usr/bin/ffmpeg -i \"{$videofile}\" 2>&1");
$duration = ob_get_contents();
ob_end_clean();

$search='/Duration: (.*?),/';
$duration=preg_match($search, $duration, $matches, PREG_OFFSET_CAPTURE, 3);

echo $matches[1][0]; <-- Duration
?>

Este script puede manejar cualquier cosa que ffmpeg esté preparada para manejar (¡que es mucho!) Sé que el ejemplo anterior ilustra un archivo de video, pero también funcionará bien con audio

Respondido 13 ago 13, 05:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.