Qt使用Taglib库读取mp3文件标签信息

环境

系统:windows 11
Qt :5.14.1
GNU Make:4.2.1
平台: x86_64-w64-mingw32
taglib版本:2.0.1

下载

官网下载

编译


吐槽:关于编译,参考了很多博主的文章,基本上都是说使用CMake gui进行编译,但经过测试,总是存在问题。最常见的就是缺少库,比如zlib、uftcpp、cppunit等,最气的就是它要求库的版本,有的库最新版不太好找,折腾了半天库都下载好了,写到CMakeLists.txt里面又识别不到!!!
最终放弃了,选择了另一种编译方法,没想到一下就成功了。


1、创建一个空的文件夹,用来存放编译的内容。我这里是D:/Mylibs/taglib
2、打开命令行之后,跳转到下载的taglib目录
例如:

cd /d D:/cache/taglib2.0.1

3、命令行执行

cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX="D:/Mylibs/taglib" -DBUILD_SHARED_LIBS=YES -DWITH_ZLIB=ON -DWITH_MP4=ON -DBUILD_TESTING=OFF

解析:
首先我使用qt是用了mingw编译套件,所以这里我选择了"MinGW Makefiles";
使能了动态库,不编译zlib和cppunit,我这里只用来获取mp3标签,所以MP4功能关掉了;
这条命令是在这里看到的
再次执行:

mingw32-make
mingw32-make install

OK,编译完成。
此时目录中应该有3个文件夹
在这里插入图片描述
说明:最开始我是将DBUILD_SHARED_LIBS = NO的,然后在使用过程中会有一些未定义,再次编译之前我没有进行clean,所以我的lib里是同时存在以下内容的,至于到底谁生效了,我猜是dll.a 哈哈哈哈哈。
在这里插入图片描述

Qt中使用

在pro文件中添加,注意路径

INCLUDEPATH         += $$PWD/taglib2.0.1/include
LIBS                += -L$$PWD/taglib2.0.1/lib -ltag -ltag_c

.cpp或.h文件中包含头文件:

#include <taglib2.0.1/include/taglib/tag.h>
#include <taglib2.0.1/include/taglib/fileref.h>

简单的使用就可以参考下载源码目录里面的examples文件夹

还是贴一下我的代码段吧,因为要适配中文内容所以与示例稍有不同

QString filename = "赵雷 - 我记得.mp3";
TagLib::FileRef file(filename.toStdWString().c_str());
if (!file.isNull() && file.tag())
{
	TagLib::Tag *tag = file.tag();
	TagLib::AudioProperties *properties = file.audioProperties();
	QString title = QString::fromStdWString(tag->title().toWString());
	QString artist = QString::fromStdWString(tag->artist().toWString());
	QString album = QString::fromStdWString(tag->album().toWString());
	QString year = QString::number(tag->year());
	int duration = properties->length();
#ifdef __DEBUG__
	qDebug() << "Title:" << title;
	qDebug() << "Artist:" << artist;
	qDebug() << "Album:" << album;
	qDebug() << "Year:" << year;
	qDebug() << "Duration:" << length << "seconds";
	qDebug() << "-----------------------------------";
#endif
}

运行结果如下:
在这里插入图片描述

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值