【问题标题】:Internal exaption on play sound in QMediaPlayerQMediaPlayer 中播放声音的内部扩展
【发布时间】: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();

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

【问题讨论】:

    标签: windows qt exception stack-overflow media-player


    【解决方案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 如果存在 stackoverflow 则存在错误,在带有 gstreamer 的 Linux 中,只有一个警告表明来自后端的错误,而在 Qt 端则抛出错误信号,我建议你举报。
    猜你喜欢
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多