gpt4 book ai didi

c++ - QtCreator QMediaPlayer 元数据返回空白 QString

转载 作者:行者123 更新时间:2023-11-30 02:46:18 27 4
gpt4 key购买 nike

我有一个使用 QMediaPlayer 的媒体播放器。它可以使用 QFileDialog 打开一首歌曲,然后播放和暂停它。我希望能够读取音乐文件的元数据并将它们用作字符串。我知道这首音乐有元数据,因为它显示在 Windows 文件资源管理器中。这是我的代码。

void MainWindow::playAudioFile(QString openItem){
player = new QMediaPlayer(this);
player->setMedia(QUrl(openItem));
player->setVolume(50);
player->play();
QString albumTitle = player->metaData(QMediaMetaData::AlbumTitle).toString();
ui->albumLabel->setText(albumTitle);
qDebug()<<player->metaData(QMediaMetaData::Title);

ui 文本的设置最终为空白,应用程序输出中的 qDebug 打印语句最终为空白。 QtCreator 中的应用程序输出还显示 QVariant(Invalid)

最佳答案

您无需开始播放媒体即可获取元数据。但是,您确实需要等到媒体加载完毕。

当您调用 player->setMedia(QUrl(openItem)); 时,实际加载发生在后台(您可以在调试器 Qt 中看到生成一堆线程)。然而,setMedia() 并不等待媒体加载,它只是返回。如果您立即查询元数据,它可能可用也可能不可用,具体取决于线程调度(即取决于媒体是否已加载)。

要可靠地检索它,您需要连接到 mediaStatusChanged() 信号,并等待状态 QMediaPlayer::LoadedMedia - 一旦收到它,您可以在其插槽中查询元数据。

并且,为了获得最佳性能,请记住您可以一次创建多个 QMediaPlayer 实例。

关于c++ - QtCreator QMediaPlayer 元数据返回空白 QString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23678748/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com