gpt4 book ai didi

qt - 如何在 QMediaPlayer 中播放音频和删除文件?

转载 作者:行者123 更新时间:2023-12-04 12:22:38 28 4
gpt4 key购买 nike

我正在使用 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/

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