web-dev-qa-db-ja.com

xbmc upstartscripが音を出さない

Xbmcを起動時に起動し、クラッシュしたときに再起動するようにします。現在、私はユーザー( 'public')に自動ログインし、スタートアップアプリケーションとしてxbmcを使用しています。しかし、xbmcがクラッシュしても再起動しません。これは、個人的にではないにしても、コンピューターの知識がない家族にとっては問題です。/etc/init /スクリプトに慣れているので、 このガイド に従って、次のスクリプトを作成しました(ただし、「xbmc」の代わりにUSER = publicを使用)。

# 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
Nick The Swede

次の意味で、問題を解決する回避策を見つけました。

  1. xbmcで自動起動できます
  2. プログラムがクラッシュした場合、xbmcを再起動します
  3. それは完全に機能しています:音があり、ビデオは完全に機能しています。

私が選択したのは、Unityのオプションを選択して、Ubuntuを「パブリック」ユーザーの「通常の」GUI方法で自動起動することでした。次に、プロセスモニタースクリプトを追加して、プログラムを再生成しました。

方法は次のとおりです。 この回答 に続いて、ユーザー「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

ユーザー「public」の「スタートアップアプリケーション」に次の行を追加しました(Dashまたは少なくとも12.04では右上のバーからアクセスします)。

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

このようにして、完璧なサウンドとビデオ機能を備えたxbmcで自動起動し、モニタースクリプトで、クラッシュ時にxbmcが再生成されることを確認できます。おそらく最も美しいソリューションではありませんが、機能します。

0
Nick The Swede