كيف يمكنني فتح VLC عبر متصفح مع PHP (Mac OS X)
سؤال
أحاول فتح VLC عبر المتصفح وجعله تشغيل ملف الفيديو المحدد على الفور على Mac OS X.
يعمل هذا على الخادم المحلي الخاص بي ويهدف فقط إلى التشغيل محليًا - لذلك أقوم بالفعل بتشغيل Apache (MAMP) مع اسم المستخدم الخاص بي ومع مجموعة "الموظفين" (المحددة في httpd.conf).
نعم - أنا أعلم أن VLC لديها واجهة HTTP - ومع ذلك ليس ما أحتاجه ، لذلك لا تقترح أن ...
يعمل نظامي الحالي دون أي مشاكل عندما أقوم بتشغيله عبر Terminal:
php /var/www/Movies/index.php
-> هذا يؤدي إلى فتح VLC ويبدأ الفيديو في تشغيل شاشة ملء الشاشة كما هو مخصص.
تبدأ المشكلات عندما أقوم بتشغيل نفس صفحة PHP مع المتصفح. ثم تبدأ عملية VLC-Process ، ولكن لا يوجد واجهة المستخدم الرسومية لذلك ، لن يبدأ ملف الفيديو في التشغيل وتستغرق عملية VLC-Process ما يقرب من 100 ٪ من وحدة المعالجة المركزية.
- كلاهما؛ بدأت Terminal and Browser عمليات VLC-Processes مع نفس المستخدم (الألغام)
- كلاهما لديه "عملية الوالدين" باش
- بدأت VLC-Process مع Terminal "Group Process Group" (رقم معرف العملية فقط) وبدأ Browser "HTTPD" + (رقم معرف)
- بدأت شركة VLC-Process عبر Browser تجعل 1000-TIME أكثر من "مكالمات نظام ماخ" أكثر من نظيره الذي بدأه الطرفية.
هل يمكن لأي شخص أن يعطيني أي مؤشرات حول كيفية عمل هذا الشيء؟
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 على ما يبدو الجذر والشكوى: "ليس من المفترض أن يتم تشغيل VLC كجذر. آسف. إذا كنت بحاجة إلى استخدام أولويات في الوقت الفعلي و/أو منافذ TCP المميزة التي يمكنك استخدامها /applications/vlc.app/contents/macos/vlc-wrapper (تأكد من أنه تم تعيين جذر ولا يمكن تشغيله من قبل المستخدمين غير المحظوظين أولاً). ". :(
لذلك - يستمر البحث ... لا تزال المساعدة ضرورية للتغلب على هذا القيد ...
هذا هو المكان الذي أريد أن أحقق فيه السحر:
$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 $!;');