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