Qt应用程序中的媒体播放仅在以root用户身份执行时可用



我不完全确定我的问题是否与共享库访问有关,或者是否是特定于Qt的,但如下所示:

简而言之,我有一个Qt5.5应用程序,它包括一个基于QtMultedia的视频和音频播放器。当我以root用户身份运行应用程序时,视频会播放;否则,它将停留在加载状态。绝对没有错误。

稍长的故事:我无法使用官方Ubuntu 14.04 repos中提供的Qt5.2,因为我的应用程序同时使用QtWebKit和QtMultedia模块;不幸的是,这些模块分别针对gstreamer 0.1和1.0构建,因此不能很好地配合使用。

因此,我已经从这个存储库安装了Qt5.5,它安装到/opt/qt55。尽管如上所述设置了LD_LIBRARY_PATH,但我还是遇到了上述问题。但是,当以root用户身份运行应用程序时,一切都会顺利进行。

这是echo $LD_LIBRARY_PATH:的输出

/opt/qt55/lib/x86_64-linux-gnu:/opt/qt55/lib

值得一提的是,我刚刚意识到它在以root用户身份运行时是有效的,所以我尝试在另一台干净的机器上从源代码编译Qt5.5(既没有来自repos的Qt5.2也没有来自repo的5.5),它在那里运行得很好。所以我认为要么是Qt5.5版本有问题(这似乎不太可能),要么是我的环境有问题。

编辑:如果有任何帮助,在使用sudo ./app或在sudo -s之后执行应用程序时会播放媒体,但在sudo -i 之后不会播放

好吧,在比较了printenvsudo printenvsudo -i printenv的输出后,我确定了罪魁祸首:

QT_NO_GLIB=1

解开它就解决了这个问题。

最新更新