Hola, quiero modificar los tags de un archivo mp3, ayuda porfavor

Iniciado por Giankaa, 17 Mayo 2017, 19:58 PM

0 Miembros y 1 Visitante están viendo este tema.

Giankaa

Este es el código que uso para leer el archivo mp3, pueden probarlo y les muestra los tag,s título, album, los priv, todo, esta para la versión de ID3v2.3.0, espero puedan ayudarme, lo que se quiere es que se le va a mostrar al usuario algo así, ejemplo:
Nombre de la canción: cancionblablabla
Álbum: blablba
Año: 1997
entonces esos datos entran como tag a la canción, gracias.
Código (cpp) [Seleccionar]
#include <iostream>
#include <cstring>
#include <fstream>

using namespace std;
//-------------------------------------------------------------------------
typedef unsigned char byte;
typedef unsigned int uint;
typedef struct synch {
    byte b3,b2,b1,b0;
} sint;
//-------------------------------------------------------------------------
struct header
{
    char mark[3];
    byte version[2];
    byte flags;
    sint size;
};
//-------------------------------------------------------------------------
struct frame
{
    char id[4];
    sint size;
    byte flags[2];
};
//-------------------------------------------------------------------------
uint usych(sint value)
{
    return value.b0|value.b1<<8|value.b2<<16|value.b3<<24;
}
//-------------------------------------------------------------------------
int main()
{
    FILE *file=fopen("D:/Programacion/P1/ID3/cancion.mp3","r");
    if(!file)
    {
        cout<<"File not found"<<endl;
        return 0;
    }
    header hd;
    fread(&hd,10,1,file);
    if(strncmp(hd.mark,"ID3",3)!=0)
    {
        cout << "This file hasn't TAG" << endl;
        fclose(file);
        return 0;
    }
    cout << "Version :         "<< (int)hd.version[0]<<"."<<(int)hd.version[1] << endl;
    cout << "Flags :           "<< (int)hd.flags << endl;
    cout << "size :            " << usych(hd.size)<< endl;

    if(hd.version[0] < 3)
    {
        cout<<"Version doesn't match"<< endl;
        fclose(file);
        return 0;
    }
    char buffer;
    while(true)
    {
        frame fr;
        fread(&fr,10,1,file);
        if(fr.id[0]<'A')break;
        cout << endl << fr.id[0] << fr.id[1] << fr.id[2] << fr.id[3];
        cout <<"   "<< usych(fr.size)<<" bytes... ";
        if(fr.id[0]!='T'){
            fseek(file,usych(fr.size),SEEK_CUR);
            cout << "(Empty)" << endl;
        }else{
            cout << "(";
            for(uint i=0;i<usych(fr.size);i++)
            {
                fread(&buffer,1,1,file);
                if(buffer >= 32 && buffer <=126){
                    cout << buffer;
                }
            }
            cout << ")" << endl;
        }
    }
    cout << endl;

    fclose(file);

    return 0;
}

MCKSys Argentina

Quizás no es lo que buscas, pero dispones de una lib para modificar los tags.

Lo bueno es que es open source y puedes mirar cómo ha resuelto el tema el programador: https://sourceforge.net/projects/id3lib/files/id3lib/

Source: http://stackoverflow.com/questions/19928569/id3v2-tag-for-mp3-using-c

Espero te sea de utilidad.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Giankaa

Cita de: MCKSys Argentina en 17 Mayo 2017, 20:16 PM
Quizás no es lo que buscas, pero dispones de una lib para modificar los tags.

Lo bueno es que es open source y puedes mirar cómo ha resuelto el tema el programador: https://sourceforge.net/projects/id3lib/files/id3lib/

Source: http://stackoverflow.com/questions/19928569/id3v2-tag-for-mp3-using-c

Espero te sea de utilidad.

Saludos!
Ammm... No entiendo, cómo se usa?

engel lex

si lo buscas en google consigues su pagina oficial... aqu{i est{a la parte de documentacion
http://id3lib.sourceforge.net/api/index.html
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.

Giankaa

Cómo instalo la biblioteca #include <id3/tag.h> ??? Nunca he hecho algo parecido...

MAFUS

Échale un vistazo a ésta página: http://id3.org

Tienen información sobre todo sobre las etiquetas de los mp3. Además enlazan con una librería que, además de acceder a los metadatos del mp3, también soporta otros formatos de audio, cómo ogg, flac, etc.

Giankaa

Gracias, ya he visto todas las páginas anteriores y más, el todo es que no sé modificar aún eso.