Sar*_*nan 7 qt audio-streaming qmediaplayer
我正在使用qt5.0.我创建了DLL并将所有音频文件放在dll中.现在我正在从资源和播放创建文件.它工作正常.
但问题是在播放文件后我无法删除该文件并重新创建新文件.
如果我尝试手动删除也会收到错误."使用该文件的其他一些程序".一旦我停止程序然后只能删除该文件.
如何在立即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();
Run Code Online (Sandbox Code Playgroud)
void Audio::mediaStatusChanged(QMediaPlayer::MediaStatus state)
{
if(state==QMediaPlayer::EndOfMedia)
{
QFile::remove(QDir::tempPath() + "/temp0.mp3");
qDebug()<<"Audio played";
}
}
Run Code Online (Sandbox Code Playgroud)
我正在收到"音频播放"消息,但它没有删除该文件.
请帮我解决这个问题.
最近,我遇到了同样的问题。我通过将编译器从 msvs 更改为 mingw 解决了这个问题。我认为 Qt 人员没有解决这个错误,因为它的状态是“需要更多信息”。释放媒体文件的代码如下。
player->setMedia(QMediaContent());
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用 mingw 编译器,视频无法在 VM win7 x86 中播放并报告DirectShowPlayerService::doRender: Unresolved error code 80040266. 这对我来说似乎是一个僵局。
| 归档时间: |
|
| 查看次数: |
5006 次 |
| 最近记录: |