我正在使用qt5.0。我创建了dll并将所有音频文件放入dll中。现在我正在创建资源和播放文件。它工作正常。如何播放音频并删除QMediaPlayer中的文件?
但问题是播放文件后,我无法删除该文件并重新创建新文件。
如果我尝试手动删除我也得到错误。 “使用该文件的其他程序”。一旦我停止该程序,然后只能删除该文件。
如何在立即返回后删除文件。在这里我的代码
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";
}
}
我得到“音频打出了”的消息,但它不是在delete一个文件。
请帮我解决这个问题。
是否有任何方式直接从DLL流没有创建任何临时文件? – Saravanan 2013-02-26 20:47:30
看起来玩家可能会保留文件的句柄。如果删除播放器对象,那么该文件是否可以被删除? – TheDarkKnight 2013-04-26 08:58:59
好吧,我尝试了所有的东西,但仍然出现错误。所以我把音频文件放在windows/media文件夹中并在应用程序中使用。谢谢。 – Saravanan 2013-05-07 08:20:39