Navegación
-
Servicios
-
Noticias
- Google, Facebook y Twitter planean una original protesta
- Adiós Dennis Ritchie
- Muere Steve Jobs
- Cierra Bizarre Creations
- No habrá más Ubuntu Netbook Edition
- Cómo es el Internet Explorer 9 que será lanzado el lunes
- Impulsan una baja del costo de Internet
- Software argentino: ¿"niña bonita" de la economía local?
- Sex.com se vendió en u$s 13 millones
- Google puso fin al misterio de Batman
- Todas las noticias
-
Artículos
-
Descargas
-
Últimos 15 usuarios
- julio agreda
- asami cuellar
- randall brenes
- lucas inzua
- jenny murillo zambrana
- jose luis colmenero huerta
- ernesto gallardo
- rafael rojas
- alexander caballero
- ismael fernandez civicos
- yazmin sanjuan
- william
- jeisson esteban andrade leon
- aldo david delgadillo
- hisam escobar
- Total de usuarios: 13722
- Total de visitantes: 267170
-
Usuarios Top 15
-
Sitios recomendados
Web social
Cómo leer y escribir meta información en archivos mp3 - ID3v1 a fondo
Tabla de contenidos
La tabla de contenidos pertenece al artículo completo y no al contenido parcial de cada página del mismo si fuese el caso.
Resúmen
Supongamos que tenemos un sitio de música y tenemos infinidad de archivos mp3. Toda la información sobre titulos, artistas, albumes, años de publicación, incluso generos, pueden permanecer en el propio archivo mp3. Aprendamos como gestionar esta información facilmente con PHP.
Sobre el autor
Gastón tiene 31 años, vive en Argentina / Santa Fe / Santa Fe y su ocupación es Desarrollador de aplicaciones web.
Forma parte del club desde 19/10/2009 a las 20:52 habiendo estado en linea ayer a las 18:27 por última vez.
Ha publicado 50 artículos en clubdesarrolladores con un promedio de valoración de 7.96 puntos. Puedes visitar su sitio web en http://www.devstudios.com.ar
Estadísticas
- Leido 3166 veces
- Valorado 6.50 puntos
ID3v1
El ID3v1 es un bloque de 128 bytes que se agrega al final del archivo de música mp3 y que contiene información sobre dicho tema. Ya sea el nombre del tema, el artista, el album, el año de publicación, un comentario y por último el genero.
Lo que voy a enseñar es como leer y escribir esta información al final de los archivos mp3, esté o no esté, porque puede ser que el archivo no tenga esta información incrustada al momento de accederlo.
Cabe aclarar que existe ID3v2, que nos permite almacenar mas información como compositores, etc., pero a eso lo veremos en otro artículo.
Les voy a presentar la estructura del ID3v1 para que sea más facil de ver.
ID3v1
{
Tag: 3 bytes; //Es la marca que indica la existencia de la firma, debe ser igual a 'TAG'
Title: 30 bytes; //El nombre del tema en si
Artist: 30 bytes; //El grupo o solista que interpreta el tema, no confundir con el compositor
Album: 30 bytes; //El nombre del album o disco en el que se incluye el tema
Year: 4 bytes; //El año de publicación del tema en formato AAAA
Comment: 30 bytes; //Un comentario para el tema :)
Genre: 1 byte; // El genero al que pertenece el tema, es un valor entre 0 y 255
}Para los generos tenemos 256 valores diferentes, indicados por un entero de 1 byte (Genre), sin embargo actualmente no se utilizan estos 256. En nuestro ejemplo usaremos 147 generos y los colocaremos en un array:
$GENRES = array('Blues', 'Classic Rock', 'Country', 'Dance', 'Disco', 'Funk', 'Grunge', 'Hip-Hop', 'Jazz', 'Metal', 'New Age', 'Oldies', 'Other', 'Pop', 'R&B', 'Rap', 'Reggae', 'Rock', 'Techno', 'Industrial', 'Alternative', 'Ska', 'Death Metal', 'Pranks', 'Soundtrack', 'Euro-Techno', 'Ambient', 'Trip-Hop', 'Vocal', 'Jazz+Funk', 'Fusion', 'Trance', 'Classical', 'Instrumental', 'Acid', 'House', 'Game', 'Sound Clip', 'Gospel', 'Noise', 'AlternRock', 'Bass', 'Soul', 'Punk', 'Space', 'Meditative', 'Instrumental Pop', 'Instrumental Rock', 'Ethnic', 'Gothic', 'Darkwave', 'Techno-Industrial', 'Electronic', 'Pop-Folk', 'Eurodance', 'Dream', 'Southern Rock', 'Comedy', 'Cult', 'Gangsta', 'Top 40', 'Christian Rap', 'Pop/Funk', 'Jungle', 'Native American', 'Cabaret', 'New Wave', 'Psychadelic', 'Rave', 'Showtunes', 'Trailer', 'Lo-Fi', 'Tribal', 'Acid Punk', 'Acid Jazz', 'Polka', 'Retro', 'Musical', 'Rock & Roll', 'Hard Rock', 'Folk', 'Folk-Rock', 'National Folk', 'Swing', 'Fast Fusion', 'Bebob', 'Latin', 'Revival', 'Celtic', 'Bluegrass', 'Avantgarde', 'Gothic Rock', 'Progressive Rock', 'Psychedelic Rock', 'Symphonic Rock', 'Slow Rock', 'Big Band', 'Chorus', 'Easy Listening', 'Acoustic', 'Humour', 'Speech', 'Chanson', 'Opera', 'Chamber Music', 'Sonata', 'Symphony', 'Booty Bass', 'Primus', 'Porn Groove', 'Satire', 'Slow Jam', 'Club', 'Tango', 'Samba', 'Folklore', 'Ballad', 'Power Ballad', 'Rhythmic Soul', 'Freestyle', 'Duet', 'Punk Rock', 'Drum Solo', 'Acapella', 'Euro-House', 'Dance Hall', 'Goa', 'Drum & Bass', 'Club-House', 'Hardcore', 'Terror', 'Indie', 'BritPop', 'Negerpunk', 'Polsk Punk', 'Beat', 'Christian Gangsta Rap', 'Heavy Metal', 'Black Metal', 'Crossover', 'Contemporary Christian', 'Christian Rock', 'Merengue', 'Salsa', 'Trash Metal', 'Anime', 'Jpop', 'Synthpop');Leer ID3v1 desde PHP
La lectura desde PHP es muy simple, asi que sin más aclaraciones les muestro el código fuente:
function readID3v1($filename)
{
global $GENRES;
$handle = fopen($filename, "rb");
fseek($handle, -128, SEEK_END);
$data = fread($handle, 128);
fclose($handle);
$ID3v1['Tag'] = substr($data, 0, 3);
$ID3v1['Title'] = substr($data, 3, 30);
$ID3v1['Artist'] = substr($data, 33, 30);
$ID3v1['Album'] = substr($data, 63, 30);
$ID3v1['Year'] = substr($data, 93, 4);
$ID3v1['Comment'] = substr($data, 97, 30);
$ID3v1['Genre'] = $GENRES[ord(substr($data, 127))];
return $ID3v1;
}Lo implementé como una función que recoge el nombre del archivo y retorna un array con los valores rescatados del archivo en cuestión. Se trata de un array asociativo.
Escribir ID3v1 desde PHP
Para escribir debemos proporcionarle a esta función el nombre del archivo mp3 y un array como el que retorna readID3v1 con los valores que deseamos grabar en el archivo.
function writeID3v1($filename, $ID3v1)
{
global $GENRES;
$aux = readID3v1($filename);
$handle = fopen($filename, "ab");
if ($aux['Tag'] == 'TAG')
{
fseek($handle, -128, SEEK_END);
}
$id3v1_string = 'TAG';
$id3v1_string .= str_pad($ID3v1['Title'], 30);
$id3v1_string .= str_pad($ID3v1['Artist'], 30);
$id3v1_string .= str_pad($ID3v1['Album'], 30);
$id3v1_string .= str_pad($ID3v1['Year'], 4);
$id3v1_string .= str_pad($ID3v1['Comment'], 30);
$genre = array_keys($GENRES, $ID3v1['Genre']);
$id3v1_string .= chr($genre[0]);
fwrite($handle, $id3v1_string, 128);
fclose($handle);
}Como se puede apreciar es sumamente simple gestionar el id3v1 y permite tener en el mismo mp3 información bastante útil.
Basandose en estas funciones se pueden escribir clases que pueden servir para un sistema que administre colecciones, o simplemente para actualizar nuestras colecciones de mp3.
Si tiene alguna pregunta sobre éste artículo por favor deje un comentario y será respondido.
También recuerde que éste artículo tiene descargas disponibles.
Descargas
Ejemplo - Gestionar ID3v1 desde PHP (21.03.09 | 79 descargas | 1.45 Kbytes) Más información:
Código fuente en PHP agregado por Gastón
asociado al artículo Cómo leer y escribir meta información en archivos mp3 - ID3v1 a fondo
Este archivo fuente contiene código en php que permite leer y escribir metainformación (ID3v1) sobre archivos MP3.
Incluye un ejemplo ejecutable, que usted podrá modificar a gusto y correr desde la consola PHP.
Comentarios
Sus comentarios son importantes.
Listado de comentarios
No hay comentarios para listar, si desea puede crear el primer comentario para este artículo.
Agregar un comentario
Debe estar identificado para agregar un comentario
delicio.us
Google Bookmark
Technorati
Twitthis
Meneame
Yahoo My Web
Fresqui
Enchilame