QMediaPlayer 和 gstreamer 导致系统崩溃

Posted

技术标签:

【中文标题】QMediaPlayer 和 gstreamer 导致系统崩溃【英文标题】:System crash with QMediaPlayer and gstreamer 【发布时间】:2014-11-13 16:07:15 【问题描述】:

我目前正在编写一个带有内置音频播放器的应用程序。

当我设置 QMediaPlayer 时,我(总是)收到以下错误:

Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started

有一些关于此的谷歌搜索结果,但我没有找到任何解决方案来解决它。 请注意,我不使用千斤顶。

到目前为止,我可以忍受该错误消息,但还有一个更糟糕的问题。大多数情况下,该应用程序运行良好并按预期运行,但偶尔会冻结。整个系统冻结。我可以转动鼠标(帧速率很差),但我不能点击任何东西或与任何其他程序交互。即使使用Ctrl+Alt+F1 切换到文本终端也无济于事,这让我认为驱动程序或内核模块应该有问题。

我在调试和发布模式下尝试了mp3vorbis,有和没有调试器。总是一样。 没有额外的警告、错误等。 从控制台启动应用程序时也会出现该错误(之前运行的可执行文件没有任何问题)。

系统:

Linux t420s 3.16-3-amd64 #1 SMP Debian 3.16.5-1 (2014-10-10) x86_64 GNU/Linux

Qt 5.1.1, C++11

qmake:
qmake .../CAN.pro -r -spec linux-g++-64 CONFIG+=debug

导致问题的部分代码:

    QMediaPlayer* _player = 0;
    _player = new QMediaPlayer(this);

    ...

    QFile tmpFile(filename);
    tmpFile.open(QIODevice::ReadWrite);
    tmpFile.write(_mediaFile);

    _player->setMedia(QUrl::fromLocalFile(filename));    // <-- this line causes the freezing

上一次系统更新/升级是在 2014 年 11 月 9 日。

顺便说一句,整个项目都是公开的hosted on github。我也问了同样的问题here,但没有得到任何答案。抱歉多发帖。

【问题讨论】:

【参考方案1】:

一两个月前,由于不相关的原因,我不得不重新安装系统。我决定安装 Ubunutu 14.04 而不是 Debian。

从那以后,该错误不再出现。所以我想这个问题已经解决了。虽然我很高兴知道原因......

【讨论】:

以上是关于QMediaPlayer 和 gstreamer 导致系统崩溃的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5 QMediaplayer找不到服务错误

QMediaPlayer 和 QVideoWidget 的糟糕表现

连接 QMediaPlayer 和 QIODevice

如何从 QT 中的 RTSP 流中解析 ONVIF 元数据?

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

无法从其他线程播放 QMediaPlayer