我正在使用qt5.0。我创建了dll,并将所有音频文件放入dll。现在我正在从资源创建文件并播放。工作正常。

但是问题是播放文件后,我无法删除该文件并重新创建新文件。

如果我尝试手动删除,也会出现错误。 “其他使用该文件的程序”。一旦我停止该程序,那么只能删除该文件。

立即回传后如何删除文件。这是我的代码

player = new QMediaPlayer;
connect(player,SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)),this,SLOT(mediaStatusChanged(QMediaPlayer::MediaStatus)));

QFile file2(QDir::tempPath() + "/temp0.mp3");

if (file2.open(QIODevice::ReadWrite))
{
    QFile workFile(":/AUDIO/" + fn +".mp3");
    if(workFile.open(QIODevice::ReadOnly))
    {
      file2.write(workFile.readAll());
      workFile.close();
    }

    file2.close();
}

player->setMedia(QMediaContent(QUrl::fromLocalFile(QDir::tempPath() + "/temp0.mp3")));
player->setVolume(100);
player->play();
void Audio::mediaStatusChanged(QMediaPlayer::MediaStatus state)
{
    if(state==QMediaPlayer::EndOfMedia)
    {
        QFile::remove(QDir::tempPath() + "/temp0.mp3");
        qDebug()<<"Audio played";
    }
}

我收到“音频播放”消息,但未删除文件。

请帮助我解决此问题。

最佳答案

最近,我遇到了同样的问题。
我通过将编译器从msvs更改为mingw来解决了该问题。
我认为Qt团队没有解决此错误,因为其状态“需要更多信息”。释放媒体文件的代码如下。

player->setMedia(QMediaContent());

但是,如果使用mingw编译器,则视频无法在VM win7 x86中播放,并报告DirectShowPlayerService::doRender: Unresolved error code 80040266。这对我来说似乎是一个僵局。

关于qt - 如何在QMediaPlayer中播放音频和删除文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15098905/

10-12 00:11
查看更多