xbmc upstart scrip 没有声音

xbmc upstart scrip 没有声音

我希望 xbmc 在启动时启动,并在崩溃时重新启动。目前,我自动登录用户(“public”)并将 xbmc 作为启动应用程序。但如果 xbmc 崩溃,它不会重新启动,这对我这个不懂电脑的家庭来说是个问题,但对我个人来说不是。由于我习惯使用 /etc/init/ 脚本,所以我遵循了本指南,创建以下脚本(但使用 USER=public 而不是 'xbmc'):

# xbmc-upstart
# starts XBMC on startup by using xinit.
# by default runs as xbmc, to change edit below.
env USER=xbmc

description     "XBMC-barebones-upstart-script"
author          "Matt Filetto"

start on (filesystem and stopped udevtrigger)
stop on runlevel [016]

# tell upstart to respawn the process if abnormal exit
respawn

script
  exec su -c "xinit /usr/bin/xbmc --standalone -- -nocursor :0" $USER
end script

机器启动到 xbmc 时一切正常,但现在却没有声音!当我退出 xbmc 时,它会直接重新启动,这意味着我无法(至少我没有技能知道如何)从 Unity 检查声音设置。

关于如何使声音正常工作的建议?

答案1

我找到了一种可以解决我的问题的方法,其意义如下:

  1. 允许我在 xbmc 中自动启动
  2. 如果程序崩溃则重新启动 xbmc
  3. 它功能齐全:有声音并且视频运行正常。

我选择的做法是通过选择 Unity 中的选项以“正常”GUI 方式自动将 Ubuntu 启动到我的“公共”用户中。然后,我添加了一个进程监视器脚本来为我重新生成该程序。

方法如下:这个答案,我在用户‘public’的主目录中添加了以下脚本,并将其命名为‘process_monitor.sh’:

#!/bin/bash

if [[ -z "$1" ]];then
    echo "ERROR: must specify program"
    exit 1
fi

while (( 0 == 0 ));do
    $@ &
    pid=`jobs -l | awk '{print $2}'`
    wait $pid
done

使脚本可执行后

chmod a+x ~/process_monitor.sh

我在“启动应用程序”中为用户“公共”添加了以下行(通过 Dash 访问,或至少在 12.04 中通过右上角的栏访问):

/bin/bash ~/process_monitor.sh /usr/bin/xbmc

这样,我现在可以在 xbmc 中自动启动,并具有完美的声音和视频功能,然后让监控脚本确保 xbmc 在崩溃时重生。也许不是最漂亮的解决方案,但它确实有效!

相关内容