繁体   English   中英

如何使用PHP(Mac OS X)通过浏览器打开VLC

[英]How can I open VLC via browser with PHP (Mac OS X)

我正在尝试通过浏览器打开VLC,并使其立即在Mac OS X上播放给定的视频文件。

这在我的本地服务器上运行,并且只能在本地运行-因此,我已经使用用户名和“ staff”组(在httpd.conf中定义)运行了apache(MAMP)。

是的-我确实知道VLC具有http界面-但这不是我所需要的,因此不要建议...

通过终端运行我的当前系统时,没有任何问题:

php /var/www/Movies/index.php  

->这会导致VLC打开,并且视频会像预期的那样开始全屏播放。

当我使用浏览器运行相同的PHP页面时,问题就开始了。 然后,VLC进程启动,但是没有GUI可用,视频文件将无法开始播放,并且VLC进程占用了近100%的CPU。

  • 都; 终端和浏览器启动的VLC进程以同一用户运行(我的)
  • 两者都有“家长程序”重击
  • 以Terminal开头的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"

为了解决这个问题,对我有用的最终解决方案是:

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\""

谢谢您的回复。 我没有让VLC与此兼容,但是我证明我可以使用浏览器来完成工作。

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

我得到了AppleScript通过浏览器的支持,这是一个巨大的胜利。 :D现在的问题是,显然VLC不能以root身份运行,并抱怨:“ VLC不应以root身份运行。对不起。如果您需要使用实时优先级和/或特权TCP端口,则可以使用/Applications/VLC.app/Contents/MacOS/VLC-wrapper(请确保它是Set-UID根目录,并且不能首先由不受信任的用户运行)。 :(

所以-任务仍在继续...仍需要帮助来克服这一限制...

这是我想让魔术发生的地方:

$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 $!;'); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM