ملحوظة: البث الصوتي متعدد الغرف عبر AirPlay2 غير مدعوم: استخدم مزامنة shairport لذلك.
.
قم بتثبيت uxplay على أنظمة Linux المستندة إلى Debian باستخدام " sudo apt install uxplay
"؛ على FreeBSD مع " sudo pkg install uxplay
". متوفر أيضًا على الأنظمة المستندة إلى Arch من خلال AUR. منذ الإصدار 1.66، تم الآن تجميع uxplay أيضًا بتنسيق RPM بواسطة Fedora 38 (" sudo dnf install uxplay
").
بالنسبة للتوزيعات الأخرى المستندة إلى RPM والتي لم تقم بتغليف UxPlay بعد، يتم الآن توفير ملف RPM "specfile" uxplay.spec مع الإصدارات الحديثة (راجع "الأصول")، ويمكن العثور عليه أيضًا في الدليل العلوي لمصدر UxPlay. راجع القسم الخاص باستخدام ملف المواصفات هذا لإنشاء حزمة RPM قابلة للتثبيت.
بعد التثبيت:
(في Linux و*BSD): إذا كان جدار الحماية نشطًا على الخادم الذي يستضيف UxPlay، فتأكد من أن منفذ الشبكة الافتراضي (UDP 5353) لاستعلامات mDNS/DNS-SD مفتوح (راجع استكشاف الأخطاء وإصلاحها أدناه لمزيد من التفاصيل)؛ افتح أيضًا ثلاثة منافذ UDP وثلاثة منافذ TCP لـ Uxplay، واستخدم خيار "uxplay -p" (انظر " man uxplay
" أو " uxplay -h
").
حتى إذا قمت بتثبيت حزمة uxplay الثنائية المترجمة مسبقًا الخاصة بتوزيعك، فقد تحتاج إلى قراءة الإرشادات أدناه لتشغيل UxPlay لمعرفة أي من حزم المكونات الإضافية GStreamer الخاصة بتوزيعك يجب عليك تثبيتها أيضًا.
بالنسبة لوضع الصوت فقط (Apple Music، وما إلى ذلك) يتم الحصول على أفضل جودة من خلال خيار "uxplay -async"، ولكن هناك وقت استجابة مدته ثانيتان يفرضه نظام التشغيل iOS.
أضف أي خيارات UxPlay تريد استخدامها كإعدادات افتراضية إلى ملف بدء التشغيل ~/.uxplayrc
(راجع " man uxplay
" أو " uxplay -h
" للتعرف على التنسيق والمواقع المحتملة الأخرى). على وجه الخصوص، إذا كان نظامك يستخدم أنظمة PipeWire audio أو Wayland video، فقد ترغب في إضافة "as Pipewiresink" أو "vs waylandsink" كإعدادات افتراضية للملف. (الإخراج من الأوامر الطرفية "ps waux | greppulse" أو "pactl info" سيحتوي على "pipewire" إذا كان نظام Linux/BSD الخاص بك يستخدمه).
على Raspberry Pi: إذا كنت تستخدم Ubuntu 22.10 أو إصدار سابق، فيجب تصحيح GStreamer لاستخدام فك تشفير فيديو الأجهزة بواسطة وحدة معالجة الرسومات Broadcom (يوصى به أيضًا ولكنه اختياري لنظام التشغيل Raspberry Pi OS (Bullseye): استخدم الخيار " uxplay -bt709
" إذا كنت لا تستخدم التصحيح).
لتجميع أحدث إصدار من UxPlay (بسهولة)، راجع القسم الحصول على UxPlay.
هذا المشروع عبارة عن خادم GPLv3 مفتوح المصدر Unix AirPlay2 Mirror لأنظمة Linux وmacOS و*BSD. تم تطويره في البداية بواسطة antimof باستخدام كود من RPiPlay المستند إلى OpenMAX، والذي بدوره مشتق من AirplayServer وshairplay وplayfair. (لم يعد موقع antimof مشاركًا في التطوير، ولكنه ينشر بشكل دوري التحديثات المأخوذة من موقع UxPlay الرئيسي الجديد).
تم اختبار UxPlay على عدد من الأنظمة، بما في ذلك (من بين أنظمة أخرى) Debian (10 "Buster"، 11 "Bullseye"، 12 "Bookworm")، Ubuntu (20.04 LTS، 22.04 LTS، 23.04 (أيضًا مشتقات Ubuntu Linux Mint، Pop! _OS)، Red Hat والمستنسخات (Fedora 38، Rocky Linux 9.2)، openSUSE Leap 15.5، وMageia 9، وOpenMandriva "ROME"، وPCLinuxOS، وArch Linux، وManjaro، ويجب تشغيله على أي نظام Linux. تم اختباره أيضًا على macOS Catalina وVentura (Intel) وSonoma (M2)، وFreeBSD 14.0، وWindows 10 و11 (64). قليل).
في طراز Raspberry Pi 4 B، تم اختباره على Raspberry Pi OS (Bullseye وBookworm) (32 و64 بت)، وUbuntu 22.04 LTS و23.04، وManjaro RPi4 23.02، و(بدون فك تشفير فيديو الأجهزة) على openSUSE 15.5. تم اختباره أيضًا على Raspberry Pi Zero 2 W، 3 موديل B+، والآن 5.
الاستخدام الرئيسي له هو العمل مثل AppleTV لنسخ الشاشة (مع الصوت) لعملاء iOS/iPadOS/macOS (iPhone، iPod Touch، iPad، أجهزة كمبيوتر Mac) على شاشة الخادم لمضيف يعمل بنظام التشغيل Linux أو macOS أو أنظمة Unix الأخرى (والآن أيضًا مايكروسوفت ويندوز). يدعم UxPlay بروتوكول AirPlay2 الخاص بشركة Apple باستخدام "Legacy Protocol"، لكن بعض الميزات مفقودة. (يمكن العثور على تفاصيل ما هو معروف علنًا حول بروتوكول AirPlay 2 من Apple هنا، هنا وهنا؛ راجع أيضًا pyatv الذي يمكن أن يكون مصدرًا لإضافة البروتوكولات الحديثة.) في حين أنه لا يوجد ضمان بأن إصدارات iOS المستقبلية ستستمر في دعم "البروتوكول القديم". "، يستمر دعم iOS 17.
يجب أن يكون خادم UxPlay وعميله على نفس الشبكة المحلية، التي يعمل عليها أيضًا خادم Bonjour/Zeroconf mDNS/DNS-SD (خدمة "اكتشاف الخدمة" DNS-SD ضرورية للغاية، وليس من الضروري أن يكون تكون الشبكة المحلية أيضًا من النوع المستند إلى mDNS ".local". على خوادم Linux وBSD Unix، يتم توفير ذلك عادةً بواسطة Avahi، من خلال خدمة avahi-daemon، ويتم تضمينه في معظم توزيعات Linux (يمكن أيضًا توفير هذه الخدمة بواسطة خوادم macOS أو iOS أو Windows).
يمكن بدء الاتصالات بخادم UxPlay بواسطة عملاء iOS/MacOS سواء في وضع AirPlay Mirror (الذي يقوم ببث صوت AAC مضغوط بشكل ناقص أثناء عكس شاشة العميل، أو في وضع AirPlay Audio البديل الذي يبث صوت Apple Lossless (ALAC) بدون انعكاس الشاشة في وضع الصوت ، يتم عرض البيانات التعريفية في محطة uxplay؛ إذا تم استخدام خيار UxPlay -ca <name>
، فسيتم أيضًا إخراج صورة الغلاف المصاحبة إلى ملف <name>
يتم تحديثه بشكل دوري. ، ويمكن عرضه باستخدام عارض رسومات (إعادة تحميل) من اختيارك. من الممكن التبديل بين وضعي المرآة والصوت أثناء الاتصال النشط: في وضع المرآة ، قم بإيقاف النسخ المتطابق (أو أغلق نافذة المرآة) وابدأ اتصال وضع الصوت ، وقم بالتبديل. مرة أخرى عن طريق بدء اتصال وضع المرآة ، يتوقف/يعاد تشغيل عرض الغلاف الفني عند مغادرة/إعادة الدخول إلى وضع الصوت .
لاحظ أن Apple video-DRM (كما هو موجود في محتوى "تطبيق Apple TV" على العميل) لا يمكن فك تشفيره بواسطة UxPlay، ولا يمكن مشاهدة تطبيق Apple TV باستخدام وضع AirPlay Mirror الخاص بـ UxPlay (سيتم بث الصوت غير المحمي فقط بتنسيق AAC). تنسيق)، ولكن سيتم بث كل من محتوى الفيديو والصوت من التطبيقات الخالية من إدارة الحقوق الرقمية مثل "تطبيق YouTube" بواسطة UxPlay في وضع المرآة.
نظرًا لأن UxPlay لا يدعم حاليًا بث الفيديو بدون Mirror AirPlay (حيث يتحكم العميل في خادم ويب على خادم AirPlay الذي يتلقى محتوى HLS مباشرة لتجنب فك تشفيره وإعادة تشفيره من قبل العميل)، باستخدام أيقونة فيديو AirPlay في سترسل التطبيقات مثل تطبيق YouTube الصوت فقط (بتنسيق ALAC بدون فقدان البيانات) بدون الفيديو المصاحب (هناك خطط لدعم فيديو HLS في الإصدارات المستقبلية من UxPlay)
يستخدم UxPlay "المكونات الإضافية" لـ GStreamer لعرض الصوت والفيديو. وهذا يعني أن الفيديو والصوت مدعومان "خارج الصندوق"، وذلك باستخدام مجموعة مختارة من المكونات الإضافية. يقوم AirPlay ببث الفيديو بتنسيق h264: فك تشفير gstreamer لا يعتمد على المكونات الإضافية، ويستخدم وحدات فك ترميز h264 لأجهزة GPU المتسارعة إذا كانت متوفرة؛ إذا لم يكن الأمر كذلك، يتم استخدام فك تشفير البرمجيات.
VAAPI لرسومات Intel وAMD المدمجة، وNVIDIA مع برنامج تشغيل مفتوح المصدر "Nouveau".
باستخدام وحدة معالجة الرسومات Intel أو AMD، يُفضل فك تشفير الأجهزة باستخدام البرنامج الإضافي VAAPI gstreamer مفتوح المصدر. برامج تشغيل "Nouveau" مفتوحة المصدر لرسومات NVIDIA مدعومة أيضًا من حيث المبدأ: انظر هنا، ولكن هذا يتطلب استكمال VAAPI بالبرامج الثابتة المستخرجة من برامج تشغيل NVIDIA الخاصة.
NVIDIA مع برامج تشغيل خاصة
يمكن استخدام المكون الإضافي nvh264dec
(المضمن في gstreamer1.0-plugins-bad منذ GStreamer-1.18.0) لفك تشفير الفيديو بشكل سريع على وحدة معالجة الرسومات NVIDIA بعد تثبيت برنامج تشغيل CUDA الخاص بـ NVIDIA libcuda.so
. بالنسبة إلى GStreamer-1.16.3 أو الإصدارات الأقدم، يُسمى المكون الإضافي nvdec
ويجب أن يتم إنشاؤه بواسطة المستخدم.
دعم Video4Linux2 لفك تشفير الأجهزة h264 على Raspberry Pi (Pi 4B والإصدارات الأقدم)
يمكن الآن لأجهزة كمبيوتر Raspberry Pi (RPi) (التي تم اختبارها على Pi 4 Model B) تشغيل UxPlay باستخدام برنامج فك تشفير الفيديو، ولكن يفضل فك تشفير h264/h265 المسرّع بواسطة الأجهزة عن طريق البرامج الثابتة في وحدة معالجة الرسومات Pi's Broadcom 2835. يصل UxPlay إلى هذا باستخدام البرنامج الإضافي GStreamer-1.22 Video4Linux2 (v4l2)؛ يستخدم وحدة ترميز Linux kernel bcm2835 خارج الخط الرئيسي التي يحتفظ بها Raspberry Pi، والتي تم تضمينها حتى الآن فقط في Raspberry Pi OS، بالإضافة إلى توزيعتين أخريين (Ubuntu وManjaro) متاحتان مع Raspberry Pi Imager. (بالنسبة لـ GStreamer < 1.22، راجع UxPlay Wiki) .
(جديد): دعم فك تشفير الأجهزة h265 (HEVC) على Raspberry Pi (Pi 4 model B وPi 5)
الدعم موجود لكن حتى الآن لم يتم الحصول على نتائج مرضية. يوفر الطراز Pi Model 5 فقط فك تشفير الأجهزة (GPU) لفيديو h265، ولكن ليس H264، نظرًا لأن وحدة المعالجة المركزية الخاصة به قوية بما يكفي لفك تشفير H264 المُرضي للبرامج
لا يحتوي ترخيص GPLv3 الخاص بـ UxPlay على "استثناء GPL" مضاف مما يسمح صراحةً بتوزيعه في نموذج مجمع عند ربطه بإصدارات OpenSSL قبل الإصدار 3.0.0 (تحتوي الإصدارات الأقدم من OpenSSL على شرط ترخيص غير متوافق مع GPL ما لم يكن من الممكن ربط OpenSSL تعتبر "مكتبة النظام"، وهي موجودة في *BSD). تعامل العديد من توزيعات Linux OpenSSL على أنها "مكتبة نظام"، لكن بعضها (مثل دبيان) لا تفعل ذلك: في هذه الحالة، يتم حل المشكلة عن طريق الارتباط بـ OpenSSL-3.0.0 أو الإصدارات الأحدث.
قم إما بتنزيل UxPlay-master.zip وفك ضغطه، أو (في حالة تثبيت git): "git clone https://github.com/FDH2/UxPlay". يمكنك أيضًا تنزيل إصدار حديث أو سابق مدرج في الإصدارات.
(قم بتكييف هذه التعليمات مع أنظمة Linux التي لا تعتمد على Debian أو *BSD؛ وبالنسبة لنظام التشغيل macOS، راجع التعليمات المحددة أدناه). راجع استكشاف الأخطاء وإصلاحها أدناه للحصول على مساعدة بشأن أي صعوبات.
أنت بحاجة إلى مترجم C/C++ (مثل g++) مع تثبيت مكتبات التطوير القياسية. توفر الأنظمة المستندة إلى دبيان حزمة "أساسية للبناء" لاستخدامها في تجميع البرامج. تحتاج أيضًا إلى pkg-config: إذا لم يتم العثور عليه بواسطة " which pkg-config
"، فقم بتثبيت pkg-config أو pkgconf البديل الخاص به. تأكد أيضًا من تثبيت cmake>=3.5: " sudo apt install cmake
" (أضف build-essential
و pkg-config
(أو pkgconf
) إلى هذا إذا لزم الأمر).
تأكد من أن توزيعتك توفر OpenSSL 1.1.1 أو أحدث، وlibblist 2.0 أو أحدث. (وهذا يعني أن الأنظمة المستندة إلى Debian 10 "Buster" (على سبيل المثال، Ubuntu 18.04) أو أحدث؛ في أنظمة Debian 10، تعد "libplist" إصدارًا أقدم، فأنت بحاجة إلى "libplist3".) إذا لم يكن الأمر كذلك، فقد تحتاج إلى إنشاء وتثبيت هذه من المصدر (راجع التعليمات الموجودة في نهاية هذا الملف التمهيدي).
إذا كان لديك تثبيت OpenSSL غير قياسي، فقد تحتاج إلى تعيين متغير البيئة OPENSSL_ROOT_DIR ( على سبيل المثال ، " export OPENSSL_ROOT_DIR=/usr/local/lib64
" إذا كان هذا هو المكان الذي تم تثبيته فيه). وبالمثل، بالنسبة لعمليات تثبيت GStreamer غير القياسية (أو المتعددة)، قم بتعيين متغير البيئة GSTREAMER_ROOT_DIR إلى الدليل الذي يحتوي على الدليل ".../gstreamer-1.0/" الخاص بتثبيت gstreamer الذي يجب أن يستخدمه UxPlay (إذا كان هذا على سبيل المثال "~ /my_gstreamer/lib/gstreamer-1.0/"، قم بتعيين هذا الموقع باستخدام " export GSTREAMER_ROOT_DIR=$HOME/my_gstreamer/lib
").
في نافذة طرفية، قم بتغيير الدلائل إلى الدليل المصدر للكود المصدر الذي تم تنزيله ("UxPlay-*"، "*" = "master" أو علامة الإصدار لتنزيلات ملف zip، و"UxPlay" لتنزيلات "git clone")، ثم اتبع التعليمات أدناه:
ملاحظة: بشكل افتراضي، سيتم إنشاء UxPlay مع تحسين الكمبيوتر الذي تم إنشاؤه عليه؛ عندما لا يكون الأمر كذلك، كما هو الحال عندما تقوم بالتعبئة للتوزيع، استخدم خيار cmake -DNO_MARCH_NATIVE=ON
.
إذا كنت تستخدم X11 Windows على Linux أو *BSD، وترغب في التبديل إلى وضع ملء الشاشة/الخروج منه بالضغط على مفتاح (F11 أو Alt_L+Enter)، فيجب تصميم UxPlay بالاعتماد على X11. بدءًا من UxPlay-1.59، سيتم تنفيذ ذلك افتراضيًا إذا تم تثبيت مكتبات تطوير X11 واكتشافها. قم بتثبيتها باستخدام " sudo apt install libx11-dev
". إذا تم اكتشاف GStreamer < 1.20، فسيتم أيضًا إجراء الإصلاح المطلوب بواسطة تطبيقات مشاركة الشاشة ( مثل Zoom).
-DNO_X11_DEPS=ON
.sudo apt install libssl-dev libplist-dev
". ( إلا إذا كنت بحاجة إلى إنشاء OpenSSL و libplist من المصدر ).sudo apt install libavahi-compat-libdnssd-dev
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
. (* تخطي إذا قمت ببناء Gstreamer من المصدر )cmake .
( للحصول على بنية أنظف، وهو أمر مفيد إذا قمت بتعديل المصدر، استبدل ذلك بـ " mkdir build; cd build; cmake ..
": يمكنك بعد ذلك حذف محتويات دليل build
إذا لزم الأمر، دون التأثير على المصدر. ) أيضًا أضف أي خيارات cmake " -D
" هنا حسب الحاجة (على سبيل المثال، -DNO_X11_DEPS=ON
أو -DNO_MARCH_NATIVE=ON
).make
sudo make install
(يمكنك بعد ذلك إلغاء التثبيت باستخدام sudo make uninstall
في نفس الدليل الذي تم تشغيله فيه). يؤدي هذا إلى تثبيت الملف القابل للتنفيذ " uxplay
" إلى /usr/local/bin
(ويثبت صفحة manpage في مكان قياسي مثل /usr/local/share/man/man1
وملفات README في مكان ما مثل /usr/local/share/doc/uxplay
). (إذا فشل "man uxplay"، فتحقق من تعيين $MANPATH: إذا كان الأمر كذلك، فيجب إضافة المسار إلى صفحة manpage (عادةً /usr/local/share/man/) إلى $MANPATH .) يمكن أيضًا أن يكون ملف uxplay القابل للتنفيذ يمكن العثور عليه في دليل الإنشاء بعد عملية الإنشاء، إذا كنت ترغب في الاختبار قبل التثبيت (وفي هذه الحالة يجب تثبيت المكونات الإضافية GStreamer أولاً).
**بالنسبة لأولئك الذين لديهم توزيعات تعتمد على RPM، يتوفر أيضًا ملف مواصفات RPM uxplay.spec: راجع إنشاء حزمة rpm قابلة للتثبيت.
Red Hat، أو النسخ مثل CentOS (يستمر الآن باسم Rocky Linux أو Alma Linux): (sudo dnf install أو sudo yum install) opensl-devel libplist-devel avahi-compat-libdns_sd-devel gstreamer1-devel gstreamer1-plugins-base- devel (+libX11-devel لملء الشاشة X11) (قد يكون بعضها في ملف مستودع الوظائف الإضافية "CodeReady"، المسمى "PowerTools" بواسطة النسخ)
Mageia، PCLinuxOS، OpenMandriva: مثل Red Hat، باستثناء تغييرات الاسم: (Mageia) "gstreamer1.0-devel"، "gstreamer-plugins-base1.0-devel"؛ (OpenMandriva) "libopenssl-devel"، "gstreamer-devel"، "libgst-plugins-base1.0-devel". PCLinuxOS: مثل Mageia، لكنه يستخدم Synaptic (أو apt) كمدير الحزم الخاص به.
openSUSE: (sudo zypper install) libopenssl-3-devel (المعروف سابقًا باسم libopenssl-devel) libplist-2_0-devel (liblist-devel سابقًا) avahi-compat-mDNSResponder-devel gstreamer-devel gstreamer-plugins-base-devel (+ libX11- تطوير لملء الشاشة X11).
Arch Linux ( متوفر أيضًا كحزمة في AUR ): (sudo pacman -Syu) opensl libplist avahi gst-plugins-base.
FreeBSD: (تثبيت sudo pkg) libplist gstreamer1. يجب أيضًا تثبيت avahi-libdns أو mDNSResponder لتوفير مكتبة dns_sd. تم تثبيت OpenSSL بالفعل كمكتبة نظام.
يجب على منشئي RPM لأول مرة تثبيت حزمتي rpm-build وrpmdevtools، ثم إنشاء شجرة rpmbuild باستخدام " rpmdev-setuptree
". ثم قم بتنزيل ونسخ uxplay.spec إلى ~/rpmbuild/SPECS
. في هذا الدليل، قم بتشغيل " rpmdev-spectool -g -R uxplay.spec
" لتنزيل الملف المصدر المقابل uxplay-*.tar.gz
إلى ~/rpmbuild/SOURCES
("rpmdev-spectool" قد يُطلق عليه أيضًا اسم "spectool" ); ثم قم بتشغيل " rpmbuild -ba uxplay.spec
" (ستحتاج إلى تثبيت أي تبعيات مطلوبة في هذه التقارير). يجب أن يؤدي هذا إلى إنشاء حزمة uxplay RPM في دليل فرعي لـ ~/rpmbuild/RPMS
. (تم اختبار uxplay.spec على Fedora 38، وRocky Linux 9.2، وopenSUSE Leap 15.5، وMageia 9، وOpenMandriva، وPCLinuxOS؛ ويمكن تعديله بسهولة ليشمل قوائم التبعية للتوزيعات الأخرى المستندة إلى RPM.)
قم بعد ذلك بتثبيت مكونات GStreamer الإضافية المطلوبة مع sudo apt install gstreamer1.0-<plugin>
. قيم <plugin>
المطلوبة هي:
تقوم التوزيعات المستندة إلى دبيان بتقسيم بعض حزم المكونات الإضافية إلى أجزاء أصغر: بعضها قد تكون هناك حاجة إليه أيضًا بما في ذلك " gl " لدعم OpenGL (وهذا يوفر رابط الفيديو "-vs glimagesink"، والذي يمكن أن يكون مفيدًا جدًا في العديد من الأنظمة (بما في ذلك Raspberry Pi )، ويجب استخدامه دائمًا عند استخدام فك تشفير h264/h265 بواسطة وحدة معالجة الرسومات NVIDIA)، و" gtk3 " (الذي يوفر رابط الفيديو "-vs gtksink")، و" x " لدعم X11، على الرغم من أنها قد تكون مثبتة بالفعل؛ يلزم وجود " vaapi " لفك تشفير فيديو h264 المُسرّع بواسطة الأجهزة بواسطة رسومات Intel أو AMD (لكن ليس للاستخدام مع NVIDIA باستخدام برامج تشغيل خاصة). إذا كان الصوت لا يعمل، فقد يلزم تثبيت المكونات الإضافية " alsa " أو " pulseaudio " أو " pipewire "، اعتمادًا على كيفية إعداد الصوت لديك.
في بعض الحالات، بسبب مشكلات براءات الاختراع، لا يتم توفير ميزة libav plugin avdec_aac اللازمة لفك تشفير صوت AAC في وضع المرآة في التوزيعة الرسمية: احصل عليها من مستودعات المجتمع لتلك التوزيعات.
Red Hat، أو النسخ مثل CentOS (يستمر الآن باسم Rocky Linux أو Alma Linux): قم بتثبيت gstreamer1-libav gstreamer1-plugins-bad-free (+ gstreamer1-vaapi لرسومات Intel/AMD). في فيدورا الأخيرة، تمت إعادة تسمية gstreamer1-libav إلى gstreamer1-plugin-libav. للحصول على avdec_aac، قم بتثبيت الحزم من rpmfusion.org : (احصل على ffmpeg-libs من rpmfusion؛ على RHEL أو النسخ، ولكن ليس Fedora الحديثة، احصل أيضًا على gstreamer1-libav من هناك).
Mageia وPCLinuxOS وOpenMandriva: تثبيت gstreamer1.0-libav gstreamer1.0-plugins-bad (+ gstreamer1.0-vaapi لرسومات Intel/AMD). على Mageia، للحصول على avdec_aac، قم بتثبيت ffmpeg من المستودع "الملوث" ، (والذي يوفر أيضًا gstreamer1.0-plugins-bad الأكثر اكتمالاً).
openSUSE: قم بتثبيت gstreamer-plugins-libav gstreamer-plugins-bad (+ gstreamer-plugins-vaapi لرسومات Intel/AMD). للحصول على avdec_aac، قم بتثبيت حزم libav* لـ openSUSE من Packman "Essentials" ؛ توصية: بعد إضافة مستودع Packman، استخدم الخيار الموجود في إدارة برامج YaST لتحويل جميع حزم النظام للوسائط المتعددة إلى Packman).
Arch Linux قم بتثبيت gst-plugins-good gst-plugins-bad gst-libav (+ gstreamer-vaapi لرسومات Intel/AMD).
FreeBSD: تثبيت gstreamer1-libav، gstreamer1-plugins، gstreamer1-plugins-* (* = core, good, bad, x, gtk, gl, vulkan,pulse, v4l2, ...), (+ gstreamer1-vaapi for Intel/ رسومات AMD).
منذ UxPlay-1.64، يمكن بدء UxPlay بخيارات مقروءة من ملف تكوين، والتي ستكون أول العثور على (1) ملف بمسار محدد بواسطة متغير البيئة $UXPLAYRC
، (2) ~/.uxplayrc
في منزل المستخدم الدليل ("~")، (3) ~/.config/uxplayrc
. التنسيق هو خيار واحد في كل سطر، مع حذف الحرف "-"
الأولي لخيار سطر الأوامر. يتم التعامل مع الأسطر الموجودة في ملف التكوين التي تبدأ بـ "#"
كتعليقات ويتم تجاهلها.
قم بتشغيل uxplay في نافذة طرفية . في بعض الأنظمة، يمكنك تحديد وضع ملء الشاشة باستخدام الخيار -fs
، أو التبديل إلى وضع ملء الشاشة والخروج منه باستخدام مفتاح F11 أو مفتاح Alt+Enter (المضغط باستمرار على اليسار). استخدم Ctrl-C (أو أغلق النافذة) لإنهائه عند الانتهاء. إذا لم تتم رؤية خادم UxPlay من خلال لوحة "Screen Mirroring" المنسدلة لعميل iOS، فتأكد من تشغيل خادم DNS-SD (عادةً avahi-daemon): قم بذلك في نافذة طرفية systemctl status avahi-daemon
. إذا أظهر هذا أن avahi-daemon لا يعمل، فتحكم فيه باستخدام sudo systemctl [start,stop,enable,disable] avahi-daemon
(على الأنظمة غير التابعة لنظام Systemd، مثل *BSD، استخدم sudo service avahi-daemon [status, start, stop, restart, ...]
). إذا تم رؤية UxPlay، ولكن فشل العميل في الاتصال عند تحديده، فقد يكون هناك جدار حماية على الخادم يمنع UxPlay من تلقي طلبات اتصال العميل ما لم يتم فتح بعض منافذ الشبكة: إذا كان جدار الحماية نشطًا، فافتح أيضًا منفذ UDP 5353 (لاستفسارات mDNS) التي يحتاجها Avahi . راجع استكشاف الأخطاء وإصلاحها أدناه للحصول على مساعدة بشأن هذه المشكلة أو غيرها.
على عكس Apple TV، لا يطلب خادم UxPlay افتراضيًا من العملاء "الاقتران" به في البداية باستخدام رمز التعريف الشخصي الذي يعرضه الخادم (وبعد ذلك "يثق" العميل بالخادم، ولا يحتاج إلى تكرار ذلك). منذ الإصدار 1.67، يقدم Uxplay "مصادقة الدبوس" كخيار: راجع " -pin
" و " -reg
" في الاستخدام للحصول على التفاصيل، إذا كنت ترغب في استخدامه. يُطلب من بعض العملاء الذين لديهم MDM (إدارة الأجهزة المحمولة، والتي غالبًا ما تكون موجودة على الأجهزة المملوكة لصاحب العمل) استخدام مصادقة الدبوس: سيوفر UxPlay ذلك حتى عند التشغيل بدون خيار الدبوس.
افتراضيًا، يتم قفل UxPlay على عميله الحالي حتى يقطع هذا العميل الاتصال؛ منذ UxPlay-1.58، يقوم الخيار -nohold
بتعديل هذا السلوك بحيث عندما يطلب عميل جديد اتصالاً، فإنه يزيل العميل الحالي ويتولى المسؤولية. يقدم UxPlay 1.66 آلية ( -restrict
, -allow <id>
, -block <id>
) للتحكم في العملاء المسموح لهم بالاتصال، باستخدام "deviceID" الخاص بهم (والذي يبدو أنه غير قابل للتغيير في أجهزة Apple).
في وضع المرآة، لدى GStreamer خيار من طريقتين لتشغيل الفيديو مع الصوت المصاحب له: قبل UxPlay-1.64، تم تشغيل تدفقات الفيديو والصوت في أسرع وقت ممكن بعد وصولهما (طريقة GStreamer " sync=false ") ، مع استخدام ساعة GStreamer الداخلية لمحاولة الحفاظ على مزامنتها. بدءًا من UxPlay-1.64، فإن الطريقة الأخرى (وضع " sync=true " الخاص بـ GStreamer)، والتي تستخدم الطوابع الزمنية في تدفقات الصوت والفيديو التي يرسلها العميل، هي الطريقة الافتراضية الجديدة . على مضيفات UxPlay ذات طاقة فك التشفير المنخفضة (مثل نماذج Raspberry Pi Zero W أو 3 B+)، سيؤدي ذلك إلى إسقاط إطارات الفيديو التي لا يمكن فك تشفيرها في الوقت المناسب لتشغيل الصوت، مما يجعل الفيديو متشنجًا، لكنه لا يزال متزامنًا.
الطريقة القديمة التي لا تسقط إطارات الفيديو المتأخرة تعمل بشكل جيد على الأنظمة الأكثر قوة، ولا تزال متاحة مع خيار UxPlay " -vsync no
"؛ تم تكييف هذه الطريقة مع "البث المباشر"، وقد تكون أفضل عند استخدام UxPlay كشاشة ثانية لجهاز كمبيوتر Mac، على سبيل المثال، في حين أن الطريقة الافتراضية الجديدة المستندة إلى الطابع الزمني هي الأفضل لمشاهدة مقطع فيديو، للحفاظ على حركات الشفاه والأصوات. متزامن. (بدون استخدام الطوابع الزمنية، سيتخلف الفيديو في النهاية عن الصوت إذا لم يكن من الممكن فك تشفيره بالسرعة الكافية: ساعد فك تشفير الفيديو المسرع بواسطة الأجهزة على منع ذلك سابقًا عندما لم يتم استخدام الطوابع الزمنية.)
-async
خيار قائم. (على سبيل المثال، إذا كنت تريد متابعة كلمات Apple Music على العميل أثناء الاستماع إلى صوت فائق الجودة على خادم UxPlay). يؤدي هذا إلى تأخير الفيديو على العميل لمطابقة الصوت على الخادم، وبالتالي يؤدي إلى تأخير بسيط قبل بدء سريان الإيقاف المؤقت أو تغيير المسار على العميل على الصوت الذي يتم تشغيله بواسطة الخادم. يعمل التحكم في مستوى الصوت AirPlay على تخفيف مستوى الصوت (الكسب) بما يصل إلى -30 ديسيبل: يمكن إعادة ضبط نطاق الديسيبل -30:0 من منخفض :0، أو منخفض : مرتفع ، باستخدام الخيار -db
("-db Low " أو "-db" Low : High ")، يجب أن يكون Low سالبًا. إعادة القياس خطية بالديسيبل. لاحظ أن تنسيق الصوت الخاص بـ GStreamer سوف "يقطع" أي كسب صوت أعلى من +20 ديسيبل، لذا احتفظ بالمستوى العالي تحت هذا المستوى. يوفر الخيار -taper
ملف تعريف "مدبب" للتحكم في مستوى الصوت في AirPlay قد يفضله بعض المستخدمين.
تسمح خيارات -vsync و -async أيضًا بتعديل تأخير الصوت الإيجابي (أو السلبي) الاختياري بالمللي ثانية للضبط الدقيق: -vsync 20.5
يؤخر الصوت بالنسبة إلى الفيديو بمقدار 0.0205 ثانية؛ القيمة السالبة تقدمه.)
قد تجد أن الفيديو قد تم تحسينه من خلال الإعداد -fps 60 الذي يسمح بتشغيل بعض مقاطع الفيديو بمعدل 60 إطارًا في الثانية. (يمكنك معرفة معدل الإطارات الذي يتم دفقه فعليًا باستخدام -vs fpsdisplaysink و/أو -FPSdata.) عند استخدام هذا، يجب عليك استخدام خيار المزامنة الافتراضي المستند إلى الطابع الزمني -vsync
.
منذ UxPlay-1.54، يمكنك عرض "Cover Art" المصاحب من مصادر مثل Apple Music في وضع الصوت فقط (ALAC): قم بتشغيل " uxplay -ca <name> &
" في الخلفية، ثم قم بتشغيل عارض الصور مع إعادة التحميل التلقائي الميزة: مثال هو "feh": تشغيل " feh -R 1 <name>
" في المقدمة؛ قم بإنهاء feh ثم Uxplay باستخدام " ctrl-C fg ctrl-C
".
افتراضيًا، يستخدم GStreamer خوارزمية للبحث عن أفضل "مغسلة فيديو" (مصطلح GStreamer يشير إلى برنامج تشغيل الرسومات لعرض الصور) لاستخدامه. يمكنك تجاوز ذلك باستخدام خيار uxplay -vs <videosink>
. تعتمد منافذ الفيديو المتوفرة على نظام التشغيل وأجهزة الرسومات لديك: استخدم " gst-inspect-1.0 | grep sink | grep -e video -e Video -e image
" لمعرفة ما هو متاح. بعض الإمكانيات على Linux/*BSD هي:
glimagesink (OpenGL)، waylandsink
xviimagesink ، ximagesink (X11)
kmssink ، fbdevsink (رسومات وحدة التحكم بدون X11)
vaapisink (للرسومات المسرَّعة بأجهزة Intel/AMD)؛ بالنسبة لرسومات أجهزة NVIDIA (مع CUDA)، استخدم glimagesink مدمجًا مع " -vd nvh264dec
" (أو "nvh264sldec"، وهو متغير جديد سيصبح "nvh264dec" في GStreamer-1.24).
إذا كان الخادم "بلا رأس" (لا توجد شاشة متصلة، يعرض الصوت فقط) فاستخدم -vs 0
.
يبحث GStreamer أيضًا عن أفضل "موصل صوتي"؛ تجاوز اختياره باستخدام -as <audiosink>
. تشمل الاختيارات على نظام التشغيل Linux Pulsink، وAlsasink، وPipwiresink، وOSS4sink؛ تعرف على ما هو متاح مع gst-inspect-1.0 | grep sink | grep -e audio -e Audio
.
تتضمن إحدى المشكلات الشائعة محاولة GStreamer استخدام وحدة فك تشفير الفيديو h264 التي تم تكوينها بشكل غير صحيح أو غيابها (على سبيل المثال، VAAPI). جرب " uxplay -avdec
" لفرض فك تشفير فيديو البرنامج؛ إذا نجح هذا، فيمكنك محاولة إصلاح فك تشفير فيديو الأجهزة المتسارع إذا كنت في حاجة إليه، أو قم فقط بإلغاء تثبيت البرنامج الإضافي GStreamer vaapi.
راجع الاستخدام لمزيد من خيارات وقت التشغيل.
بالنسبة لفيديو Framebuffer (لنظام التشغيل Raspberry Pi OS "Lite" والتوزيعات الأخرى غير X11) استخدم KMS videosink "-vs kmssink" (تم كسر رابط فيديو DirectFB Framebuffer "dfbvideosink" على Pi، وsegfaults). في هذه الحالة، يجب عليك استخدام خيار "-vs kmssink" بشكل صريح، لأنه بدونه، لن تتمكن ميزة autovideosink من العثور على مقطع الفيديو الصحيح.
لا يوفر Raspberry Pi 5 فك تشفير الأجهزة H264 (ولا يحتاج إليه).
يجب أن يستخدم Pi Zero 2 W و3 Model B+ و4 Model B فك تشفير الأجهزة H264 بواسطة وحدة معالجة الرسومات من Broadcom، ولكنه يتطلب وحدة kernel خارج التيار bcm2835_codec يتم الاحتفاظ بها في شجرة Raspberry Pi kernel؛ التوزيعات المعروفة بتزويدها تشمل Raspberry Pi OS وUbuntu وManjaro-RPi4. استخدم فك تشفير البرنامج (الخيار -avdec) إذا لم تكن هذه الوحدة متوفرة.
يستخدم Uxplay المكوّن الإضافي Video4Linux2 (v4l2) من GStreamer-1.22 والإصدارات الأحدث للوصول إلى وحدة معالجة الرسومات، في حالة استخدام فك تشفير الأجهزة H264. يجب أن يحدث هذا تلقائيًا. يمكن استخدام الخيار -v4l2، ولكن من الأفضل عادةً السماح لـ GStreamer بالعثور على أفضل مسار فيديو بنفسه.
في التوزيعات الأقدم (GStreamer < 1.22)، يحتاج المكون الإضافي v4l2 إلى تصحيح: راجع UxPlay Wiki. يحتوي نظام Legacy Raspberry Pi OS (Bullseye) على نظام GStreamer-1.18.4 الذي تم تصحيحه جزئيًا والذي يحتاج إلى خيار uxplay -bt709 (ولا تستخدم -v4l2)؛ لا يزال من الأفضل تطبيق التصحيح الكامل من UxPlay Wiki في هذه الحالة.
بالنسبة لنظام التشغيل Raspberry Pi OS (Buster) "المزدوج القديم"، لا يوجد تصحيح لـ GStreamer-1.14. بدلاً من ذلك، قم أولاً بإنشاء إصدار جديد كامل من GStreamer-1.18.6 من المصدر باستخدام هذه التعليمات قبل إنشاء UxPlay.
يمكن لـ Raspberry Pi 3 Model B+ الذي يعمل بنظام تشغيل 32 بت أيضًا الوصول إلى وحدة معالجة الرسومات باستخدام البرنامج الإضافي GStreamer OMX (استخدم الخيار " -vd omxh264dec
")، ولكن تم كسر هذا بواسطة البرامج الثابتة Pi 4 Model B. تمت إزالة دعم OMX من Raspberry Pi OS (Bullseye)، ولكنه موجود في Buster.
يتم دعم فيديو H265 (4K) مع فك تشفير الأجهزة بواسطة وحدة معالجة الرسومات Broadcom على طرز Raspberry Pi 5، وكذلك على طراز Raspberry Pi 4 B. بينما يبدو أن GStreamer يستفيد من فك تشفير الأجهزة هذا، إلا أن سرعة العرض المُرضية لفيديو 4K بواسطة UxPlay على لم يتم تحقيق نماذج Raspberry Pi هذه بعد. الخيار "-h265" مطلوب لتفعيل دعم h265. يُفضل اتصال إيثرنت سلكي في هذا الوضع (وقد يطلبه العميل).
حتى مع فك تشفير فيديو GPU، قد يتم إسقاط بعض الإطارات بواسطة الطرز ذات الطاقة المنخفضة للحفاظ على مزامنة الصوت والفيديو باستخدام الطوابع الزمنية. في نظام التشغيل Legacy Raspberry Pi OS (Bullseye)، تسمح "خيارات الأداء" raspi-config بتحديد مقدار الذاكرة المخصصة لوحدة معالجة الرسومات، ولكن يبدو أن هذا الإعداد غائب في Bookworm (ولكن لا يزال من الممكن ضبطه على 128 ميجابايت على سبيل المثال عن طريق إضافة سطر "gpu_mem=128" في /boot/config.txt). يعمل جهاز Pi Zero 2 W (الذي يحتوي على ذاكرة بسعة 512 ميجابايت) بشكل جيد عند اختباره في إصدار 32 بت من Bullseye أو Bookworm Lite مع تخصيص 128 ميجابايت لوحدة معالجة الرسومات (يبدو أن الحجم الافتراضي هو 64 ميجابايت).
خيارات uxplay الأساسية لـ R Pi هي uxplay [-vs <videosink>]
. يكون الاختيار <videosink>
= glimagesink
مفيدًا في بعض الأحيان. باستخدام أداة تركيب الفيديو Wayland، استخدم <videosink>
= waylandsink
. مع فيديو Framebuffer، استخدم <videosink>
= kmssink
.
ssh user@remote_host
export DISPLAY=:0
nohup uxplay [options] > FILE &
سيتم تشغيل الصوت والفيديو على المضيف البعيد؛ سيستمر "nohup" في تشغيل uxplay في حالة إغلاق جلسة ssh. يتم حفظ الإخراج الطرفي في FILE (والذي يمكن أن يكون /dev/null لتجاهله)
ملاحظة: يتم تضمين ميزة خادم AirPlay الأصلي في MacOS 12 Monterey ، ولكنها تقتصر على الأجهزة الحديثة. يمكن أن يعمل Uxplay على أنظمة MacOS القديمة التي لن تكون قادرة على تشغيل Monterey ، أو يمكن تشغيل Monterey ولكن ليس البث.
تفترض هذه الإرشادات الخاصة بـ MacOS أن أدوات مطور سطر أوامر Xcode مثبتة (إذا تم تثبيت Xcode ، فتح المحطة ، اكتب "Sudo Xcode-Select-install" وقبول الشروط).
من المفترض أيضًا أن يتم تثبيت CMake> = 3.13: يمكن القيام بذلك باستخدام Macports Mactors ( sudo port install cmake
) أو Homebrew ( brew install cmake
) ، أو عن طريق تنزيل من https://cmake.org/download/. قم أيضًا بتثبيت git
إذا كنت ستستخدمه لجلب Uxplay.
قم بتثبيت Libplist التالي و Openssl-3.x. لاحظ أنه سيتم استخدام الإصدارات الثابتة من هذه المكتبات في بناء MacOS ، بحيث يمكن إلغاء تثبيتها بعد بناء Uxplay ، إذا كنت ترغب في ذلك.
إذا كنت تستخدم Homebrew: brew install libplist openssl@3
إذا كنت تستخدم macports: sudo port install libplist-devel openssl3
خلاف ذلك ، قم ببناء libplist و OPENSSL من المصدر: انظر التعليمات القريبة من نهاية هذه القراءة ؛ يتطلب أدوات التطوير (AutoconF ، Automake ، Libtool ، وما إلى ذلك ) لتثبيت.
بعد ذلك ، احصل على أحدث إصدار من MacOS من Gstreamer-1.0.
باستخدام Gstreamer "الرسمي" (الموصى به لكل من Macports ومستخدمي Homebrew) : قم بتثبيت إصدار Gstreamer لـ MacOS من https://gstreamer.freedesktop.org/download/. (يحتوي هذا الإصدار على PKG-Config الخاص به ، لذلك لا يتعين عليك تثبيت واحدة.) قم بتثبيت كل من حزم Gstreamer-1.0 و Gstreamer-1.0. بعد التنزيل ، انقر فوقهم على التثبيت (يتم تثبيته على /library/frameworks/gstreamer.framework). يجب ألا يقوم مستخدمو Homebrew أو MacPorts بتثبيت (أو يجب إلغاء تثبيته) Gstreamer المقدم من مدير الحزمة ، إذا استخدموا الإصدار "الرسمي".
باستخدام Homebrew's Gstreamer : هناك حاجة إلى PKG-Config: ("Brew تثبيت PKG-Config Gstreamer"). يؤدي هذا إلى تثبيت عدد كبير من الحزم الإضافية بواسطة Homebrew كتبعيات. تمت إعادة صياغة تثبيت Gstreamer Homebrew مؤخرًا في "صيغة واحدة" تدعى gstreamer
، والتي تعمل الآن دون الحاجة إلى ضبط GST_Plugin_Path في Enviroment. يقوم Homebrew بتثبيت GStreamer إلى (HOMEBREW)/lib/gstreamer-1.0
حيث (HOMEBREW)/*
هو /opt/homebrew/*
على macs silicon Apple ، و /usr/local/*
on intel macs ؛ لا تضع أي ملحقات إضافية غير متوفرة (التي تبنيها بنفسك) هناك ، وبدلاً من ذلك ، قم بتعيين GST_Plugin_Path للإشارة إلى موقعها (لا يوفر Homebrew gstreamer كامل ، ولكن يبدو أنه يحتوي على كل ما هو مطلوب لـ Uxplay).
باستخدام Gstreamer المثبت من Macports : لا ينصح بذلك ، حيث أن MacTors Gstreamer حاليًا قديم (v1.16.2) ، غير محافظ ، ومصمم لاستخدام x11:
(إذا كنت ترغب حقًا في استخدام MacPorts Gstreamer-1.16.2 ، قم بتثبيت PKGConf ("Sudo Port تثبيت PKGConf") ، ثم "Sudo Port Port Gstreamer1-GST-Pase-Base Gstreamer1-GST-Plugins-Gstreamer1-GST-Plugins -bad gstreamer1-gst-libav ". لدعم x11 على macOS ، تجميع Uxplay باستخدام خيار cmake خاص -DUSE_X11=ON
، وقم بتشغيله من محطة Xquartz مع -VS XIMAGESIND uxplay -s 800x600
بعد تثبيت Gstreamer ، قم ببناء وتثبيت Uxplay: افتح محطة وتغييرها إلى دليل مصدر Uxplay ("Uxplay-Master" لتنزيلات zipfile ، "Uxplay" لتنزيلات "git clone") وإنشاء/تثبيت مع "cmake. ؛ make ؛ Sudo جعل التثبيت "(كما هو الحال مع Linux).
يكشف تشغيل UXPlay أثناء التحقق من تحذيرات GStreamer (قم بذلك باستخدام "Export GST_DEBUG = 2" قبل Runnng uxplay) أنه من خلال التخفيض الافتراضي (نظرًا لأن Uxplay 1.64) يستخدم الطابع الزمني لمزامنة الفيديو ، يتم إسقاط العديد من أطر الفيديو (فقط على MACOS) ، ربما بسبب خطأ آخر (حول videometa) الذي يظهر في تحذيرات gstreamer. التوصية: استخدم خيار UXPlay الجديد "No Timestamp" -vsync no
" (يمكنك إضافة سطر" VSYNC NO "في ملف تكوين UXPlayRC).
على جهاز MacOS مع هذا التثبيت لـ GStreamer ، يبدو أن مقاطع الفيديو الوحيدة المتاحة هي مفاهيم (الاختيار الافتراضي الذي تم إجراؤه بواسطة AutoVideosink) و Osxvideosink. لا يعرض عنوان النافذة اسم خادم AirPlay ، لكن النافذة مرئية لتطبيقات مشاركة الشاشة (على سبيل المثال ، التكبير). يبدو أن Audiosink الوحيد المتاح هو Osxaudiosink.
يتم استخدام الخيار -NC دائمًا ، سواء تم تحديده أم لا. هذا حل بديل لمشكلة مع Gstreamer Videosinks على MacOS: إذا تم تدمير خط أنابيب Gstreamer أثناء ظهور نافذة المرآة ، يحدث Segfault.
في حالة Grimagesink ، لا تؤثر إعدادات الدقة "-S WXH" على حجم نافذة OpenGL Mirror الأولي (الصغير) ، ولكن يمكن توسيع النافذة باستخدام الماوس أو لوحة التتبع. على النقيض من ذلك ، فإن نافذة تم إنشاؤها باستخدام "-vs osxvideosink" كبيرة في البداية ، ولكن لها نسبة العرض إلى الارتفاع الخاطئة (صورة ممتدة) ؛ في هذه الحالة ، تتغير نسبة العرض إلى العرض عندما يتم تغيير عرض النافذة عن طريق سحب جانبها ؛ يمكن استخدام الخيار -vs "osxvideosink force-aspect-ratio=true"
لجعل النافذة لها نسبة العرض إلى الارتفاع الصحيحة عند فتحها لأول مرة.
قم بتنزيل وتثبيت Bonjour SDK لنظام التشغيل Windows V3.0 . يمكنك تنزيل SDK دون أي تسجيل في softpedia.com ، أو الحصول عليها من موقع Apple الرسمي https://developer.apple.com/download (تجعلك Apple تسجل كمطور للوصول إليه من موقعه). يجب أن يقوم هذا بتثبيت Bonjour SDK C:Program FilesBonjour SDK
.
(هذا مخصص للنوافذ 64 بت ؛ يجب أن يكون إنشاء نوافذ 32 بت ممكنة ، ولكن لم يتم اختبار .msys2.org/. اقبل موقع التثبيت الافتراضي C:mysys64
.
يتم تثبيت حزم MSYS2 مع متغير من مدير حزمة "Pacman" المستخدم بواسطة Arch Linux. افتح محطة "MSYS2 MINGW64" من علامة التبويب MSYS2 في قائمة Windows Start ، وقم بتحديث تثبيت MSYS2 الجديد باستخدام "Pacman -syu". ثم قم بتثبيت برنامج التحويل البرمجي Mingw-64 و Cmake
pacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc
سيتم تثبيت المترجم الذي يحتوي على جميع التبعيات المطلوبة في دليل MSYS64 ، مع المسار الافتراضي C:/msys64/mingw64
. سنقوم ببساطة ببناء uxplay من سطر الأوامر في بيئة MSYS2 (هذا يستخدم " ninja
" بدلاً من " make
" لنظام الإنشاء).
قم بتنزيل أحدث uxplay من github (لاستخدام git
، وتثبيته مع pacman -S git
، ثم " git clone https://github.com/FDH2/UxPlay
") ، ثم تثبيت uxplay تبعيات (تم تثبيت OpenSSL بالفعل مع msys2):
pacman -S mingw-w64-x86_64-libplist mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base
إذا كنت تحاول نظام بناء Windows مختلف ، فإن إصدارات MSVC من GSTreamer للنوافذ متوفرة من موقع Gstreamer الرسمي ، ولكن تم اختبار Mingw 64 بت على MSYS2 فقط.
CD إلى دليل مصدر UXPlay ، ثم " mkdir build
" و " cd build
". تفترض عملية الإنشاء أن Bonjour SDK مثبتة على C:Program FilesBonjour SDK
. إذا كان في مكان آخر ، فقم بتعيين Enviroment Variable Bonjour_sdk_home للإشارة إلى موقعه. ثم بناء uxplay مع
cmake ..
ninja
على افتراض عدم وجود خطأ في أي من هذه الأشياء ، فستقوم ببناء UXPlay القابلة للتنفيذ. exe في دليل ("build") الحالي. لا تتوفر ميزات "Sudo Make Install" و "Sudo Make Uninstall" المقدمة في المباني الأخرى على Windows ؛ بدلاً من ذلك ، تحتوي بيئة MSYS2 على /mingw64/...
ويمكنك تثبيت uxplay.exe القابلة للتنفيذ في C:/msys64/mingw64/bin
(بالإضافة إلى manpage والوثائق في C:/msys64/mingw64/share/...
) مع
cmake --install . --prefix /mingw64
لتكون قادرًا على عرض Manpage ، تحتاج إلى تثبيت مشاهد ManPage مع " pacman -S man
".
لتشغيل uxplay.exe ، تحتاج إلى تثبيت بعض حزم المكون الإضافي Gstreamer مع pacman -S mingw-w64-x86_64-gst-<plugin>
، حيث تم تقديم الحزم المطلوبة <plugin>
بواسطة
يتم إدراج حزم مكونات مكونات مكونة من MSYS2 GSTEAMER الأخرى التي قد تستخدمها في حزم MSYS2.
ستحتاج أيضًا إلى منح إذن إلى UXPlay.exe القابل للتنفيذ uxplay للوصول إلى البيانات من خلال جدار حماية Windows. قد يتم عرض خيار القيام بذلك تلقائيًا عند تشغيل Uxplay لأول مرة ، أو قد تحتاج إلى القيام بذلك باستخدام إعدادات Windows-> التحديث والأمان-> أمان Windows-> حماية جدار الحماية وحماية الشبكة-> السماح للتطبيق من خلال جدار الحماية . إذا كانت أعلام حماية الفيروس الخاصة بك uxplay.exe "مشبوهة" (ولكن بدون توقيع برامج ضارة حقيقية) ، فقد تحتاج إلى إعطائها استثناءً.
اختبر الآن عن طريق تشغيل " uxplay
" (في نافذة طرفية MSYS2). إذا كنت بحاجة إلى تحديد Audiosink ، فهناك خياران رئيسيان على Windows: المكون الإضافي الأقدم DirectSound " -as directsoundsink
" ، والمكون الإضافي للجلسة الصوتية الأكثر حداثة (WASAPI) " -as wasapisink
" ، الذي يدعم خيارات إضافية مثل
uxplay -as 'wasapisink device="<guid>"'
حيث يحدد <guid>
جهاز صوتي متاح بواسطة GUID ، والذي يمكن العثور عليه باستخدام " gst-device-monitor-1.0 Audio
": <guid>
يحتوي على نموذج مثل {0.0.0.00000000}.{98e35b2b-8eba-412e-b840-fd2c2492cf44}
. إذا لم يتم تحديد " device
" ، فسيتم استخدام جهاز الصوت الافتراضي.
إذا كنت ترغب في تحديد VideoSink باستخدام خيار -vs <videosink>
، glimagesink
بعض الخيارات لـ <videosink>
هي d3d11videosink
و d3dvideosink
و gtksink
.
-vs "d3d11videosink fullscreen-toggle-mode=property fullscreen=true"
مزيج مع الخيار -vs "d3d11videosink fullscreen-toggle-mode=alt-enter"
. للراحة ، ستتم إضافة هذه الخيارات إذا تم استخدام فقط -vs d3d11videosink
مع أو بدون خيار شاشة ملء الشاشة "-fs". (قد يرغب مستخدمو Windows في إضافة " vs d3d11videosink
" (بدون أولي " -
") إلى ملف خيارات بدء التشغيل Uxplay ؛ انظر "Man Uxplay" أو "Uxplay -H".) يمكن أيضًا تشغيل uxplay.exe القابلة للتنفيذ بدون بيئة MSYS2 ، في محطة Windows ، مع C:msys64mingw64binuxplay
.
خيارات:
-
") في ملف بدء التشغيل uxplay (إما المعطى بواسطة متغير البيئة $UXPLAYRC
، أو ~/.uxplayrc
أو ~/.config/uxplayrc
) ؛ يتم التعامل مع الخطوط التي تبدأ بـ " #
" كتعليقات ، وتجاهلها. تحل خيارات سطر الأوامر محل الخيارات في ملف بدء التشغيل.-n server_name (افتراضي: uxplay) ؛ سيكون اسم HostName server_name@ هو الاسم الذي يظهر يقدم خدمات AirPlay إلى iPad و iPhone وما إلى ذلك ، حيث يكون اسم المضيف هو اسم الخادم الذي يقوم بتشغيل Uxplay. سيكون هذا الآن هو الاسم الموضح فوق نافذة عرض المرآة (X11).
-NH لا تُلحق "@ assname " في نهاية اسم خادم AirPlay.
-H265 قم بتفعيل "ميزات ScreenMulticodec" (AirPlay "Bit 42) لقبول فيديو H265 (4K/HEVC) بالإضافة إلى H264 Video (1080p) في وضع Mirror الشاشة. عند استخدام هذا الخيار ، يتم إنشاء اثنين من خطوط أنابيب الفيديو (واحدة لـ H264 ، واحد لـ H265). إذا كانت أي مكونات Gstreamer في خط الأنابيب محددًا لـ H264 أو H265 ، فسيتم استخدام الإصدار الصحيح في كل خط أنابيب. يفضل اتصال Ethernet لخادم العميل السلكي على WiFi للفيديو 4K ، وقد يكون من المطلوب من قبل العميل. فقط أجهزة Apple الحديثة (M1/M2 Macs أو iPads ، وبعض أجهزة iPhone) يمكنها إرسال فيديو H265 إذا تم طلب حل "-S WXH" مع H> 1080. يغير خيار "-H265" الدقة الافتراضية ("-S" الخيار من 1920 × 1080 إلى 3840 × 2160 ، ويترك الحد الأقصى للإطار الافتراضي ("-fps") في 30 إطارًا في الثانية.
-Pin [nnnn] : (منذ الإصدار 1.67) استخدم مصادقة "PIN" على طراز Apple (لمرة واحدة) عندما يتصل عميل جديد لأول مرة: يتم عرض رمز دبوس من أربعة أرقام على المحطة ، والعميل تعرض الشاشة موجه تسجيل الدخول لإدخال هذا. عند استخدام "-pin" في حد ذاته ، يتم اختيار رمز دبوس عشوائي جديد لكل مصادقة ؛ إذا تم استخدام "-pin nnnn" (على سبيل المثال ، "-pin 3939") ، فسيقوم هذا بتعيين رمز ثابت غير متغير. يضيف المصادقة الخادم إلى قائمة "الخوادم الموثوقة" الخاصة بالعميل ولن يحتاج العميل إلى إعادة صياغة شريطة أن تظل المفاتيح العامة العميل والخادم دون تغيير. (بشكل افتراضي منذ الإصدار 1.68 ، يتم إنشاء مفتاح الخادم العام من عنوان MAC ، والذي يمكن تغييره باستخدام خيار -M ؛ انظر خيار المفتاح لطريقة بديلة لتوليد المفاتيح). (أضف سطر "PIN" في ملف بدء التشغيل Uxplay إذا كنت ترغب في استخدام خادم Uxplay لاستخدام بروتوكول مصادقة PIN).
-reg [ اسم الملف ] : (منذ V1.68). إذا تم استخدام "-pin" ، فإن هذا الخيار يحتفظ بسجل لـ "العملاء الموثوق بهم" المعتمدين في $ home/.uxplay.register (أو اختياريًا ، في اسم الملف ). بدون هذا الخيار ، يتم الوثوق بالعملاء الذين يتخطون مصادقة الدبوس ولا يتم فحصهم. قد يكون هذا الخيار مفيدًا إذا تم استخدام Uxplay في بيئة عامة أكثر ، لتسجيل تفاصيل العميل ؛ السجل هو نص ، سطر واحد لكل عميل ، مع مفتاح العميل العام (تنسيق BASE-64) ومعرف الجهاز واسم الجهاز ؛ التعليق على (مع "#") أو حذف رسائل إلغاء مرشحات السطر العميل المقابل (انظر الخيارات -rurtrict ، -lock ، -السماح لمزيد من الطرق للتحكم في وصول العميل). (أضف سطر "Reg" في ملف بدء التشغيل إذا كنت ترغب في استخدام هذه الميزة.)
-vsync [x] (في وضع المرآة :) يستخدم هذا الخيار ( الآن الافتراضي ) الطوابع الزمنية لمزامنة الصوت مع الفيديو على الخادم ، مع تأخير صوتي اختياري في ميلي ثانية ( X = "20.5" يعني 0.0205 ثانية تأخير: يُسمح بتأخيرات إيجابية أو سلبية أقل من ثانية.) هناك حاجة إلى أنظمة الطاقة المنخفضة مثل Raspberry Pi بدون فك تشفير الفيديو.
-vsync no (في وضع المرآة :) هذا يؤدي إلى إيقاف التزامن الصوتي-video المستند إلى الطابع الزمني ، واستعادة السلوك الافتراضي قبل uxplay-1.64. يبدو أن أنظمة سطح المكتب القياسية تعمل بشكل جيد دون استخدام الطوابع الزمنية: هذا الوضع مناسب لـ "البث المباشر" مثل استخدام Uxplay كشاشة ثانية لجهاز كمبيوتر Mac ، أو مراقبة كاميرا ويب ؛ مع ذلك ، لا يتم إسقاط إطارات الفيديو.
-async [x] (في وضع الصوت فقط (ALAC) :) يستخدم هذا الخيار الطوابع الزمنية لمزامنة الصوت على الخادم مع الفيديو على العميل ، مع تأخير صوتي اختياري في المللي ثانية (العشرية) ( x = "20.5" يعني 0.0205 تأخير الثواني: يتم السماح بتأخير إيجابي أو سلبي أقل من ثانية.) نظرًا لأن العميل يضيف تأخير فيديو لحساب الكمون ، فإن الخادم الموجود في وضع async يضيف صوتًا مكافئًا التأخير ، مما يعني أن التغييرات الصوتية مثل الإيقاف المؤقت أو تغيير المسار لن تدخل سارية المفعول على الفور. قد يتم تخفيف هذا من حيث المبدأ باستخدام إعداد زمن الوصول إلى -al
إلى تغيير الكمون (الافتراضي 0.25 ثانية) التي يوفرها الخادم إلى العميل ، ولكن في الوقت الحالي ، لا يبدو أن تغيير هذا له أي تأثير .
-لا . هذا هو لا يزال السلوك الافتراضي في وضع الصوت فقط ، ولكن قد يكون هذا الخيار مفيدًا كخيار لخط الأوامر لإيقاف خيار -async
الذي تم تعيينه في ملف تكوين "uxplayrc".
-DB LOW [: HIVE ] RESCALES توهين التحكم في حجم الهواء (الكسب) من -30DB: 0DB إلى LOW : 0DB أو LOW : High . يجب أن يكون الحد الأدنى المنخفض سلبيًا (التوهين) ؛ الحد الأعلى العالي يمكن أن يكون إما علامة. (يقيد GSTreamer التغذية ذات الحجم المرتفع بحيث لا يمكن أن يتجاوز +20dB). إن عملية إعادة القياس "مسطحة" ، بحيث يتم ترجمة -إلى -50: 10: تغير في توهين الهواء بمقدار -7dB إلى -7 × (60/30) = -14 ديسيبل التوهين ، والحجم القصوى (AirPlay 0dB) هو زيادة 10 ديسيبل ، وسيصبح AirPlay -30dB -50dB. لاحظ أن الحد الأدنى لقيمة AirPlay (-30dB بالضبط) تتم ترجمة إلى "كتم".
-يوفر Tapper ملفًا "مدببًا" لسيطرة Airplay Control (مطابقة واحدة تسمى "DASL-Tapering" في shairport-sync): في كل مرة طول منزلق وحدة التخزين (أو عدد الخطوات فوق كتم ، حيث 16 خطوة = كاملة يتم تخفيض حجم) بنسبة 50 ٪ ، ويصبح الحجم المتصور النصف (توهين 10 ديسيبل). (يتم تعديل هذا بأحجام منخفضة ، لاستخدام وحدة التخزين "غير المشقوق" إذا كان أعلى صوتًا.)
-S WXH EG -S 1920X1080 (= "1080p") ، قرارات العرض الافتراضية والارتفاع في البكسلات للفيديو H264. (يصبح الافتراضي 3840x2160 (= "4K") عند استخدام خيار -H265.) هذا مجرد طلب إلى عميل AirPlay ، وربما لن يكون الدقة النهائية التي تحصل عليها. W و H هي أرقام كاملة مع أربعة أرقام أو أقل. لاحظ أن حجم بكسل الارتفاع هو التحكم الذي يستخدمه العميل لتحديد تنسيق البث ؛ يتم تعديل العرض ديناميكيًا على شكل الصورة (تنسيق صورة أو منظر طبيعي ، اعتمادًا على كيفية احتجاز جهاز iPad ، على سبيل المثال).
-S WXH@R على النحو الوارد أعلاه ، ولكن أيضًا يُبلغ عميل AirPlay عن معدل تحديث الشاشة في الشاشة. الافتراضي هو r = 60 (60 هرتز) ؛ يجب أن يكون R عدد كامل أقل من 256.
-O تشغيل خيار "مفرط" لإطار العرض. هذا يقلل من دقة الصورة باستخدام بعض وحدات البكسل المطلوبة من قبل الخيار -WXH (أو قيمها الافتراضية 1920x1080) عن طريق إضافة إطار حدود فارغ من وحدات البكسل غير المستخدمة (والتي ستضيع في شاشة كاملة الشاشة التي تفرط عرضه Gstreamer). التوصية: لا تستخدم هذا الخيار ما لم يكن هناك سبب خاص لاستخدامه.
-FS يستخدم وضع ملء الشاشة ، ولكنه يعمل فقط مع X11 و Wayland و VAAPI و D3D11 (Windows).
-P يتيح لك تحديد منافذ الشبكة المستخدمة بواسطة Uxplay (يجب فتحها إذا كان الخادم وراء جدار الحماية). في حد ذاته ، يقوم -P بتعيين منافذ "Legacy" TCP 7100 ، 7000 ، 7001 ، UDP 6000 ، 6001 ، 7011. -PN (على سبيل المثال -P 35000) تقوم بتعيين منافذ TCP و UDP N ، N+1 ، N+2. -P N1 ، N2 ، N3 (القيم المفصلية للفاصلة) يعين كل منفذ بشكل منفصل ؛ -P N1 ، N2 يقوم بتعيين المنافذ N1 ، N2 ، N2+1. -P TCP N أو -P UDP N يعمل فقط على منافذ TCP أو UDP. يجب أن تكون الموانئ في النطاق [1024-65535].
إذا لم يتم استخدام خيار -P ، يتم اختيار المنافذ ديناميكيًا (بشكل عشوائي) ، والتي لن تعمل إذا كان جدار الحماية قيد التشغيل.
-AVDEC قوات استخدام البرامج H264 فك تشفير باستخدام عنصر GSTreamer AVDEC_H264 (فك تشفير LIBAV H264). يجب أن يمنع هذا الخيار AutoVideOsink اختيار مكون إضافي مكون من أجهزة Videosink مثل Vaapisink.
-vp parser يختار عنصر محلل H264 لخط أنابيب Gstreamer ، الافتراضي هو H264Parse. باستخدام عروض الأسعار "..." يسمح بإضافة خيارات.
-يختار وحدة فك ترميز VD عنصر فك ترميز خط أنابيب Gstreamer H264 ، بدلاً من القيمة الافتراضية "decodebin" التي تختارها لك. يتم فك تشفير البرمجيات بواسطة AVDEC_H264 ؛ تشمل أجهزة تجزئة الأجهزة المختلفة: VAAPIH264DEC ، NVDEC ، NVH264DEC ، V4L2H264DEC (تتطلب هذه الأجهزة المناسبة متاحة). باستخدام علامات الاقتباس "..." يسمح بتضمين بعض المعلمات مع اسم وحدة فك الترميز.
-يختار محول VC عنصر Videoconverter الخاص بخيل Gstreamer ، بدلاً من القيمة الافتراضية "videoconvert". عند استخدام Video4Linux2 Dected Hardware بواسطة GPU ، ستستخدم -vc v4l2convert
أيضًا وحدة معالجة الرسومات لتحويل الفيديو. باستخدام علامات الاقتباس "..." يتيح تضمين بعض المعلمات مع اسم المحول.
-VS Videosink تختار Gstreamer Videosink ، بدلاً من القيمة الافتراضية "AutoVideOsink" التي تختارها لك. بعض خيارات Videosink هي: Ximagesink و XVimagesink و Vaapisink (لرسومات Intel) و Gtksink و Gtksinking و Waylandsink و OsxVideosink (ل MACOS) أو KMSSINK (للأنظمة بدون X11 ، مثل Raspberry Pi OS) FPS). باستخدام عروض الأسعار "..." يتيح تضمين بعض المعلمات مع اسم Videosink. على سبيل المثال ، يتم دعم وضع ملء الشاشة بواسطة البرنامج المساعد Vaapisink ، ويتم الحصول عليه باستخدام -vs "vaapisink fullscreen=true"
؛ هذا يعمل أيضا مع waylandsink
. بناء جملة مثل هذه الخيارات خاصة بمكون إضافي معين (انظر وثائق Gstreamer) ، وقد لا تعمل بعض خيارات Videosink على نظامك.
-VS 0 يقمع عرض الفيديو المتدفق. في وضع المرآة ، لا تزال شاشة العميل تتناقص بمعدل أقل من إطار واحد في الثانية ، ولكن لا يتم عرضه أو عرضه. يجب دائمًا استخدام هذا الخيار إذا كان الخادم "مقطوع الرأس" (بدون شاشة مرفقة لعرض الفيديو) ، ويستخدم فقط لتقديم الصوت ، والذي سيكون صوتًا مضغوطًا على AAC في وضع المرآة مع فيديو غير متميز ، و ALAC فائق الجودة Apple Appless Audio في وضع AirPlay Audio فقط.
-V4L2 إعدادات الفيديو للأجهزة H264 فك تشفير الفيديو في GPU بواسطة Video4Linux2. أي ما يعادل -vd v4l2h264dec -vc v4l2convert
.
-BT709 حل بديل لفشل المكون الإضافي Video4Linux2 الأقدم في التعرف على استخدام Apple لمتغير "اللون الكامل" غير المألوف (ولكنه مسموح به) لمعايير اللون BT709 للتلفزيون الرقمي. لم يعد هناك حاجة إلى هذا من قِبل Gstreamer-1.20.4 والركود الخلفي منه.
-RPI يعادل "-v4l2" (غير صالح لنموذج Raspberry PI 5 ، وإزالته في Uxplay 1.67)
-rpigl يعادل "-rpi -vs glimagesink". (تمت إزالته منذ Uxplay 1.67)
-RPIFB يعادل "-RPI -VS KMSSINK" (تمت إزالته منذ Uxplay 1.67)
-RPIWL يعادل "-RPI -VS Waylandsink". (تمت إزالته منذ Uxplay 1.67)
-حيث تختار Audiosink مجموعة Gstreamer Audiosink ، بدلاً من السماح لـ AutoAudiosink باختيارها لك. بعض خيارات Audiosink هي: Pulsesink ، alsasink ، pipewiresink ، Osssink ، OSS4Sink ، Jackaudiosink ، Osxaudiosink (لـ MacOS) ، Wasapisink ، DirectOndsink (للنوافذ). قد يسمح باستخدام علامات الاقتباس "..." ببعض المعلمات الاختيارية (على سبيل المثال -as "alsasink device=..."
لتحديد جهاز إخراج غير متفرغ). بناء جملة هذه الخيارات خاصة بمكون إضافي معين (انظر وثائق Gstreamer) ، وقد لا تعمل بعض خيارات Audiosink على نظامك.
-as 0 (أو فقط -A ) يقمع تشغيل الصوت المتدفق ، ولكن يعرض الفيديو المتدفق.
-ال X يحدد زمن الوصول الصوتي X في ثواني (عشرية) في الصوت فقط (ALAC) ، والتي يتم الإبلاغ عنها إلى العميل. يُسمح بالقيم في النطاق [0.0 ، 10.0] ثواني ، وسيتم تحويلها إلى عدد كامل من microseconds. الافتراضي هو 0.25 ثانية (250000 USEC). (ومع ذلك ، يبدو أن العميل يتجاهل هذا الكمون المبلغ عنه ، لذلك يبدو هذا الخيار غير وظيفي.)
يوفر اسم FileName CA ملفًا (حيث يمكن أن يتضمن اسم الملف مسارًا كاملًا) يستخدم لإخراج "فن الغلاف" (من Apple Music ، وما إلى ذلك ) في وضع ALAC الصوت فقط. يتم كتابة هذا الملف بأحدث فن الغلاف عند وصوله. يتم التخلص من فن الغلاف (تنسيق JPEG) إذا لم يتم استخدام هذا الخيار. استخدم مع عارض صورة يعيد تحميل الصورة إذا تغيرت ، أو بانتظام ( على سبيل المثال مرة واحدة في الثانية.). لتحقيق ذلك ، قم بتشغيل " uxplay -ca [path/to/]filename &
" في الخلفية ، ثم قم بتشغيل عارض الصورة في المقدمة. على سبيل المثال ، باستخدام feh
كمشاهد: قم بتشغيل " feh -R 1 [path/to/]filename
" (في نفس النافذة الطرفية التي وضعت فيها Uxplay في الخلفية). لاستقالة ، استخدم ctrl-C fg ctrl-C
لإنهاء عارض الصور ، إحضار