QMediaPlayer 中播放声音的内部扩展

Posted

技术标签:

【中文标题】QMediaPlayer 中播放声音的内部扩展【英文标题】:Internal exaption on play sound in QMediaPlayer 【发布时间】:2021-09-16 19:06:39 【问题描述】:

当我尝试在不存在的文件上使用循环执行“播放”时,我得到了扩展“stack_overflow”。 我使用 Qt 5.15.2 和 Windows 7

    playlist->addMedia(QUrl::fromLocalFile("not_exist"));
    playlist->setPlaybackMode(QMediaPlaylist::Loop);

    QMediaPlayer *music = new QMediaPlayer();
    music->setPlaylist(playlist);
    music->play();

我能否捕捉到这个异常,或者我可以使用另一种方式在循环中运行声音来排除这个问题?

【问题讨论】:

【参考方案1】:

你必须使用QMediaPlayer的错误信号:

connect(music, QOverload<QMediaPlayer::Error>::of(&QMediaPlayer::error),
    [music](QMediaPlayer::Error error)
    qDebug() << error << music->errorString();
);

输出:

QMediaPlayer::ResourceError "Could not open resource for reading."

【讨论】:

但是这段代码对我没有帮助。我可以从 mediaStatusChanged 获取错误和状态,但我无法阻止 stack_overflow 和崩溃我的应用程序 @klynxe 如果存在 *** 则存在错误,在带有 gstreamer 的 Linux 中,只有一个警告表明来自后端的错误,而在 Qt 端则抛出错误信号,我建议你举报。

以上是关于QMediaPlayer 中播放声音的内部扩展的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 QMediaPlayer 播放流媒体音频?

尝试使用 QMediaPlayer 添加声音事件

在 Qt 和 C++ 中改变 mp3 速度 [QMediaPlayer]

QMediaPlayer - 播放 youtube 音乐

什么录音软件可以录制电脑内部播放的声音

无法从其他线程播放 QMediaPlayer