ブラウザでVLCを開き、MacOSXで指定されたビデオファイルをすぐに再生できるようにしようとしています。
これはローカルサーバーで実行され、ローカルでのみ実行することを目的としています。したがって、ユーザー名とグループ「staff」(httpd.confで定義)を使用してapache(MAMP)を実行しています。
はい-私はVLCがhttpインターフェースを持っていることを知っています-しかしそれは私が必要とするものではないので、それを示唆しないでください...
現在のシステムは、ターミナル経由で実行すると問題なく動作します。
php /var/www/Movies/index.php
->これにより、VLCが開き、ビデオが意図したとおりにフルスクリーンで再生され始めます。
同じPHPページをブラウザで実行すると問題が発生します。次に、VLCプロセスが開始されますが、そのGUIがなく、ビデオファイルの再生が開始されず、VLCプロセスがCPUのほぼ100%を使用します。
- 両方; ターミナルとブラウザがVLCを開始しました-プロセスは同じユーザー(私のもの)で実行されます
- どちらにも「親プロセス」bashがあります
- VLC-ターミナルで開始されたプロセスには空の「プロセスグループ」(プロセスID番号のみ)があり、開始されたブラウザには「httpd」+(ID番号)があります
- ブラウザを介して開始されたVLCプロセスは、ターミナルで開始されたプロセスの1000倍の「マッハシステムコール」を実行します。
誰かが私にこのことを機能させる方法についての指針を教えてもらえますか?
index.php
# $j is a file path to the videofile and is defined before
exec('/var/www/Movies/vlc.sh "' . $j . '" > /dev/null 2>&1 & echo $!;');
# If I do this in the given PHP-page it tells me that apache is running
# with my username and with the group "staff" like it should be...
exec('whoamI');
vlc.sh
#!/bin/bash
# Activate VLC in 5 seconds to make it the front-most window
(sleep 5; open -a VLC) &
# Open video file
/Applications/VLC.app/Contents/MacOS/VLC --quiet --fullscreen "$1"