Qt Creator 调用第三方库libZPlay 解析音频文件 标题、专辑、文件名、艺术家

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();



猜你喜欢

转载自blog.csdn.net/qq_27175513/article/details/80260586
今日推荐