//taglib可以从网上下载,解压包文件中,test and examples 里面有些很好的学习例子,taglib也有API ,可以参考
//reference size:http://sql.codeproject.com/KB/cs/Do_Anything_With_ID3.aspx?display=Print
//
#include <iostream>
#include <stdlib.h>
#include <taglib/tbytevector.h>
#include <taglib/tfile.h>
#include <taglib/mpegfile.h>
#include <taglib/id3v2tag.h>
#include <taglib/id3v2frame.h>
#include <taglib/id3v2header.h>
#include <taglib/id3v1tag.h>
#include <taglib/apetag.h>
#include <taglib/tag.h>
#include <taglib/attachedpictureframe.h>
#include <QDebug>
#include <QImage>
#include <taglib/fileref.h>
using namespace std;
using namespace TagLib;
int main(int argc, char *argv[])
{
// process the command line args
for(int i = 1; i < argc; i++) {
cout << "******************** /"" << argv[i] << "/"********************" << endl;
MPEG::File f(argv[i]);
ID3v2::Tag *id3v2tag = f.ID3v2Tag();
if(id3v2tag) {
cout << "ID3v2."
<< id3v2tag->header()->majorVersion()
<< "."
<< id3v2tag->header()->revisionNumber()
<< ", "
<< id3v2tag->header()->tagSize()
<< " bytes in tag"
<< endl;
ID3v2::FrameList::ConstIterator it = id3v2tag->frameList().begin();
for(; it != id3v2tag->frameList().end(); it++)
{
cout << (*it)->frameID() << " - /"" << (*it)->toString() <<"/t it.size()="<<(*it)->size()<< "/"" << endl;
if ( (*it)->frameID().operator==(ByteVector("APIC")) )
{
//reference size:http://sql.codeproject.com/KB/cs/Do_Anything_With_ID3.aspx?display=Print
//
#include <iostream>
#include <stdlib.h>
#include <taglib/tbytevector.h>
#include <taglib/tfile.h>
#include <taglib/mpegfile.h>
#include <taglib/id3v2tag.h>
#include <taglib/id3v2frame.h>
#include <taglib/id3v2header.h>
#include <taglib/id3v1tag.h>
#include <taglib/apetag.h>
#include <taglib/tag.h>
#include <taglib/attachedpictureframe.h>
#include <QDebug>
#include <QImage>
#include <taglib/fileref.h>
using namespace std;
using namespace TagLib;
int main(int argc, char *argv[])
{
// process the command line args
for(int i = 1; i < argc; i++) {
cout << "******************** /"" << argv[i] << "/"********************" << endl;
MPEG::File f(argv[i]);
ID3v2::Tag *id3v2tag = f.ID3v2Tag();
if(id3v2tag) {
cout << "ID3v2."
<< id3v2tag->header()->majorVersion()
<< "."
<< id3v2tag->header()->revisionNumber()
<< ", "
<< id3v2tag->header()->tagSize()
<< " bytes in tag"
<< endl;
ID3v2::FrameList::ConstIterator it = id3v2tag->frameList().begin();
for(; it != id3v2tag->frameList().end(); it++)
{
cout << (*it)->frameID() << " - /"" << (*it)->toString() <<"/t it.size()="<<(*it)->size()<< "/"" << endl;
if ( (*it)->frameID().operator==(ByteVector("APIC")) )
{