Hinweis: AirPlay2-Multiroom-Audio-Streaming wird nicht unterstützt. Verwenden Sie dazu shairport-sync.
.
Installieren Sie uxplay auf Debian-basierten Linux-Systemen mit „ sudo apt install uxplay
“; unter FreeBSD mit „ sudo pkg install uxplay
“. Auch auf Arch-basierten Systemen über AUR verfügbar. Seit v. 1.66 wird uxplay von Fedora 38 nun auch im RPM-Format verpackt („ sudo dnf install uxplay
“).
Für andere RPM-basierte Distributionen, die UxPlay noch nicht gepackt haben, wird jetzt eine RPM-„Spezifikationsdatei“ uxplay.spec mit neueren Versionen bereitgestellt (siehe deren „Assets“) und kann auch im obersten Quellverzeichnis von UxPlay gefunden werden. Weitere Informationen zum Erstellen eines installierbaren RPM-Pakets finden Sie im Abschnitt zur Verwendung dieser Spezifikationsdatei.
Nach der Installation:
(Unter Linux und *BSD): Wenn auf dem Server, auf dem UxPlay gehostet wird, eine Firewall aktiv ist, stellen Sie sicher, dass der Standardnetzwerkport (UDP 5353) für mDNS/DNS-SD-Abfragen geöffnet ist (weitere Einzelheiten finden Sie unter „Fehlerbehebung“ weiter unten). Öffnen Sie außerdem drei UDP- und drei TCP-Ports für Uxplay und verwenden Sie die Option „uxplay -p“ (siehe „ man uxplay
“ oder „ uxplay -h
“).
Selbst wenn Sie das vorkompilierte uxplay-Binärpaket Ihrer Distribution installieren, müssen Sie möglicherweise die folgenden Anweisungen zum Ausführen von UxPlay lesen, um zu sehen, welche der GStreamer-Plugin-Pakete Ihrer Distribution Sie ebenfalls installieren sollten.
Im Nur-Audio-Modus (Apple Music usw.) wird die beste Qualität mit der Option „uxplay -async“ erzielt, allerdings gibt es dann eine von iOS auferlegte Latenz von 2 Sekunden.
Fügen Sie alle UxPlay-Optionen, die Sie als Standard verwenden möchten, zu einer Startdatei ~/.uxplayrc
hinzu (siehe „ man uxplay
“ oder „ uxplay -h
“ für Format und andere mögliche Speicherorte). Insbesondere wenn Ihr System PipeWire-Audio- oder Wayland-Videosysteme verwendet, möchten Sie möglicherweise „als Pipewiresink“ oder „vs Waylandsink“ als Standardeinstellungen zur Datei hinzufügen. (Die Ausgabe der Terminalbefehle „ps waux | grep pulse“ oder „pactl info“ enthält „pipewire“, wenn Ihr Linux/BSD-System es verwendet).
Auf Raspberry Pi: Wenn Sie Ubuntu 22.10 oder früher verwenden, muss GStreamer gepatcht werden, um die Hardware-Videodekodierung durch die Broadcom-GPU zu verwenden (ebenfalls empfohlen, aber optional für Raspberry Pi OS (Bullseye): Verwenden Sie die Option „ uxplay -bt709
“, wenn Sie sie nicht verwenden den Patch).
Informationen zum (einfachen) Kompilieren des neuesten UxPlay aus dem Quellcode finden Sie im Abschnitt „UxPlay erhalten“.
Bei diesem Projekt handelt es sich um einen GPLv3-Open-Source-Unix-AirPlay2-Spiegelserver für Linux, macOS und *BSD. Es wurde ursprünglich von antimof unter Verwendung von Code von OpenMAX-basiertem RPiPlay entwickelt, das wiederum von AirplayServer, shairplay und playfair abgeleitet ist. (Die Antimof-Site ist nicht mehr an der Entwicklung beteiligt, veröffentlicht jedoch regelmäßig Updates, die von der neuen Haupt-UxPlay-Site stammen.)
UxPlay wird auf einer Reihe von Systemen getestet, darunter (unter anderem) Debian (10 „Buster“, 11 „Bullseye“, 12 „Bookworm“), Ubuntu (20.04 LTS, 22.04 LTS, 23.04 (auch Ubuntu-Derivate Linux Mint, Pop! _OS), Red Hat und Klone (Fedora 38, Rocky Linux 9.2), openSUSE Leap 15.5, Mageia 9, OpenMandriva „ROME“, PCLinuxOS, Arch Linux, Manjaro und sollte auf jedem Linux-System laufen. Auch getestet auf macOS Catalina und Ventura (Intel) und Sonoma (M2), FreeBSD 14.0, Windows 10 und 11 (64 Bit).
Auf Raspberry Pi 4 Modell B wird es auf Raspberry Pi OS (Bullseye und Bookworm) (32- und 64-Bit), Ubuntu 22.04 LTS und 23.04, Manjaro RPi4 23.02 und (ohne Hardware-Videodekodierung) auf openSUSE 15.5 getestet. Auch getestet auf Raspberry Pi Zero 2 W, 3 Modell B+ und jetzt 5.
Sein Hauptzweck besteht darin, wie ein AppleTV für die Bildschirmspiegelung (mit Audio) von iOS/iPadOS/macOS-Clients (iPhone, iPod Touch, iPad, Mac-Computer) auf dem Serverdisplay eines Hosts zu fungieren, auf dem Linux, macOS oder ein anderes Unix läuft (und jetzt auch Microsoft Windows). UxPlay unterstützt Apples AirPlay2-Protokoll mithilfe des „Legacy Protocol“, einige Funktionen fehlen jedoch. (Einzelheiten darüber, was öffentlich über das AirPlay 2-Protokoll von Apple bekannt ist, finden Sie hier, hier und hier; siehe auch pyatv, das eine Ressource zum Hinzufügen moderner Protokolle sein könnte.) Es gibt zwar keine Garantie dafür, dass zukünftige iOS-Versionen weiterhin das „Legacy Protocol“ unterstützen ", iOS 17 unterstützt weiterhin.
Der UxPlay-Server und sein Client müssen sich im selben lokalen Netzwerk befinden, in dem auch ein Bonjour/Zeroconf mDNS/DNS-SD-Server läuft (nur der DNS-SD-Dienst „Service Discovery“ ist unbedingt erforderlich, es ist nicht erforderlich, dass der (lokales Netzwerk muss auch vom mDNS-basierten Typ „.local“ sein). Auf Linux- und BSD-Unix-Servern wird dies normalerweise von Avahi über den Dienst avahi-daemon bereitgestellt und ist in den meisten Linux-Distributionen enthalten (dieser Dienst kann auch von macOS-, iOS- oder Windows-Servern bereitgestellt werden).
Verbindungen zum UxPlay-Server durch iOS-/MacOS-Clients können sowohl im AirPlay Mirror- Modus (der verlustbehaftet komprimiertes AAC-Audio streamt und gleichzeitig den Client-Bildschirm spiegelt) als auch im alternativen AirPlay Audio- Modus, der Apple Lossless (ALAC)-Audio ohne Bildschirmspiegelung streamt, initiiert werden . Im Audiomodus werden Metadaten im uxplay-Terminal angezeigt; wenn die UxPlay-Option -ca <name>
verwendet wird, wird das zugehörige Cover auch in einer regelmäßig aktualisierten Datei <name>
ausgegeben kann mit einem (neu ladenden) Grafik-Viewer Ihrer Wahl angezeigt werden. Während einer aktiven Verbindung ist ein Wechsel zwischen Spiegel- und Audiomodus möglich: Stoppen Sie im Spiegelmodus die Spiegelung (oder schließen Sie das Spiegelfenster) und starten Sie eine Audiomodus -Verbindung, wechseln Sie zurück Initiieren einer Verbindung im Spiegelmodus ; die Cover-Art-Anzeige stoppt/neustartet, wenn Sie den Audiomodus verlassen/wieder aufrufen .
Beachten Sie, dass Apple Video-DRM (wie in den „Apple TV App“-Inhalten auf dem Client zu finden) von UxPlay nicht entschlüsselt werden kann und die Apple TV App nicht im AirPlay Mirror-Modus von UxPlay angesehen werden kann (nur das ungeschützte Audio wird in AAC gestreamt). Format), aber sowohl Video- als auch Audioinhalte von DRM-freien Apps wie der „YouTube-App“ werden von UxPlay im Mirror-Modus gestreamt.
Da UxPlay derzeit kein Nicht-Spiegel-AirPlay-Videostreaming unterstützt (wobei der Client einen Webserver auf dem AirPlay-Server steuert, der HLS-Inhalte direkt empfängt, um zu verhindern, dass diese vom Client dekodiert und neu kodiert werden), verwenden Sie das Symbol für AirPlay-Video in Apps wie die YouTube-App senden nur Audio (im verlustfreien ALAC-Format) ohne das dazugehörige Video (es ist geplant, HLS-Video in zukünftigen Versionen von UxPlay zu unterstützen).
UxPlay verwendet GStreamer-„Plugins“ zum Rendern von Audio und Video. Das bedeutet, dass Video und Audio „out of the box“ durch eine Auswahl an Plugins unterstützt werden. AirPlay streamt Videos im h264-Format: Die gstreamer-Dekodierung ist Plugin-unabhängig und verwendet beschleunigte GPU-Hardware-h264-Decoder, sofern verfügbar; Wenn nicht, wird Software-Dekodierung verwendet.
VAAPI für integrierte Intel- und AMD-Grafikkarten, NVIDIA mit „Nouveau“-Open-Source-Treiber
Bei einer Intel- oder AMD-GPU ist die Hardware-Dekodierung mit dem Open-Source-VAAPI-Gstreamer-Plugin vorzuziehen. Auch die Open-Source-Treiber „Nouveau“ für NVIDIA-Grafiken werden grundsätzlich unterstützt: siehe hier, allerdings muss VAAPI um Firmware ergänzt werden, die aus den proprietären NVIDIA-Treibern extrahiert wurde.
NVIDIA mit proprietären Treibern
Das nvh264dec
Plugin (seit GStreamer-1.18.0 in gstreamer1.0-plugins-bad enthalten) kann zur beschleunigten Videodekodierung auf der NVIDIA-GPU verwendet werden, nachdem NVIDIAs CUDA-Treiber libcuda.so
installiert wurde. Für GStreamer-1.16.3 oder früher heißt das Plugin nvdec
und muss vom Benutzer erstellt werden.
Video4Linux2-Unterstützung für h264-Hardware-Dekodierung auf Raspberry Pi (Pi 4B und älter)
Raspberry Pi (RPi)-Computer (getestet auf Pi 4 Model B) können UxPlay jetzt mit Software-Videodekodierung ausführen, aber die hardwarebeschleunigte h264/h265-Dekodierung durch Firmware in der Broadcom 2835-GPU des Pi wird bevorzugt. UxPlay greift darauf über das Plugin GStreamer-1.22 Video4Linux2 (v4l2) zu; Verwendet das nicht zum Mainline-Linux-Kernelmodul gehörende bcm2835-codec, das von Raspberry Pi verwaltet wird und bislang nur im Raspberry Pi-Betriebssystem enthalten ist, sowie zwei weitere Distributionen (Ubuntu, Manjaro), die mit Raspberry Pi Imager verfügbar sind. (Für GStreamer < 1.22 siehe das UxPlay-Wiki) .
(Neu): Unterstützung für h265 (HEVC) Hardware-Dekodierung auf Raspberry Pi (Pi 4 Modell B und Pi 5)
Es gibt Unterstützung, aber bisher wurden keine zufriedenstellenden Ergebnisse erzielt. Das Pi-Modell 5 bietet nur eine hardwarebeschleunigte (GPU) Dekodierung für h265-Videos, nicht jedoch H264, da seine CPU leistungsstark genug für eine zufriedenstellende Software-H264-Dekodierung ist
Die GPLv3-Lizenz von UxPlay verfügt nicht über eine zusätzliche „GPL-Ausnahme“, die ausdrücklich die Verbreitung in kompilierter Form erlaubt, wenn sie mit OpenSSL-Versionen vor Version 3.0.0 verknüpft ist (ältere Versionen von OpenSSL haben eine Lizenzklausel, die mit der GPL nicht kompatibel ist, es sei denn, OpenSSL kann dies sein). wird als „Systembibliothek“ betrachtet, was in *BSD der Fall ist). Viele Linux-Distributionen behandeln OpenSSL als „Systembibliothek“, einige (z. B. Debian) jedoch nicht: In diesem Fall wird das Problem durch die Verknüpfung mit OpenSSL-3.0.0 oder höher gelöst.
Laden Sie entweder UxPlay-master.zip herunter und entpacken Sie es, oder (wenn Git installiert ist): „git clone https://github.com/FDH2/UxPlay“. Sie können auch eine aktuelle oder frühere Version herunterladen, die unter „Releases“ aufgeführt ist.
(Passen Sie diese Anweisungen für nicht auf Debian basierende Linuxes oder *BSD an; für macOS siehe spezifische Anleitung unten). Hilfe bei etwaigen Schwierigkeiten finden Sie im Abschnitt „Fehlerbehebung“ weiter unten.
Sie benötigen einen C/C++-Compiler (z. B. g++) mit installierten Standard-Entwicklungsbibliotheken. Debian-basierte Systeme stellen ein Paket „build-essential“ zur Verwendung beim Kompilieren von Software bereit. Sie benötigen außerdem pkg-config: Wenn es von „ which pkg-config
“ nicht gefunden wird, installieren Sie pkg-config oder seinen gleichwertigen Ersatz pkgconf. Stellen Sie außerdem sicher, dass cmake>=3.5 installiert ist: „ sudo apt install cmake
“ (fügen Sie bei Bedarf build-essential
und pkg-config
(oder pkgconf
) hinzu).
Stellen Sie sicher, dass Ihre Distribution OpenSSL 1.1.1 oder höher und libplist 2.0 oder höher bereitstellt. (Dies bedeutet Debian 10 „Buster“-basierte Systeme (z. B. Ubuntu 18.04) oder neuer; auf Debian 10-Systemen ist „libplist“ eine ältere Version, Sie benötigen „libplist3“.) Wenn dies nicht der Fall ist, müssen Sie möglicherweise erstellen und installieren diese aus der Quelle (siehe Anweisungen am Ende dieser README-Datei).
Wenn Sie eine nicht standardmäßige OpenSSL-Installation haben, müssen Sie möglicherweise die Umgebungsvariable OPENSSL_ROOT_DIR festlegen ( z. B. „ export OPENSSL_ROOT_DIR=/usr/local/lib64
“, wenn es dort installiert ist). Ebenso setzen Sie für nicht standardmäßige (oder mehrere) GStreamer-Installationen die Umgebungsvariable GSTREAMER_ROOT_DIR auf das Verzeichnis, das das Verzeichnis „.../gstreamer-1.0/“ der gstreamer-Installation enthält, die UxPlay verwenden soll (wenn dies z. B. „~ /my_gstreamer/lib/gstreamer-1.0/“, legen Sie diesen Speicherort mit „ export GSTREAMER_ROOT_DIR=$HOME/my_gstreamer/lib
“ fest.
Wechseln Sie dann in einem Terminalfenster in das Quellverzeichnis des heruntergeladenen Quellcodes („UxPlay-*“, „*“ = „master“ oder das Release-Tag für Zipfile-Downloads, „UxPlay“ für „git clone“-Downloads). Befolgen Sie die nachstehenden Anweisungen:
Hinweis: Standardmäßig wird UxPlay mit einer Optimierung für den Computer erstellt, auf dem es erstellt wird. Wenn dies nicht der Fall ist, z. B. beim Packen einer Distribution, verwenden Sie die cmake-Option -DNO_MARCH_NATIVE=ON
.
Wenn Sie X11 Windows unter Linux oder *BSD verwenden und den Vollbildmodus mit einem Tastendruck (F11 oder Alt_L+Eingabetaste) ein-/ausschalten möchten, muss UxPlay mit einer Abhängigkeit von Ab UxPlay-1.59 erfolgt dies standardmäßig, WENN die X11-Entwicklungsbibliotheken installiert und erkannt werden. Installieren Sie diese mit „ sudo apt install libx11-dev
“. Wenn GStreamer < 1.20 erkannt wird, wird auch eine von Bildschirmfreigabe-Apps ( z . B. Zoom) benötigte Korrektur vorgenommen.
-DNO_X11_DEPS=ON
.sudo apt install libssl-dev libplist-dev
". ( es sei denn, Sie müssen OpenSSL und libplist aus der Quelle erstellen ).sudo apt install libavahi-compat-libdnssd-dev
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
. (* Überspringen, wenn Sie Gstreamer aus dem Quellcode erstellt haben )cmake .
( Für einen saubereren Build, der nützlich ist, wenn Sie die Quelle ändern, ersetzen Sie dies durch „ mkdir build; cd build; cmake ..
„: Sie können dann bei Bedarf den Inhalt des build
-Verzeichnisses löschen, ohne dass dies Auswirkungen auf die Quelle hat. ) Außerdem Fügen Sie hier nach Bedarf alle cmake-Optionen „ -D
“ hinzu (z. B. -DNO_X11_DEPS=ON
oder -DNO_MARCH_NATIVE=ON
).make
sudo make install
(Sie können anschließend mit sudo make uninstall
im selben Verzeichnis deinstallieren, in dem dies ausgeführt wurde). Dies installiert die ausführbare Datei „ uxplay
“ nach /usr/local/bin
(und installiert eine Manpage an einen Standardort wie /usr/local/share/man/man1
und README-Dateien an einen Ort wie /usr/local/share/doc/uxplay
). (Wenn „man uxplay“ fehlschlägt, prüfen Sie, ob $MANPATH festgelegt ist: Wenn ja, muss der Pfad zur Manpage (normalerweise /usr/local/share/man/) zu $MANPATH hinzugefügt werden.) Die ausführbare Datei von uxplay kann ebenfalls vorhanden sein befindet sich nach dem Build-Vorgang im Build-Verzeichnis, wenn Sie es vor der Installation testen möchten (in diesem Fall müssen die GStreamer-Plugins zuerst installiert werden).
**Für diejenigen mit RPM-basierten Distributionen ist auch eine RPM-Spezifikationsdatei uxplay.spec verfügbar: siehe Erstellen eines installierbaren RPM-Pakets.
Red Hat oder Klone wie CentOS (jetzt weitergeführt als Rocky Linux oder Alma Linux): (sudo dnf install oder sudo yum install) openssl-devel libplist-devel avahi-compat-libdns_sd-devel gstreamer1-devel gstreamer1-plugins-base- devel (+libX11-devel für Vollbild-X11) (einige davon befinden sich möglicherweise im Add-on „CodeReady“. Repository, von Klonen „PowerTools“ genannt)
Mageia, PCLinuxOS, OpenMandriva: Gleich wie Red Hat, außer Namensänderungen: (Mageia) „gstreamer1.0-devel“, „gstreamer-plugins-base1.0-devel“; (OpenMandriva) „libopenssl-devel“, „gstreamer-devel“, „libgst-plugins-base1.0-devel“. PCLinuxOS: wie Mageia, verwendet jedoch synaptic (oder apt) als Paketmanager.
openSUSE: (sudo zypper install) libopenssl-3-devel (ehemals libopenssl-devel) libplist-2_0-devel (ehemals libplist-devel) avahi-compat-mDNSResponder-devel gstreamer-devel gstreamer-plugins-base-devel (+ libX11- Entwicklung für Vollbild X11).
Arch Linux ( Auch als Paket in AUR verfügbar ): (sudo pacman -Syu) openssl libplist avahi gst-plugins-base.
FreeBSD: (sudo pkg install) libplist gstreamer1. Zur Bereitstellung der dns_sd-Bibliothek muss außerdem entweder avahi-libdns oder mDNSResponder installiert sein. OpenSSL ist bereits als Systembibliothek installiert.
Erstmalige RPM-Builder sollten zuerst die Pakete rpm-build und rpmdevtools installieren und dann den rpmbuild-Baum mit „ rpmdev-setuptree
“ erstellen. Laden Sie dann uxplay.spec herunter und kopieren Sie es nach ~/rpmbuild/SPECS
. Führen Sie in diesem Verzeichnis „ rpmdev-spectool -g -R uxplay.spec
“ aus, um die entsprechende Quelldatei uxplay-*.tar.gz
in ~/rpmbuild/SOURCES
herunterzuladen („rpmdev-spectool“ kann auch einfach „spectool“ heißen) ); Führen Sie dann „ rpmbuild -ba uxplay.spec
“ aus (Sie müssen alle in diesem Bericht erforderlichen Abhängigkeiten installieren). Dadurch sollte das uxplay RPM-Paket in einem Unterverzeichnis von ~/rpmbuild/RPMS
erstellt werden. ( uxplay.spec wurde auf Fedora 38, Rocky Linux 9.2, openSUSE Leap 15.5, Mageia 9, OpenMandriva, PCLinuxOS getestet; es kann leicht geändert werden, um Abhängigkeitslisten für andere RPM-basierte Distributionen einzuschließen.)
Als nächstes installieren Sie die benötigten GStreamer-Plugins mit sudo apt install gstreamer1.0-<plugin>
. Die erforderlichen Werte für <plugin>
sind:
Debian-basierte Distributionen teilen einige der Plugin-Pakete in kleinere Teile auf: Einige, die möglicherweise auch benötigt werden, umfassen „ gl “ für die OpenGL-Unterstützung (dies stellt den Videosink „-vs glimagesink“ bereit, der auf vielen Systemen (einschließlich Raspberry Pi) sehr nützlich sein kann ) und sollte immer verwendet werden, wenn die h264/h265-Dekodierung durch eine NVIDIA-GPU verwendet wird), „ gtk3 “ (das den Videosink „-vs gtksink“ bereitstellt) und „ x “ für X11-Unterstützung, obwohl dies möglicherweise der Fall ist bereits installiert; „ vaapi “ wird für die hardwarebeschleunigte h264-Videodekodierung durch Intel- oder AMD-Grafiken benötigt (jedoch nicht für die Verwendung mit NVIDIA unter Verwendung proprietärer Treiber). Wenn der Ton nicht funktioniert, müssen möglicherweise die Plugins „ alsa “, „ pulseaudio “ oder „ pipewire “ installiert werden, je nachdem, wie Ihr Audio eingerichtet ist.
In einigen Fällen ist die libav-Plugin-Funktion avdec_aac, die zum Dekodieren von AAC-Audio im Spiegelmodus erforderlich ist, aufgrund von Patentproblemen in der offiziellen Distribution nicht enthalten. Besorgen Sie sich diese aus den Community-Repositorys für diese Distributionen.
Red Hat oder Klone wie CentOS (jetzt weitergeführt als Rocky Linux oder Alma Linux): Installieren Sie gstreamer1-libav gstreamer1-plugins-bad-free (+ gstreamer1-vaapi für Intel/AMD-Grafik). Im aktuellen Fedora wurde gstreamer1-libav in gstreamer1-plugin-libav umbenannt. Um avdec_aac zu erhalten, installieren Sie Pakete von rpmfusion.org : (holen Sie sich ffmpeg-libs von rpmfusion; auf RHEL oder Klonen, aber nicht aktuellem Fedora, holen Sie sich auch gstreamer1-libav von dort).
Mageia, PCLinuxOS, OpenMandriva: Installieren Sie gstreamer1.0-libav gstreamer1.0-plugins-bad (+ gstreamer1.0-vaapi für Intel/AMD-Grafik). Um auf Mageia avdec_aac zu erhalten, installieren Sie ffmpeg aus dem „tainted“-Repository (das auch ein vollständigeres gstreamer1.0-plugins-bad bereitstellt).
openSUSE: Installieren Sie gstreamer-plugins-libav gstreamer-plugins-bad (+ gstreamer-plugins-vaapi für Intel/AMD-Grafik). Um avdec_aac zu erhalten, installieren Sie libav*-Pakete für openSUSE von Packman „Essentials“ ; Empfehlung: Nach dem Hinzufügen des Packman-Repositorys nutzen Sie die Option in der YaST-Softwareverwaltung, um alle Systempakete für Multimedia auf Packman umzustellen.
Arch Linux Installieren Sie gst-plugins-good gst-plugins-bad gst-libav (+ gstreamer-vaapi für Intel/AMD-Grafik).
FreeBSD: Installieren Sie gstreamer1-libav, gstreamer1-plugins, gstreamer1-plugins-* (* = core, good, bad, x, gtk, gl, vulkan, pulse, v4l2, ...), (+ gstreamer1-vaapi für Intel/ AMD-Grafik).
Seit UxPlay-1.64 kann UxPlay mit Optionen gestartet werden, die aus einer Konfigurationsdatei gelesen werden. Dabei handelt es sich um die erste gefundene Datei (1) mit einem Pfad, der durch die Umgebungsvariable $UXPLAYRC
angegeben ist, (2) ~/.uxplayrc
im Zuhause des Benutzers Verzeichnis („~“), (3) ~/.config/uxplayrc
. Das Format ist eine Option pro Zeile, wobei das anfängliche "-"
der Befehlszeilenoption weggelassen wird. Zeilen in der Konfigurationsdatei, die mit "#"
beginnen, werden als Kommentare behandelt und ignoriert.
Führen Sie uxplay in einem Terminalfenster aus . Auf einigen Systemen können Sie den Vollbildmodus mit der Option -fs
festlegen oder mit F11 oder (links gedrückt gehaltener Alt-Taste)+Eingabetaste in den Vollbildmodus wechseln oder ihn verlassen. Verwenden Sie Strg-C (oder schließen Sie das Fenster), um es zu beenden, wenn Sie fertig sind. Wenn der UxPlay-Server im Dropdown-Feld „Bildschirmspiegelung“ des iOS-Clients nicht angezeigt wird, überprüfen Sie, ob Ihr DNS-SD-Server (normalerweise avahi-daemon) ausgeführt wird: Führen Sie dies in einem Terminalfenster mit systemctl status avahi-daemon
aus. Wenn dies zeigt, dass der avahi-daemon nicht läuft, steuern Sie ihn mit sudo systemctl [start,stop,enable,disable] avahi-daemon
(auf Nicht-Systemd-Systemen wie *BSD verwenden Sie sudo service avahi-daemon [status, start, stop, restart, ...]
). Wenn UxPlay angezeigt wird, der Client jedoch bei Auswahl keine Verbindung herstellen kann, gibt es möglicherweise eine Firewall auf dem Server, die verhindert, dass UxPlay Client-Verbindungsanfragen empfängt, es sei denn, einige Netzwerkports sind geöffnet: Wenn eine Firewall aktiv ist, öffnen Sie auch UDP-Port 5353 (für mDNS-Anfragen) wird von Avahi benötigt . Hilfe bei diesem oder anderen Problemen finden Sie weiter unten unter „Fehlerbehebung“.
Im Gegensatz zu einem Apple TV erfordert der UxPlay-Server standardmäßig nicht, dass Clients sich zunächst über einen vom Server angezeigten PIN-Code mit ihm „koppeln“ (danach „vertraut“ der Client dem Server und muss dies nicht wiederholen). Seit v1.67 bietet Uxplay eine solche „Pin-Authentifizierung“ als Option an: Einzelheiten finden Sie unter „ -pin
“ und „ -reg
“ in der Verwendung, wenn Sie sie verwenden möchten. Einige Clients mit MDM (Mobile Device Management, häufig auf arbeitgebereigenen Geräten vorhanden) müssen eine PIN-Authentifizierung verwenden: UxPlay bietet diese auch dann, wenn es ohne PIN-Option ausgeführt wird.
Standardmäßig ist UxPlay an seinen aktuellen Client gebunden, bis dieser Client die Verbindung trennt. Seit UxPlay-1.58 ändert die Option -nohold
dieses Verhalten, sodass, wenn ein neuer Client eine Verbindung anfordert, der aktuelle Client entfernt und übernimmt. UxPlay 1.66 führt einen Mechanismus ein ( -restrict
, -allow <id>
, -block <id>
), um mithilfe ihrer „Geräte-ID“ (die bei Apple-Geräten unveränderlich zu sein scheint) zu steuern, welche Clients eine Verbindung herstellen dürfen.
Im Mirror-Modus hat GStreamer die Wahl zwischen zwei Methoden zum Abspielen von Videos mit dem dazugehörigen Audio: Vor UxPlay-1.64 wurden die Video- und Audiostreams so schnell wie möglich nach ihrer Ankunft abgespielt (die GStreamer-Methode „ sync=false “). , wobei eine interne GStreamer-Uhr verwendet wird, um zu versuchen, sie synchron zu halten. Ab UxPlay-1.64 ist die andere Methode (GStreamers „ sync=true “-Modus), die Zeitstempel in den vom Client gesendeten Audio- und Videostreams verwendet, die neue Standardeinstellung . Auf UxPlay-Hosts mit geringer Dekodierungsleistung (z. B. Raspberry Pi Zero W oder 3 B+-Modelle) werden dadurch Videobilder gelöscht, die nicht rechtzeitig für die Wiedergabe mit dem Audio dekodiert werden können, wodurch das Video zwar ruckelt, aber dennoch synchronisiert ist.
Die ältere Methode, die keine späten Videobilder verwirft, funktionierte gut auf leistungsstärkeren Systemen und ist immer noch mit der UxPlay-Option „ -vsync no
“ verfügbar; Diese Methode ist an „Live-Streaming“ angepasst und eignet sich möglicherweise besser, wenn Sie UxPlay beispielsweise als zweiten Monitor für einen Mac-Computer verwenden, während die neue standardmäßige zeitstempelbasierte Methode am besten zum Ansehen eines Videos geeignet ist, um Lippenbewegungen und Stimmen beizubehalten synchronisiert. (Ohne die Verwendung von Zeitstempeln bleibt das Video irgendwann hinter dem Audio zurück, wenn es nicht schnell genug dekodiert werden kann: Die hardwarebeschleunigte Videodekodierung hat dazu beigetragen, dies zuvor zu verhindern, als keine Zeitstempel verwendet wurden.)
-async
Zeitstempel- basierende Option. (Ein Beispiel könnte sein, wenn Sie den Liedtexten von Apple Music auf dem Client folgen und gleichzeitig hervorragenden Sound auf dem UxPlay-Server hören möchten.) Dadurch wird das Video auf dem Client verzögert, um mit dem Audio auf dem Server übereinzustimmen, was zu einer leichten Verzögerung führt, bevor eine auf dem Client initiierte Pause oder ein Titelwechsel auf das vom Server abgespielte Audio wirksam wird. Die AirPlay-Lautstärkeregelung dämpft die Lautstärke (Verstärkung) um bis zu -30 dB: Der Dezibelbereich -30:0 kann mithilfe der Option -db
("-db Low " oder "-db) von Low :0 oder Low : High neu skaliert werden Low : High "), Low muss negativ sein. Die Neuskalierung erfolgt linear in Dezibel. Beachten Sie, dass das Audioformat von GStreamer jede Audioverstärkung über +20 dB „beschneidet“. Halten Sie daher „Hoch “ unter diesem Wert. Die Option -taper
bietet ein „konisches“ AirPlay-Lautstärkeregelungsprofil, das einige Benutzer möglicherweise bevorzugen.
Die Optionen -vsync und -async ermöglichen zur Feinabstimmung auch eine optionale positive (oder negative) Audioverzögerungsanpassung in Millisekunden : -vsync 20.5
verzögert Audio im Verhältnis zu Video um 0,0205 Sekunden; ein negativer Wert rückt es vor.)
Sie werden möglicherweise feststellen, dass Videos durch die Einstellung -fps 60 verbessert werden, die die Wiedergabe einiger Videos mit 60 Bildern pro Sekunde ermöglicht. (Sie können sehen, welche Framerate tatsächlich gestreamt wird, indem Sie -vs fpsdisplaysink und/oder -FPSdata verwenden.) Wenn Sie dies verwenden, sollten Sie die standardmäßige zeitstempelbasierte Synchronisierungsoption -vsync
verwenden.
Seit UxPlay-1.54 können Sie das zugehörige „Cover Art“ von Quellen wie Apple Music im Audio-Only-Modus (ALAC) anzeigen: Führen Sie „ uxplay -ca <name> &
“ im Hintergrund aus und führen Sie dann einen Bildbetrachter mit automatischem Neuladen aus Feature: Ein Beispiel ist „feh“: Führen Sie „ feh -R 1 <name>
“ im Vordergrund aus; Beenden Sie feh und dann Uxplay mit „ ctrl-C fg ctrl-C
“.
Standardmäßig verwendet GStreamer einen Algorithmus, um nach dem besten zu verwendenden „Videosink“ (GStreamers Bezeichnung für einen Grafiktreiber zum Anzeigen von Bildern) zu suchen. Sie können dies mit der uxplay-Option -vs <videosink>
überschreiben. Welche Videosinks verfügbar sind, hängt von Ihrem Betriebssystem und Ihrer Grafikhardware ab: Verwenden Sie „ gst-inspect-1.0 | grep sink | grep -e video -e Video -e image
“, um zu sehen, was verfügbar ist. Einige Möglichkeiten unter Linux/*BSD sind:
glimagesink (OpenGL), waylandsink
xvimagesink , ximagesink (X11)
kmssink , fbdevsink (Konsolengrafiken ohne X11)
vaapisink (für hardwarebeschleunigte Intel/AMD-Grafik); Verwenden Sie für NVIDIA-Hardwaregrafiken (mit CUDA) glimagesink kombiniert mit „ -vd nvh264dec
“ (oder „nvh264sldec“, eine neue Variante, die in GStreamer-1.24 zu „nvh264dec“ wird).
Wenn der Server „headless“ ist (kein angeschlossener Monitor, rendert nur Audio), verwenden Sie -vs 0
.
GStreamer sucht auch nach dem besten „Audiosink“; Überschreiben Sie die Auswahl mit -as <audiosink>
. Zu den Optionen unter Linux gehören Pulsesink, Alsasink, Pipewiresink und Oss4sink. Sehen Sie, was mit gst-inspect-1.0 | grep sink | grep -e audio -e Audio
verfügbar ist gst-inspect-1.0 | grep sink | grep -e audio -e Audio
.
Ein häufiges Problem besteht darin, dass GStreamer versucht, falsch konfigurierte oder fehlende beschleunigte Hardware-H264-Videodekodierung (z. B. VAAPI) zu verwenden. Versuchen Sie „ uxplay -avdec
“, um die Software-Videodekodierung zu erzwingen. Wenn dies funktioniert, können Sie versuchen, bei Bedarf die beschleunigte Hardware-Videodekodierung zu reparieren, oder einfach das GStreamer-Vapi-Plugin deinstallieren.
Weitere Laufzeitoptionen finden Sie unter Verwendung.
Für Framebuffer-Videos (für Raspberry Pi OS „Lite“ und andere Nicht-X11-Distributionen) verwenden Sie den KMS-Videosink „-vs kmssink“ (der DirectFB-Framebuffer-Videosink „dfbvideosink“ ist auf dem Pi defekt und führt zu Segfaults). In diesem Fall sollten Sie explizit die Option „-vs kmssink“ verwenden, da autovideosink sonst nicht den richtigen Videosink findet.
Raspberry Pi 5 bietet keine Hardware-H264-Dekodierung (und benötigt diese auch nicht).
Pi Zero 2 W, 3 Model B+ und 4 Model B sollten Hardware-H264-Dekodierung durch die Broadcom-GPU verwenden, erfordern aber ein nicht zum Mainstream gehörendes Kernelmodul bcm2835_codec, das im Raspberry Pi-Kernelbaum verwaltet wird; Zu den Distributionen, die es bekanntermaßen bereitstellen, gehören Raspberry Pi OS, Ubuntu und Manjaro-RPi4. Verwenden Sie die Software-Dekodierung (Option -avdec), wenn dieses Modul nicht verfügbar ist.
Uxplay verwendet das Video4Linux2 (v4l2)-Plugin von GStreamer-1.22 und höher, um auf die GPU zuzugreifen, wenn Hardware-H264-Dekodierung verwendet wird. Dies sollte automatisch geschehen. Die Option -v4l2 kann verwendet werden, aber normalerweise ist es am besten, GStreamer die beste Video-Pipeline einfach selbst finden zu lassen.
Bei älteren Distributionen (GStreamer < 1.22) benötigt das v4l2-Plugin einen Patch: siehe UxPlay-Wiki. Das ältere Raspberry Pi-Betriebssystem (Bullseye) verfügt über einen teilweise gepatchten GStreamer-1.18.4, der die uxplay-Option -bt709 benötigt (und nicht -v4l2 verwenden); In diesem Fall ist es immer noch besser, den vollständigen Patch aus dem UxPlay-Wiki anzuwenden.
Für das „doppelte Legacy“-Raspberry-Pi-Betriebssystem (Buster) gibt es keinen Patch für GStreamer-1.14. Erstellen Sie stattdessen zunächst mithilfe dieser Anweisungen einen vollständig neueren GStreamer-1.18.6 aus dem Quellcode, bevor Sie UxPlay erstellen.
Raspberry Pi 3 Model B+ mit einem 32-Bit-Betriebssystem kann auch mit dem GStreamer OMX-Plugin auf die GPU zugreifen (verwenden Sie die Option „ -vd omxh264dec
“), dies wird jedoch durch die Pi 4 Model B-Firmware unterbrochen. Die OMX-Unterstützung wurde vom Raspberry Pi OS (Bullseye) entfernt, ist aber in Buster vorhanden.
H265 (4K) -Video wird mit Hardware-Dekodierung durch die Broadcom-GPU auf Raspberry Pi 5-Modellen sowie auf Raspberry Pi 4 Modell B unterstützt . Während GStreamer diese Hardware-Dekodierung zu nutzen scheint, bietet UxPlay eine zufriedenstellende Rendergeschwindigkeit von 4K-Videos Diese Raspberry Pi-Modelle wurden noch nicht erreicht. Für die Aktivierung der h265-Unterstützung ist die Option „-h265“ erforderlich. In diesem Modus wird eine kabelgebundene Ethernet-Verbindung bevorzugt (und kann vom Client verlangt werden).
Selbst bei GPU-Videodekodierung können einige Frames von den Modellen mit geringerer Leistung ausgelassen werden, um Audio und Video mithilfe von Zeitstempeln synchron zu halten. In älteren Raspberry Pi-Betriebssystemen (Bullseye) können Sie mit den „Leistungsoptionen“ von raspi-config angeben, wie viel Speicher der GPU zugewiesen werden soll. In Bookworm scheint diese Einstellung jedoch nicht vorhanden zu sein (sie kann jedoch durch Hinzufügen einer Zeile immer noch auf z. B. 128 MB eingestellt werden). „gpu_mem=128“ in /boot/config.txt). Ein Pi Zero 2 W (mit 512 MB Speicher) funktionierte gut, als er in 32 Bit Bullseye oder Bookworm Lite mit 128 MB für die GPU getestet wurde (Standard scheint 64 MB zu sein).
Die grundlegenden uxplay-Optionen für R Pi sind uxplay [-vs <videosink>]
. Die Wahl <videosink>
= glimagesink
ist manchmal nützlich. Verwenden Sie mit dem Wayland-Video-Compositor <videosink>
= waylandsink
. Verwenden Sie bei Framebuffer-Video <videosink>
= kmssink
.
ssh user@remote_host
export DISPLAY=:0
nohup uxplay [options] > FILE &
Ton und Video werden auf dem Remote-Host abgespielt. „nohup“ lässt uxplay weiterlaufen, wenn die SSH-Sitzung geschlossen ist. Die Terminalausgabe wird in der Datei gespeichert (kann /dev/null sein, um sie zu verwerfen).
Hinweis: Eine native Airplay -Serverfunktion ist in MacOS 12 Monterey enthalten, ist jedoch auf die jüngste Hardware beschränkt. UxPlay kann auf älteren MacOS -Systemen ausgeführt werden, die Monterey nicht ausführen können oder Monterey, aber nicht Airplay ausführen können.
Diese Anweisungen für MacOS gehen davon aus, dass die Xcode-Befehlszeilenentwickler-Tools installiert sind (wenn Xcode installiert ist, öffnen Sie den Terminal, geben Sie "sudo xcode-select--installieren" ein und akzeptieren Sie die Bedingungen).
Es wird auch angenommen, dass CMake> = 3.13 installiert ist: Dies kann mit Paketmanagern Macports ( sudo port install cmake
), Homebrew ( brew install cmake
) oder durch einen Download von https://cmake.org/download/ erfolgen. Installieren Sie auch git
, wenn Sie es verwenden, um UXPlay zu holen.
Als nächstes installieren Sie Libplist und OpenSSL-3.x. Beachten Sie, dass statische Versionen dieser Bibliotheken in den MacOS -Builds verwendet werden, sodass sie nach dem Erstellen von UXPlay, wenn Sie möchten, deinstalliert werden.
Wenn Sie Homebrew: brew install libplist openssl@3
verwenden
Wenn Sie MacPorts verwenden: sudo port install libplist-devel openssl3
Ansonsten bauen Sie Libplist und OpenSSL aus Quelle: Siehe Anweisungen gegen Ende dieses Readme; Es müssen Entwicklungstools (Autoconf, Automake, Libtool usw. ) installiert werden.
Als nächstes erhalten Sie die neueste MacOS-Version von Gstreamer-1.0.
Verwenden von "offiziellen" GStreamer (empfohlen für MacPorts- und Homebrew -Benutzer) : Installieren Sie die GStreamer -Version für macOS von https://gstreamer.freedesktop.org/download/. (Diese Version enthält eine eigene PKG-Konfiguration, sodass Sie keine installieren müssen.) Installieren Sie sowohl die GStreamer-1.0- als auch die Gstreamer-1.0-Devel-Pakete. Nach dem Herunterladen klicken Sie auf sie, um sie zu installieren (sie installieren auf /library/frameworks/gstreamer.framework). Homebrew- oder MacPorts -Benutzer sollten den von ihrem Paketmanager gelieferten Gstreamer nicht installieren (oder deinstallieren), wenn sie die "offizielle" Version verwenden.
Mit Homebrews Gstreamer : PKG-Config wird benötigt: ("Brew Installation PKG-Config Gstreamer"). Dies führt dazu, dass eine große Anzahl zusätzlicher Pakete von Homebrew als Abhängigkeiten installiert werden. Die Homebrew Gstreamer -Installation wurde kürzlich in eine einzelne "Formel" namens gstreamer
überarbeitet, die jetzt funktioniert, ohne gst_plugin_path in der Umgebung festzulegen. Homebrew installiert gstreamer zu (HOMEBREW)/lib/gstreamer-1.0
wobei (HOMEBREW)/*
ist /opt/homebrew/*
auf Apple Silicon Macs und /usr/local/*
auf Intel Macs; Setzen Sie dort keine zusätzlichen Nicht-Homebrew-Plugins (Sie bauen Sie selbst) ein und setzen Sie stattdessen GST_PLUGIN_PATH so, dass sie auf ihren Standort verweisen (Homebrew liefert keinen vollständigen Gstreamer, aber scheint alles zu haben, was für UXPlay benötigt wird).
Verwenden von Gstreamer, die von MacPorts installiert wurden : Dies wird nicht empfohlen, da derzeit der Macports Gstreamer alt ist (v1.16.2), nicht gehörte und für die Verwendung von X11 gebaut wurde:
(Wenn Sie die Macports Gstreamer-1.16.2 wirklich verwenden möchten, installieren Sie PKGConf ("Sudo Port Installation PKGConf"), dann "sudo port installieren gstreamer1-gst-plugins-base gstreamer1-gst-plugins-good gstream1-gst-plugins -Bad gstreamer1-GST-libav ". Für die X11-Unterstützung auf macOS uxplay mit einer speziellen CMake-Option -DUSE_X11=ON
Kompilieren und führen Sie es von einem Xquartz -Terminal mit -VS XimageSink aus uxplay -s 800x600
Nach dem Installieren von Gstreamer erstellen und installieren Sie UXPlay: Öffnen Sie ein Terminal und wechseln Sie in das UxPlay-Source-Verzeichnis ("uxplay-Master" für Zipfile-Downloads, "uxplay" für "Git Clone" Downloads) und bauen/installieren Sie sie mit "cmake.; sudo make install "(wie für linux).
Ausführen von uxplay beim Überprüfen auf Gstreamer -Warnungen (tun Sie dies mit "exportieren gst_debug = 2" vor runnng uxplay) enthüllt, dass mit dem Standard (da uxPlay 1.64) die Verwendung von Zeitstempeln für die Video -Synchronisierung fallen gelassen wird, werden viele Videorahmen fallen (nur auf Macos). Vielleicht aufgrund eines weiteren Fehlers (über Videometa), der in den Gstreamer -Warnungen auftaucht. Empfehlung: Verwenden Sie das neue UXPLAY "No Timestamp" -Option " -vsync no
" (Sie können in der UXPlayRC -Konfigurationsdatei eine Zeile "vsync no" hinzufügen).
Auf macOS mit dieser Installation von Gstreamer scheinen die einzigen verfügbaren VideoSinks zu sehen, wie es sich um einen Glimagesink (Standardauswahl von AutoVideosink) und Osxvideosink erstellt. Der Fenstertitel zeigt den Airplay-Servernamen nicht an, das Fenster ist jedoch für Apps mit Bildschirmfreigabe (z. B. Zoom) sichtbar. Der einzige verfügbare Audiosink scheint Osxaudiosink zu sein.
Die Option -nc wird immer verwendet, unabhängig davon, ob sie ausgewählt ist oder nicht. Dies ist eine Problemumgehung für ein Problem mit Gstreamer -Videosinks auf macOS: Wenn die Gstreamer -Pipeline zerstört wird, während das Spiegelfenster noch geöffnet ist, tritt ein Segfault auf.
Im Falle von Glimagesink beeinflussen die Auflösungseinstellungen "-s WXH" nicht die (kleine) anfängliche OpenGL-Spiegelfenstergröße, das Fenster kann jedoch mit der Maus oder dem Trackpad erweitert werden. Im Gegensatz dazu ist ein Fenster mit "-VS OSXvideosink" anfangs groß, hat jedoch das falsche Seitenverhältnis (gestrecktes Bild). In diesem Fall ändert sich das Seitenverhältnis, wenn die Fensterbreite durch Ziehen der Seite geändert wird. Die Option -vs "osxvideosink force-aspect-ratio=true"
kann verwendet werden, damit das Fenster beim ersten Öffnen das richtige Seitenverhältnis aufweist.
Laden Sie Bonjour SDK für Windows v3.0 herunter und installieren Sie sie. Sie können die SDK ohne Registrierung bei Softpedia.com herunterladen oder von der offiziellen Apple -Website https://developer.apple.com/download abrufen (Apple macht Sie als Entwickler, um von ihrer Website auf darauf zuzugreifen). Dies sollte den Bonjour SDK als C:Program FilesBonjour SDK
installieren.
(Dies gilt für 64-Bit-Fenster; ein Build für 32-Bit-Fenster sollte möglich sein, wird jedoch nicht getestet.) Die Unix-ähnliche MSYS2-Build-Umgebung wird verwendet: Laden Sie MSYS2 von der offiziellen Website https: // www herunter und installieren Sie sie .msys2.org/. Akzeptieren Sie den Standard -Installationsort C:mysys64
.
MSYS2 -Pakete werden mit einer Variante des von Arch Linux verwendeten "Pacman" -Paketmanagers installiert. Öffnen Sie im Windows -Startmenü ein "MSYS2 MINGW64" -Anminal aus der Registerkarte MSYS2 und aktualisieren Sie die neue MSYS2 -Installation mit "Pacman -Syu". Installieren Sie dann den Mingw-64- Compiler und CMake
pacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc
Der Compiler mit allen erforderlichen Abhängigkeiten wird im Verzeichnis MSYS64 mit Standardpfad C:/msys64/mingw64
installiert. Hier erstellen wir einfach UXPlay aus der Befehlszeile in der MSYS2 -Umgebung (in dieser Verwendung " ninja
" anstelle von " make
" für das Build -System).
Laden Sie das neueste UXPLY von GitHub herunter (um git
zu verwenden, installieren Sie es mit pacman -S git
, dann " git clone https://github.com/FDH2/UxPlay
") und installieren Sie dann UXPLAY -Abhängigkeiten (OpenSSL ist bereits mit MSYS2 installiert):
pacman -S mingw-w64-x86_64-libplist mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base
Wenn Sie ein anderes Windows-Build-System ausprobieren, sind MSVC-Versionen von Gstreamer für Windows über den offiziellen Gstreamer-Standort erhältlich, aber nur der 64-Bit-Aufbau von MSYS2 wurde getestet.
CD zum Uxplay -Quellverzeichnis, dann " mkdir build
" und " cd build
". Der Erstellungsprozess geht davon aus, dass der Bonjour SDK unter C:Program FilesBonjour SDK
installiert ist. Wenn es irgendwo anders ist, legen Sie die Umweltvariable bonjour_sdk_home so fest, dass sie auf seinen Standort verweist. Dann bauen Sie uxplay mit
cmake ..
ninja
Unter der Annahme, dass in keinem dieser Fehler das UXPLAY -Executable uxPlay.exe im aktuellen ("Build") Verzeichnis erstellt hat. Die in den anderen Builds angebotenen Funktionen "sudo make install" und "sudo make deinstallieren" sind unter Windows nicht verfügbar. Stattdessen hat die MSYS2 -Umgebung /mingw64/...
verfügbar, und Sie können die ausführbare Datei uxplay.exe in C:/msys64/mingw64/bin
(plus Manpage und Dokumentation in C:/msys64/mingw64/share/...
) mit
cmake --install . --prefix /mingw64
Um die Manpage anzusehen, müssen Sie den Hersteller von " pacman -S man
" installieren.
pacman -S mingw-w64-x86_64-gst-<plugin>
uxplay.exe <plugin>
Andere mögliche MSYS2 -GStreamer -Plugin -Pakete, die Sie möglicherweise verwenden, sind in MSYS2 -Paketen aufgeführt.
Sie müssen auch der uxplay -ausführbaren uxplay.exe die Berechtigung erteilen, um über die Windows -Firewall auf Daten zuzugreifen. Möglicherweise werden Ihnen automatisch die Wahl angeboten, dies zu tun, wenn Sie UxPlay zum ersten Mal ausführen, oder Sie müssen dies möglicherweise mit Windows-Einstellungen-> Aktualisieren und Sicherheit-> Windows Security-> Firewall & Network Protection-> eine App über Firewall zulassen . Wenn Ihr Virusschutz uxPlay.exe als "misstrauisch" (jedoch ohne echte Malware -Signatur) fällt, müssen Sie ihm möglicherweise eine Ausnahme abgeben.
Testen Sie nun, indem Sie " uxplay
" ausführen (in einem MSYS2 -Terminalfenster). Wenn Sie den AudioSink angeben müssen, gibt es zwei Hauptoptionen unter Windows: Das ältere DirectSound -Plugin " -as directsoundsink
" und die modernere Windows -Audiositzungs -API (WASAPI) Plugin " -as wasapisink
", die zusätzliche Optionen wie z.
uxplay -as 'wasapisink device="<guid>"'
wobei <guid>
ein verfügbares Audio-Gerät <guid>
seinem GUID angibt, das mit " gst-device-monitor-1.0 Audio
{0.0.0.00000000}.{98e35b2b-8eba-412e-b840-fd2c2492cf44}
befindet {0.0.0.00000000}.{98e35b2b-8eba-412e-b840-fd2c2492cf44}
. Wenn " device
" nicht angegeben ist, wird das Standard -Audiogerät verwendet.
Wenn Sie die VideoSink mit der Option -vs <videosink>
angeben möchten, sind einige Auswahlmöglichkeiten für <videosink>
d3d11videosink
, d3dvideosink
, glimagesink
, gtksink
.
-vs "d3d11videosink fullscreen-toggle-mode=property fullscreen=true"
befinden oder die Möglichkeit erhalten, mit dem ALT-ENTER-Taste in den Vollbildmodus einzuschalten und aus dem Vollbildmodus auszuschalten. Kombination mit Option -vs "d3d11videosink fullscreen-toggle-mode=alt-enter"
. Für den Einfachheit halber werden diese Optionen hinzugefügt, wenn nur -vs d3d11videosink
mit oder ohne die Vollbildoption "-fs" verwendet wird. (Windows -Benutzer möchten möglicherweise " vs d3d11videosink
" (no initial " -
") zur Datei der Uxplay -Startoptionen hinzufügen; siehe "Man uxplay" oder "uxplay -h".) Die ausführbare uxplay.exe kann auch ohne die MSYS2 -Umgebung im Windows -Terminal mit C:msys64mingw64binuxplay
ausgeführt werden.
Optionen:
-
" Zeichen) in der Uxplay -Startdatei (entweder durch Umgebungsvariable $UXPLAYRC
oder ~/.uxplayrc
oder ~/.config/uxplayrc
); Zeilen beginnen mit " #
" als Kommentare behandelt und ignoriert. Befehlszeilenoptionen ersetzen Optionen in der Startdatei.-n server_name (Standard: uxPlay); server_name@ hostname ist der Name, der angezeigt wird und AirPlay -Dienste für Ihr iPad, iPhone usw. anbietet, wobei Hostname der Name des Servers ist, das uxplay ausgeführt wird. Dies ist jetzt auch der Name, der über dem Fenster Spiegelanzeige (X11) gezeigt wird.
-nh nicht "@ hostname " am Ende des AirPlay -Servernamens anhängen.
-H265 Aktivieren Sie "screenMulticodec" Support (AirPlay "Features" Bit 42) zum Akzeptieren von H265 (4K/HEVC) -Video zusätzlich zu H264-Video (1080p) im Screen-Mirror-Modus. Wenn diese Option verwendet wird, werden zwei "Video -Pipelines" (einer für H264, einer für H265) erstellt. Wenn Gstreamer -Plugins in der Pipeline für H264 oder H265 spezifisch sind, wird die richtige Version in jeder Pipeline verwendet. Eine Kabel-Client-Server-Ethernet-Verbindung wird für 4K-Videos gegenüber WLAN bevorzugt und wird möglicherweise vom Client benötigt. Nur aktuelle Apple-Geräte (M1/M2-Macs oder iPads und einige iPhones) können H265-Videos senden, wenn eine Auflösung "-S WXH" mit H> 1080 angefordert wird. Die Option "-h265" ändert die Standardauflösung ("-s" -Option) von 1920x1080 bis 3840x2160 und verlässt die Standard-Maximum-Framerate ("-fps" -Option) bei 30 fps.
-pin [nnnn] : (Da v1.67) verwenden Der Bildschirm zeigt eine Anmeldeaufforderung an, damit dies eingegeben wird. Wenn "-pin" von selbst verwendet wird, wird für jede Authentifizierung ein neuer zufälliger PIN-Code ausgewählt. Wenn "-pin nnnn" (z. B. "-pin 3939") verwendet wird, wird ein unveränderlicher fester Code festgelegt. Die Authentifizierung fügt den Server der Liste der "vertrauenswürdigen Server" des Clients hinzu, und der Client muss nicht wieder authentifiziert, sofern die öffentlichen Client- und Server -Tasten unverändert bleiben. (Seit v1.68 wird standardmäßig der öffentliche Server -Taste aus der MAC -Adresse generiert, die mit der Option -m geändert werden kann; siehe die Option -ke für eine alternative Methode der Schlüsselgenerierung). (Fügen Sie eine Zeile "PIN" in die UXPLAY -Startdatei hinzu, wenn Sie möchten, dass der UXPLAY -Server das PIN -Authentifizierungsprotokoll verwendet.)
-reg [ Dateiname ] : (Da V1.68). Wenn "-pin" verwendet wird, behält diese Option ein Register mit pinauthentifizierten "vertrauenswürdigen Clients" in $ home/.uxPlay.register (oder optional in Dateiname ) bei. Ohne diese Option werden Kunden, die Pin-Authentifizierung überspringen, vertrauenswürdig und nicht überprüft. Diese Option kann nützlich sein, wenn UXPLY in einer öffentlichen Umgebung verwendet wird, um Kundendetails aufzuzeichnen. Das Register ist Text, eine Zeile pro Client mit öffentlichem Schlüssel (Basis-64-Format), Geräte-ID und Gerätename. Kommentieren (mit "#") oder Löschen einer Zeile Deregistern den entsprechenden Client (siehe Optionen -Einschränkung, -Block, -Blocken Sie mehr Möglichkeiten, um den Kundenzugriff zu steuern). (Fügen Sie in der Startdatei eine Zeile "Reg" hinzu, wenn Sie diese Funktion verwenden möchten.)
-VSYNC [X] (im Spiegelmodus :) Diese Option ( jetzt der Standard ) verwendet Zeitstempel, um Audio mit Video auf dem Server zu synchronisieren, mit einer optionalen Audioverzögerung in (Dezimal-) Millisekunden ( x = "20,5" bedeutet 0,0205 Sekunden Verzögerung: Es sind positive oder negative Verzögerungen von weniger als einer Sekunde zulässig.) Es ist bei Systemen mit geringer Leistung wie Raspberry Pi ohne Hardware-Video-Dekodierung erforderlich.
-VSYNC NEIN (im Mirror-Modus :) Dies schaltet die audio-video-Synchronisation von Zeitstempel aus und restauriert das Standardverhalten vor uxPlay-1.64. Standard -Desktop -Systeme scheinen ohne Verwendung von Zeitstempeln gut zu funktionieren: Dieser Modus ist für das "Live -Streaming" geeignet, z. Damit werden keine Videobrahmen fallen gelassen.
-Async [x] (im Audio-Nur-Audio-Modus (Nur-Audio). Diese Option verwendet Zeitstempel, um Audio auf dem Server mit Video auf dem Client zu synchronisieren, mit einer optionalen Audioverzögerung in (dezimaler) Millisekunden ( x = "20,5" bedeutet 0,0205. Sekundenverzögerung: Positive oder negative Verzögerungen weniger als eine Sekunde sind zulässig.) Da der Client eine Videoverzögerung hinzufügt, um die Latenz zu berücksichtigen Audioänderungen wie eine Pause oder ein Track-Change werden nicht sofort wirksam. Dies könnte im Prinzip durch die Verwendung der Einstellung -al
-Audio -Latenz gemindert werden, um die Latenz (Standard 0,25 Sekunden) zu ändern, die der Server an den Client meldet, das jedoch gegenwärtig ist, scheint dies jedoch keinen Effekt zu haben .
-async Nr . Dies ist immer noch das Standardverhalten im Audio-Modus, aber diese Option kann als -async
nützlich sein, um eine in einer "UXPlayRC" -Konfigurationsdatei festgelegte Option zu deaktivieren.
-db niedrig [: hohe ] Umrötet die AirPlay -Volumenkontrolle (Verstärkung) von -30 dB: 0 dB bis niedrig : 0 dB oder niedrig : Hoch . Die untere Grenze muss negativ sein (Dämpfung); Die Obergrenze hoch kann eines der beiden Vorzeichen sein. (Gstreamer beschränkt die Volumen-Augmentation um das Hoch , so dass es +20 dB nicht überschreiten kann). Die Umschließung ist "flach", so dass für -dB -50: 10 eine Änderung der Airplay -Dämpfung um -7 dB in eine –7 x (60/30) = -14 dB Dämpfung und das maximale Volumen (Airplay 0db) übersetzt wird ist eine 10 -dB -Augmentation, und AirPlay -30 dB wird -50 dB werden. Beachten Sie, dass der minimale Airplay-Wert (-30 dB genau) in "stumm" übersetzt wird.
-Taper stellt ein "sich verjüngter" Airplay-Lautstärkebrückungs-Profil (entspricht dem mit dem Namen "Dasl-Tapering" in Shairport-Sync): Jedes Mal, wenn die Länge des Volumenschiebers (oder die Anzahl der Schritte über den Stummschalter, wobei 16 Schritte = voll sind Volumen) wird um 50%reduziert, das wahrgenommene Volumen ist halbiert (eine Dämpfung von 10 dB). (Dies wird bei niedrigen Volumina modifiziert, um das "unermächtige" Volumen zu verwenden, wenn es lauter ist.)
-S WXH EG -S 1920x1080 (= "1080p"), die Standardbreite und Höhenauflösungen in Pixel für H264 -Video. (Die Standardeinstellung wird zu 3840x2160 (= "4K") Wenn die Option -h265 verwendet wird.) Dies ist nur eine Anfrage an den AirPlay -Client und wird möglicherweise nicht die endgültige Lösung sein, die Sie erhalten. W und H sind ganze Zahlen mit vier Ziffern oder weniger. Beachten Sie, dass die Höhe der Höhe der Höhe die vom Client verwendete Steuerung des Streaming -Formats ist. Die Breite wird dynamisch an die Form des Bildes angepasst (Porträt- oder Landschaftsformat, je nachdem, wie ein iPad gehalten wird).
-S wxh@r wie oben, informiert aber auch den AirPlay -Kunden über die Bildschirm -Aktualisierungsrate des Displays. Standard ist r = 60 (60 Hz); R muss eine ganze Zahl von weniger als 256 sein.
-O schaltet eine "überschaltete" Option für das Anzeigefenster ein. Dies reduziert die Bildauflösung, indem einige der von Option -S wxh (oder deren Standardwerte 1920x1080) angeforderten Pixel verwendet werden angezeigt von Gstreamer). Empfehlung: Verwenden Sie diese Option nicht, es sei denn, es gibt einen besonderen Grund, sie zu verwenden.
-Fs verwendet den Vollbildmodus, funktioniert jedoch nur mit X11, Wayland, VAAPI und D3D11 (Windows).
-P ermöglicht es Ihnen, die von UxPlay verwendeten Netzwerkports auszuwählen (diese müssen geöffnet werden, wenn sich der Server hinter einer Firewall befindet). -P setzt "Legacy" -Ports TCP 7100, 7000, 7001, UDP 6000, 6001, 7011. -Pn (z. -P -P 35000) Legt TCP- und UDP -Ports N, N+1, N+2 fest. -P N1, N2, N3 (von Kommas getrennte Werte) legt jeden Port separat fest; -P N1, N2 setzt die Ports N1, N2, N2+1. -P TCP N oder -P UDP N legt nur die TCP- oder UDP -Ports fest. Die Ports müssen im Bereich sein [1024-65535].
Wenn die Option -P nicht verwendet wird, werden die Ports dynamisch (zufällig) ausgewählt, was nicht funktioniert, wenn eine Firewall ausgeführt wird.
-AVDEC zwingt die Verwendung von Software H264 Decodierung mit Gstreamer -Element AVDEC_H264 (Libav H264 Decoder). Diese Option sollte verhindern, dass AutoVideosink ein mit Hardware beschleunigter VideoSink-Plugin wie VAAPIINK ausgewählt wird.
-VP Parser wählt das H264 -Parser -Element der Gstreamer -Pipeline aus. Standard ist H264Parse. Mit Anführungszeichen "..." können Optionen hinzugefügt werden.
-VD Decoder wählt das H264 -Decoderelement der Gstreamer -Pipeline anstelle des Standardwerts "Decodebin" aus, der es für Sie wählt. Die Software -Dekodierung erfolgt von AVDEC_H264; Verschiedene Hardware -Decoder umfassen: VAAPIH264DEC, NVDEC, NVH264DEC, V4L2H264DEC (diese erfordern, dass die entsprechende Hardware verfügbar ist). Durch die Verwendung von Zitaten "..." können einige Parameter in den Decodernamen enthalten sein.
-VC -Konverter wählt das Videokonverterelement der Gstreamer -Pipeline anstelle des Standardwerts "Videoconvert". Bei Verwendung von Video4Linux2 -Hardware -Dekodierung durch eine GPU verwendet -vc v4l2convert
auch die GPU zur Videokonvertierung. Durch die Verwendung von Zitaten "..." können einige Parameter in den Konverternamen aufgenommen werden.
-VS Videosink wählt den Gstreamer -Videosink anstelle des Standardwerts "AutoVideosink" aus, der ihn für Sie auswählt. Einige Videossink -Auswahlmöglichkeiten sind: Ximagesink, xvimagesink, vaapisink (für Intel -Grafiken), Gtksink, Glimagesink, WaylandSink, Osxvideosink (für macOS), kmssink (für Systeme ohne X11, wie Raspberry Pi OS Lite) oder FPSDISPLY (was zeigt, dass der Streaming -Streaming -In -in -Streaming -Streaming in den Streaming -Streaming -Streaming -Streaming -Streaming in den Streaming -Streaming zeigt) fps). Durch die Verwendung von Zitaten "..." können einige Parameter in den VideoSink -Namen aufgenommen werden. Beispielsweise wird der Vollbildmodus vom VAAPISINC -Plugin unterstützt und mit -vs "vaapisink fullscreen=true"
erhalten. Dies funktioniert auch mit waylandsink
. Die Syntax solcher Optionen ist spezifisch für ein bestimmtes Plugin (siehe Gstreamer -Dokumentation), und einige Auswahlmöglichkeiten von Videosink funktionieren möglicherweise nicht auf Ihrem System.
-VS 0 unterdrückt die Anzeige von gestreamtetem Video. Im Spiegelmodus wird der Bildschirm des Kunden immer noch mit einer reduzierten Rate von 1 Frame pro Sekunde gespiegelt, jedoch nicht gerendert oder angezeigt. Diese Option sollte immer verwendet werden, wenn der Server "kopflos" ist (ohne angehängte Bildschirm zum Anzeigen von Videos) und nur zum Rendern von Audio Apple Lustless Audio im AirPlay-Audio-Modus.
-V4L2 Videoeinstellungen für Hardware H264 Video -Decodierung in der GPU von Video4Linux2. Äquivalent zu -vd v4l2h264dec -vc v4l2convert
.
-BT709 Eine Problemumgehung für den Fehler des älteren Video4Linux2-Plugins zur Erkennung von Apple-Verwendung einer ungewöhnlichen (aber erlaubten) "Vollrangesfarbe" -Variante des BT709-Farbstandards für digitales Fernsehen. Dies wird von Gstreamer-1.20.4 und Backports nicht mehr benötigt.
-RPI entspricht "-v4l2" (nicht gültig für Raspberry Pi Model 5 und in uxplay 1.67 entfernt)
-Rpigl entsprechen "-rpi -vs glimagesink". (Seit uxplay 1.67 entfernt)
-RPIFB Äquivalent zu "-rpi -vs kmssink" (entfernt seit uxplay 1.67)
-rpiwl äquivalent zu "-rpi -vs WaylandSink". (Seit uxplay 1.67 entfernt)
-as AudioSink wählt den Gstreamer -Audisinkrek aus, anstatt ihn autoaudiosink für Sie auswählen zu lassen. Einige Audiosink -Auswahlmöglichkeiten sind: Pulsesink, AlSasink, PipeSink, Osssink, OSS4Sink, Jackaudiosink, Osxaudiosink (für macOS), Wasiapisink, DirectSoundSink (für Windows). Die Verwendung von Zitaten "..." ermöglicht möglicherweise einige optionale Parameter (z -as "alsasink device=..."
um ein nicht defektes Ausgabegerät anzugeben). Die Syntax solcher Optionen ist spezifisch für ein bestimmtes Plugin (siehe Gstreamer -Dokumentation), und einige Auswahlmöglichkeiten von Audiosink funktionieren möglicherweise nicht auf Ihrem System.
-as 0 (oder nur -a ) unterdrückt das Spielen von Streamed Audio, zeigt jedoch Streamed -Video an.
-Al X gibt eine Audio-Latenz X in (Dezimal-) Sekunden in Audio-Nur-Audio (Alac) an, die dem Kunden gemeldet wird. Werte im Bereich [0,0, 10,0] Sekunden sind zulässig und werden in eine ganze Anzahl von Mikrosekunden umgewandelt. Die Standardeinstellung beträgt 0,25 Sekunden (250000 USEC). (Der Kunde scheint diese gemeldete Latenz jedoch zu ignorieren, so dass diese Option nicht funktionsfähig erscheint.)
-CA- Dateiname enthält eine Datei (in der Dateiname einen vollständigen Pfad enthalten kann) im Audio-Alac-Modus nur für die Ausgabe von "Cover Art" (von Apple Music usw. ). Diese Datei wird mit dem neuesten Cover -Kunst überschrieben, wenn sie eintrifft. Cover Art (JPEG -Format) wird verworfen, wenn diese Option nicht verwendet wird. Verwenden Sie mit einem Image -Betrachter, der das Bild neu lädt, wenn es sich ändert, oder regelmäßig ( z. B. einmal pro Sekunde). Um dies zu erreichen, führen Sie " uxplay -ca [path/to/]filename &
" im Hintergrund aus und führen Sie dann den Bildbetrachter im Vordergrund aus. Beispiel: Verwenden Sie feh
als Betrachter: Führen Sie " feh -R 1 [path/to/]filename
" aus (im selben Terminalfenster, in dem UXPLY in den Hintergrund gesteckt wurde). Verwenden Sie zum Beenden ctrl-C fg ctrl-C
um den Bildbetrachter zu beenden, bringen Sie mit.