Qt 应用程序中的媒体播放只有在以 root 身份执行时才有可能
Media playback in Qt application only possible when executing as root
我不完全确定我的问题是与共享库访问有关还是特定于 Qt,但这里是:
简而言之,我有一个 Qt5.5 应用程序,其中包含基于 QtMultimedia 的视频和音频播放器。当我 运行 应用程序作为 root 时,视频播放;否则,它将停留在 Loading 状态。绝对没有报错。
稍微长一点的故事:我无法使用官方 Ubuntu 14.04 存储库中提供的 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(既没有 Qt5.2 也没有5.5 来自回购协议),并且在那里工作正常。所以我假设 Qt5.5 构建(这似乎不太可能)或我的环境有问题。
编辑 :如果有任何帮助,媒体会在使用 sudo ./app
或 sudo -s
之后执行应用程序时播放,但 不会 在 sudo -i
之后
嗯,在比较了 printenv
、sudo printenv
和 sudo -i printenv
的输出后,我确定了罪魁祸首:
QT_NO_GLIB=1
取消设置即可解决问题。
我不完全确定我的问题是与共享库访问有关还是特定于 Qt,但这里是:
简而言之,我有一个 Qt5.5 应用程序,其中包含基于 QtMultimedia 的视频和音频播放器。当我 运行 应用程序作为 root 时,视频播放;否则,它将停留在 Loading 状态。绝对没有报错。
稍微长一点的故事:我无法使用官方 Ubuntu 14.04 存储库中提供的 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(既没有 Qt5.2 也没有5.5 来自回购协议),并且在那里工作正常。所以我假设 Qt5.5 构建(这似乎不太可能)或我的环境有问题。
编辑 :如果有任何帮助,媒体会在使用 sudo ./app
或 sudo -s
之后执行应用程序时播放,但 不会 在 sudo -i
嗯,在比较了 printenv
、sudo printenv
和 sudo -i printenv
的输出后,我确定了罪魁祸首:
QT_NO_GLIB=1
取消设置即可解决问题。