Qt Creator 呼叫第三方庫libZPlay 解析音訊檔案 標題、專輯、檔名、藝術家
阿新 • • 發佈:2018-11-10
libZPlay
libZPlay庫集成了所有支援格式(mp3, mp2, mp1, ogg, flac, ac3, aac, oga, wav and pcm )的編碼解碼器。
一、官網下載sdk
http://libzplay.sourceforge.net/
二、pro檔案修改:
unix:!macx|win32: LIBS += -L$$PWD/libs/libzplay/ -llibzplay INCLUDEPATH += $$PWD/libs/libzplay DEPENDPATH += $$PWD/libs/libzplay win32:!win32-g++: PRE_TARGETDEPS += $$PWD/libs/libzplay/libzplay.lib else:unix:!macx|win32-g++: PRE_TARGETDEPS += $$PWD/libs/libzplay/libzplay.a
三、libzplay.dll放到程式執行目錄
四、程式碼編寫
//獲取指定目錄下所有歌曲資訊 void LocalMusicModel::parseMusicInfo(QString path) { QList<songInfo> songRecords; QStringList dirList=path.split(","); QString temp; foreach (temp, dirList) { temp=temp.right(temp.length()-8); QDir dir(temp); dir.setNameFilters(QStringList() << "*.mp3" << "*.flac" << "*.wav"); QFileInfoList fileList=dir.entryInfoList(); QFileInfo fileInfo; foreach (fileInfo, fileList) { TID3InfoEx id3_info; //如果直接使用LoadFileID3Ex函式,會得不到時長資訊 if(player->OpenFile((const char*) fileInfo.absoluteFilePath().toLocal8Bit(),sfAutodetect)) if(player->LoadID3Ex(&id3_info,1)) { songInfo tempSongInfo; tempSongInfo.title = QString::fromLocal8Bit(id3_info.Title); //音樂標題 tempSongInfo.Artist = QString::fromLocal8Bit(id3_info.Artist); //歌手 tempSongInfo.path = fileInfo.absoluteFilePath(); //路徑 tempSongInfo.album = QString::fromLocal8Bit(id3_info.Album); //專輯 // get stream info,獲取時長資訊 TStreamInfo pInfo; player->GetStreamInfo(&pInfo); tempSongInfo.duration =pInfo.Length.sec; songRecords.append(tempSongInfo); } else { qDebug() << QString("No ID3 data:%1\r\n\r\n").arg(QString::fromLocal8Bit(player->GetError())); } else { qDebug() << "LoadID3Ex faild"; } } } }
五、獲取歌曲資訊
六、音訊播放
if(zplayer->OpenFile("f:\\music\\Justin Bieber-Love Yourself.mp3", sfAutodetect) == 0)
{
return;
}
zplayer->Play();