2010-04-01 114 views
0

我試圖通過瀏覽器打開VLC,使其即時播放Mac OS X上的指定視頻文件如何通過瀏覽器打開VLC與PHP鍵(Mac OS X)

這將運行我的本地服務器上並且只是爲了本地運行 - 因此我已經用我的用戶名和組「staff」(在httpd.conf中定義)運行apache(MAMP)。

是 - 我不知道,VLC擁有HTTP接口 - 但是這不是我所需要的,所以不建議......

我現在的系統工作沒有任何問題,當我通過終端運行:

php /var/www/Movies/index.php 

- >這導致VLC開放和視頻開始全屏播放喜歡intented。

當我用瀏覽器運行相同的PHP頁面時,問題就開始了。然後,VLC進程開始,但沒有GUI,視頻文件不會開始播放,VLC進程佔用CPU的幾乎100%。

  • Both;終端和瀏覽器開始VLC-過程使用相同的用戶運行(礦)
  • 兩者都有「父進程」的bash
  • 與終端開始VLC-過程具有空「流程組」(僅進程id值)和瀏覽器開始具有「httpd」+(id-number)
  • 通過瀏覽器啓動的VLC進程比終端啓動的對應程序多出1000倍的「Mach系統調用」。

任何人都可以給我任何指示如何讓這個東西工作?

的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" 
+0

我會給一個答案,但我不能產生一個端到端的東西,所以我不知道它會工作。看看'man screencapture'的結尾。我懷疑這是同一個問題(Apache不是登錄窗口的孩子,所以它不能打開它的東西)。 'ps aux | grep「loginwindow」| grep -v grep | awk'{print $ 2}''可能有用。 – Quentin 2010-04-01 13:25:58

回答

1

只爲爲了解決這個問題,最終的解決方案對我來說是這樣的:

exec('echo "OS_X_ROOT_PASSWORD" | sudo -S launchctl bsexec LOGIN_WINDOW_PROCESS_ID osascript -e \'do shell script "PATH_TO_vlc.sh" & " \"MOVIE_FILE_PATH\" \"SUBTITLE_FILE_PATH\""\' > /dev/null 2>&1 & echo $!;'); 

vlc的內容。012

#!/bin/bash 

# Activate VLC in x seconds to make it the front-most window 
(sleep 4; open -a VLC) & 

# Open video file 
su - YOUR_MAC_OS_USERNAME -c "/Applications/VLC.app/Contents/MacOS/VLC --quiet --volume=1024 --fullscreen --sub-file=\"$2\" \"$1\"" 
+0

我有類似的問題,我已經嘗試了上述解決方案,但它不起作用。應該用我的root帳戶的密碼替換「OS_X_ROOT_PASSWORD」?確切地說, – Cyclonecode 2012-09-28 22:42:51

+0

。而且LOGIN_WINDOW_PROCESS_ID應該是$ PID的ID號(以前的答案)。 – Damiqib 2012-09-30 13:41:24

0

謝謝您的答覆。我沒有得到VLC的工作,但我證明我可以用我的瀏覽器做些事情。

exec('osascript -e \'say "Hello"\''); 

我得到了AppleScript通過瀏覽器工作,這是一個巨大的勝利。 :D現在問題在於,顯然VLC不能以root身份運行,並抱怨說:「VLC不應該以root身份運行。對不起。 如果您需要使用實時優先級和/或特權TCP端口 可以使用/Applications/VLC.app/Contents/MacOS/VLC-wrapper(確保它是Set-UID root,並且 不能由不可信用戶首先運行) 「。 :(

所以 - 尋求繼續...仍然需要幫助來克服這個限制...

這就是我想要讓魔術發生:

$PID = exec('ps aux | grep "loginwindow" | grep -v grep | awk \'{ print $2 }\''); 
exec('sudo launchctl bsexec ' . $PID . ' /Applications/VLC.app/Contents/MacOS/VLC --quiet --fullscreen "' . $j . '" > /dev/null 2>&1 & echo $!;');