سؤال

أحاول فتح 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 $!;'); 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top