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

时间:2015-12-22 11:22:38

标签: linux qt permissions environment-variables

我不完全确定我的问题是否与共享库访问有关,或者它是否是特定于Qt的,但是这里是:

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

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

所以,我安装了this repository的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也没有5.5),它在那里工作正常。所以我假设Qt5.5版本(似乎不太可能)或我的环境存在问题。

修改:如果有任何帮助,则在sudo ./appsudo -s之后执行应用程序时播放媒体,但{{1>之后 }}

1 个答案:

答案 0 :(得分:0)

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

QT_NO_GLIB=1

取消设置可以解决问题。