我正在尝试通过浏览器打开VLC,并立即在Mac OS X上播放给定的视频文件。
这在我的本地服务器上运行,只能在本地运行 - 因此我已经使用我的用户名和组“staff”(在httpd.conf中定义)运行apache(MAMP)。
是 - 我知道VLC有http接口 - 但这不是我需要的,所以不建议......
当我通过终端运行时,我当前的系统运行没有任何问题:
php /var/www/Movies/index.php
- >这导致VLC打开,视频开始像全意播放全屏。
当我使用浏览器运行相同的PHP页面时,问题就开始了。然后VLC进程启动,但是没有GUI,视频文件不会开始播放,VLC进程占用了近100%的CPU。
有人能给我任何关于如何使这个东西工作的指示吗?
的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 :(得分: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.sh的内容
#!/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\""
答案 1 :(得分: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 $!;');