ペイントショップのディスプレイシステムを開発しています。
Ubuntuを搭載したコンピューターをセットアップして、ビデオを実行してテレビに表示し、インターネット経由で1時間ごとにビデオを更新するPHPスクリプトを実行します。
スクリプトはcron経由で実行されるように設定されており、1時間に1回(@hourly)実行されます。スクリプトのほぼ全体が完全に実行されますが、VLC MediaPlayerを実行してビデオを表示する最後の行はサイレントに失敗します。スクリプトがコマンドラインから実行される場合(php /path/to/cron.php
)、VLC MediaPlayerは完全に起動します。ただし、cronで実行すると、実行されません。
私が得た考えは、cronを介して実行されているジョブには、表示されているGUIを使用してアプリケーションを実行する機能がないということですが、それが答えではないことを願っています。
これを割るのを手伝ってください!
Xサーバーに何かを表示するには、Xクライアント(vlc
など)で、Xサーバーのネットワークアドレスを定義する環境変数DISPLAY
を設定する必要があります。ほとんどすべての場合(1つのローカルXサーバー)、:0
に割り当てる必要があります。
スクリプトからその変数を設定するか、代わりにbash -c "DISPLAY=:0 vlc $vlcopts"
を実行することができます(もちろん、$vlcopts
を置き換えます)。
次のものも使用できます。
@hourly screen -d -m vlc-wrapper /path/to/file/foo.flv --novideo --volume 700 --repeat --rc-fake-tty
Vlcを機能させるため。ここに詳細なプロセスがあります: http://michaelchrisco.com/wiki/index.php?title=Set_up_VLC_as_a_cron_job