似乎是QMediaPlayer不讀取播放列表文件的標籤,而不執行當前音軌的方法play()。有沒有辦法強制從QMediaPlayer播放列表中讀取標籤而不用播放它?Qt多媒體 - 如何強制從媒體文件讀取標籤
對不起,如果這是一個noob問題,但我花了大量的時間進行搜索。
感謝
似乎是QMediaPlayer不讀取播放列表文件的標籤,而不執行當前音軌的方法play()。有沒有辦法強制從QMediaPlayer播放列表中讀取標籤而不用播放它?Qt多媒體 - 如何強制從媒體文件讀取標籤
對不起,如果這是一個noob問題,但我花了大量的時間進行搜索。
感謝
不要浪費你的時間來使用QMediaPlayer來讀取標籤(此解決方案的工作很好,但很難在清單很多文件),只需使用標籤庫或其他開源庫。
例如,3個簡單的步驟在Qt中使用標籤庫:
1.Compile的taglib從來源:
這足以部署標籤庫的工作實例。真的:)
2.Include頭和項目庫,只需添加這或您的自定義路徑到項目文件:
unix:!macx: LIBS += -L$$PWD/3rdparty/taglib-1.9.1/taglib/ -ltag
INCLUDEPATH += $$PWD/3rdparty/taglib-1.9.1/taglib/Headers
DEPENDPATH += $$PWD/3rdparty/taglib-1.9.1/taglib/Headers
3.使用它,很簡單的功能從文件中獲得媒體的標籤,在賽道的這個例子中的藝術家和標題:
#include <fileref.h>
#include <tag.h>
QString gettags(QString mediafile){
QString string;
TagLib::FileRef file(mediafile.toUtf8());
TagLib::String artist_string = file.tag()->artist();
TagLib::String title_string = file.tag()->title();
QString artist = QString::fromStdWString(artist_string.toWString());
QString title = QString::fromStdWString(title_string.toWString());
string = artist + " - " + title;
return string;
}
對於目前的QT/OSX,使用這個項目文件片段(變化路徑爲您的系統)
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.11
LIBS += -L/Users/sir/prg.qt/TuneMerge/taglib-1.11.1/taglib/ -ltag -lz
INCLUDEPATH += /Users/sir/prg.qt/TuneMerge/taglib-1.11.1/
INCLUDEPATH += /Users/sir/prg.qt/TuneMerge/taglib-1.11.1/taglib/
INCLUDEPATH += /Users/sir/prg.qt/TuneMerge/taglib-1.11.1/taglib/toolkit/
DEPENDPATH += /Users/sir/prg.qt/TuneMerge/taglib-1.11.1/taglib