私はqt5.0を使用しています。私はdllを作成し、すべてのオーディオファイルをdllに入れました。今私はリソースと再生からファイルを作成しています。それは正常に動作しています。QMediaPlayerでオーディオを再生してファイルを削除する方法は?
しかし、問題はファイルを再生した後で、そのファイルを削除して新しいファイルを再作成できないことです。
手動で削除しようとするとエラーが発生します。 "そのファイルを使用している他のプログラム"。一度私はプログラムを停止し、ファイルを削除することができます。
palybackの直後にファイルを削除する方法。ここに私のコード
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";
}
}
私がメッセージを「オーディオが再生」が、それはファイルをdeleteingていないそうです。
この問題の解決にお役立てください。
一時ファイルを作成せずに直接DLLからストリームを送信する方法はありますか? – Saravanan
プレーヤーがファイルを管理しているようです。プレーヤーオブジェクトを削除すると、ファイルを削除できますか? – TheDarkKnight
まあ、私はすべてのことを試みたが、まだ私はエラーが発生しています。だから私はオーディオファイルをwindows/mediaフォルダに入れ、アプリケーションで使う。ありがとう。 – Saravanan