C++ Qt QMediaPlayer-QThread::start:未能创建线程

C++ Qt QMediaPlayer-QThread::start:未能创建线程,c++,qt,qmediaplayer,C++,Qt,Qmediaplayer,我开发了一个应用程序,用户可以同时播放多个声音。为此,我使用QMediaPlayer和矩阵来分别保存每个声音。代码很简单,对于每个声音,我都使用如下代码: media = new QMediaPlayer(); media->setMedia(QUrl::fromLocalFile(QFileInfo("sound.mp3").absoluteFilePath())); media->play(); 一切都好。但在播放声音115-125(同步声音)时,新声音会发出信号error(Q

我开发了一个应用程序,用户可以同时播放多个声音。为此,我使用
QMediaPlayer
和矩阵来分别保存每个声音。代码很简单,对于每个声音,我都使用如下代码:

media = new QMediaPlayer();
media->setMedia(QUrl::fromLocalFile(QFileInfo("sound.mp3").absoluteFilePath()));
media->play();
一切都好。但在播放声音115-125(同步声音)时,新声音会发出信号
error(QMediaPlayer::ResourceError)
错误代码:
QMediaPlayer::ResourceError-无法解析媒体资源
。在发出错误信号之前,它会在输出时打印以下消息:
DirectShowPlayerService::doPlay:未解决的错误代码0x80004005()

这不是问题,因为我一发现这个错误就删除这些声音。 经过几次
QMediaPlayer::ResourceError
,问题立即出现。 如果我创建了一个新声音,输出窗口上会出现一条错误消息:
QThread::start:未能创建线程。
此错误在创建新的
QMediaPlayer
实例后出现:

qDebug() << "before media = new QMediaPlayer(); (FILE)";
media = new QMediaPlayer();
qDebug() << "after media = new QMediaPlayer(); (FILE)" << media->error
最后一种
QMediaPlayer
实例不会发出错误。除此之外,状态是
QMediaPlayer::PlayingState
。但是,如果我试图删除它
delete(media)
或将媒体设置为null
QMediaContent
media->setMedia(QMediaContent())
以使播放机放弃与当前媒体源相关的所有信息,则应用程序将冻结。 这两种方法在其他声音上效果很好。 如果我不删除这种
QMediaPlayer
,我就没有空间放声音了。不知何故,
QMediaPlayer
的实例数量有限,我无法再删除的每个
QMediaPlayer
都填满了这个数字,没有空间容纳新的
QMediaPlayer
实例

问题是:我如何避免这个问题?如果我限制同步声音的数量,那么
QMediaPlayer
实例的正确数量是多少?如果我设置了一个限制,其他机器的限制可能会很高。或者如何正确检测此格式错误的QMediaPlayer并正确删除它

另外,如果我等待第一个
QMediaPlayer::ResourceError
信号来限制声音的数量,这有时为时已晚,因为错误信号发出得晚了一点,有时应用程序已经创建了一个格式错误的
QMediaPlayer
,我无法再删除它,这会阻止进程关闭

before media = new QMediaPlayer(); (FILE)
QThread::start: Failed to create thread
after media = new QMediaPlayer(); (FILE) QMediaPlayer::NoError