itemNameList = itemDir.entryList(itemNameFilter, QDir::NoDotDot | QDir::NoDot | QDir::Dirs | QDir::Readable, QDir::Name);怎么根据这个写一个获取歌曲时长的c++代码
时间: 2024-01-10 20:03:11 浏览: 116
获取MP3歌曲名歌手时长等详细信息
你可以使用Qt的多媒体模块来获取歌曲的时长。下面是一个示例代码:
```cpp
#include <QCoreApplication#include <QDir>
#include <QMediaPlayer>
#include <QMediaMetaData>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QDir itemDir("<your_directory_path>"); // 替换为你的目录路径
QStringList itemNameFilter;
itemNameFilter << "*.mp3"; // 根据你的文件类型进行过滤,这里假设是mp3文件
QStringList itemList = itemDir.entryList(itemNameFilter, QDir::NoDotDot | QDir::NoDot | QDir::Files, QDir::Name);
foreach (QString item, itemList) {
QString filePath = itemDir.absoluteFilePath(item);
QMediaPlayer mediaPlayer;
mediaPlayer.setMedia(QUrl::fromLocalFile(filePath));
mediaPlayer.play();
// 等待一段时间,以确保媒体已加载
QEventLoop loop;
QObject::connect(&mediaPlayer, &QMediaPlayer::mediaStatusChanged, &loop, &QEventLoop::quit);
loop.exec();
// 获取歌曲时长
qint64 duration = mediaPlayer.duration();
qDebug() << "歌曲:" << item << "时长:" << duration << "毫秒";
mediaPlayer.stop();
}
return a.exec();
}
```
请将`<your_directory_path>`替换为你的目录路径,并根据你的文件类型修改`itemNameFilter`的过滤条件。这段代码首先列出指定目录下的所有文件,然后逐个加载文件并获取歌曲的时长。
阅读全文