Remarque : le streaming audio multi-pièces AirPlay2 n'est pas pris en charge : utilisez shairport-sync pour cela.
.
Installez uxplay sur les systèmes Linux basés sur Debian avec " sudo apt install uxplay
" ; sur FreeBSD avec « sudo pkg install uxplay
». Également disponible sur les systèmes basés sur Arch via AUR. Depuis la v. 1.66, uxplay est désormais également packagé au format RPM par Fedora 38 (" sudo dnf install uxplay
").
Pour les autres distributions basées sur RPM qui n'ont pas encore empaqueté UxPlay, un "specfile" RPM uxplay.spec est désormais fourni avec les versions récentes (voir leurs "Actifs"), et peut également être trouvé dans le répertoire principal des sources d'UxPlay. Consultez la section sur l'utilisation de ce fichier de spécifications pour créer un package RPM installable.
Après l'installation :
(Sous Linux et *BSD) : si un pare-feu est actif sur le serveur hébergeant UxPlay, assurez-vous que le port réseau par défaut (UDP 5353) pour les requêtes mDNS/DNS-SD est ouvert (voir Dépannage ci-dessous pour plus de détails) ; ouvrez également trois ports UDP et trois ports TCP pour Uxplay, et utilisez l'option "uxplay -p " (voir " man uxplay
" ou " uxplay -h
").
Même si vous installez le package binaire uxplay précompilé de votre distribution, vous devrez peut-être lire les instructions ci-dessous pour exécuter UxPlay pour voir lequel des packages de plugin GStreamer de votre distribution vous devez également installer.
Pour le mode Audio uniquement (Apple Music, etc.) la meilleure qualité est obtenue avec l'option "uxplay -async", mais il y a alors une latence de 2 secondes imposée par iOS.
Ajoutez toutes les options UxPlay que vous souhaitez utiliser par défaut à un fichier de démarrage ~/.uxplayrc
(voir " man uxplay
" ou " uxplay -h
" pour le format et les autres emplacements possibles). En particulier, si votre système utilise des systèmes audio PipeWire ou vidéo Wayland, vous souhaiterez peut-être ajouter « as pipewiresink » ou « vs waylandsink » comme valeurs par défaut au fichier. (La sortie des commandes de terminal "ps waux | grep pulse" ou "pactl info" contiendra "pipewire" si votre système Linux/BSD l'utilise).
Sur Raspberry Pi : Si vous utilisez Ubuntu 22.10 ou version antérieure, GStreamer doit être patché pour utiliser le décodage vidéo matériel par le GPU Broadcom (également recommandé mais facultatif pour le système d'exploitation Raspberry Pi (Bullseye) : utilisez l'option « uxplay -bt709
» si vous n'utilisez pas le patch).
Pour (facilement) compiler la dernière version d'UxPlay à partir des sources, consultez la section Obtenir UxPlay.
Ce projet est un serveur miroir AirPlay2 Unix open source GPLv3 pour Linux, macOS et *BSD. Il a été initialement développé par antimof en utilisant le code de RPiPlay basé sur OpenMAX, qui à son tour dérive d'AirplayServer, shairplay et playfair. (Le site antimof n'est plus impliqué dans le développement, mais publie périodiquement des mises à jour extraites du nouveau site principal UxPlay).
UxPlay est testé sur un certain nombre de systèmes, dont (entre autres) Debian (10 "Buster", 11 "Bullseye", 12 "Bookworm"), Ubuntu (20.04 LTS, 22.04 LTS, 23.04 (également dérivés d'Ubuntu Linux Mint, Pop! _OS), Red Hat et clones (Fedora 38, Rocky Linux 9.2), openSUSE Leap 15.5, Mageia 9, OpenMandriva "ROME", PCLinuxOS, Arch Linux, Manjaro et devrait fonctionner sur n'importe quel système Linux. Également testé sur macOS Catalina et Ventura (Intel) et Sonoma (M2), FreeBSD 14.0, Windows 10 et 11 (64 bits).
Sur Raspberry Pi 4 modèle B, il est testé sur Raspberry Pi OS (Bullseye et Bookworm) (32 et 64 bits), Ubuntu 22.04 LTS et 23.04, Manjaro RPi4 23.02 et (sans décodage vidéo matériel) sur openSUSE 15.5. Également testé sur Raspberry Pi Zero 2 W, 3 modèle B+, et maintenant 5.
Son utilisation principale est d'agir comme une AppleTV pour la mise en miroir d'écran (avec audio) des clients iOS/iPadOS/macOS (ordinateurs iPhone, iPod Touch, iPad, Mac) sur l'écran du serveur d'un hôte exécutant Linux, macOS ou autre Unix. (et maintenant aussi Microsoft Windows). UxPlay prend en charge le protocole AirPlay2 d'Apple en utilisant le "Legacy Protocol", mais certaines fonctionnalités sont manquantes. (Des détails sur ce qui est publiquement connu sur le protocole AirPlay 2 d'Apple peuvent être trouvés ici, ici et ici ; voir également pyatv qui pourrait être une ressource pour ajouter des protocoles modernes.) Bien qu'il n'y ait aucune garantie que les futures versions d'iOS continueront à prendre en charge "Legacy Protocol ", iOS 17 continue de prendre en charge.
Le serveur UxPlay et son client doivent être sur le même réseau local, sur lequel tourne également un serveur Bonjour/Zeroconf mDNS/DNS-SD (seul le service DNS-SD "Service Discovery" est strictement nécessaire, il n'est pas nécessaire que le le réseau local soit également du type ".local" basé sur mDNS). Sur les serveurs Linux et BSD Unix, cela est généralement fourni par Avahi, via le service avahi-daemon, et est inclus dans la plupart des distributions Linux (ce service peut également être fourni par les serveurs macOS, iOS ou Windows).
Les connexions au serveur UxPlay par les clients iOS/MacOS peuvent être initiées à la fois en mode AirPlay Mirror (qui diffuse l'audio AAC compressé avec perte tout en reflétant l'écran du client), ou en mode alternatif AirPlay Audio qui diffuse l'audio Apple Lossless (ALAC) sans mise en miroir d'écran. . En mode Audio , les métadonnées sont affichées dans le terminal uxplay ; si l'option UxPlay -ca <name>
est utilisée, la pochette qui l'accompagne est également sortie dans un fichier <name>
périodiquement mis à jour, et peut être visualisé avec une visionneuse graphique (rechargement) de votre choix. La commutation entre les modes Miroir et Audio pendant une connexion active est possible : en mode Miroir , arrêtez la mise en miroir (ou fermez la fenêtre miroir) et démarrez une connexion en mode Audio , revenez en arrière. initier une connexion en mode miroir ; l'affichage de la pochette s'arrête/redémarre lorsque vous quittez/rentrez le mode Audio .
Notez que le DRM vidéo Apple (tel qu'il se trouve dans le contenu de l'application Apple TV sur le client) ne peut pas être déchiffré par UxPlay et que l'application Apple TV ne peut pas être regardée à l'aide du mode AirPlay Mirror d'UxPlay (seul l'audio non protégé sera diffusé, en AAC). format), mais le contenu vidéo et audio des applications sans DRM comme « l'application YouTube » sera diffusé par UxPlay en mode miroir.
Comme UxPlay ne prend actuellement pas en charge le streaming vidéo non-Mirror AirPlay (où le client contrôle un serveur Web sur le serveur AirPlay qui reçoit directement le contenu HLS pour éviter qu'il ne soit décodé et réencodé par le client), en utilisant l'icône de la vidéo AirPlay dans les applications telles que l'application YouTube enverront uniquement de l'audio (au format ALAC sans perte) sans la vidéo qui l'accompagne (il est prévu de prendre en charge la vidéo HLS dans les futures versions d'UxPlay)
UxPlay utilise les "plugins" GStreamer pour le rendu audio et vidéo. Cela signifie que la vidéo et l'audio sont pris en charge « prêts à l'emploi », à l'aide d'un choix de plugins. AirPlay diffuse la vidéo au format h264 : le décodage gstreamer est indépendant des plugins et utilise des décodeurs h264 matériels GPU accélérés si disponibles ; sinon, un décodage logiciel est utilisé.
VAAPI pour graphiques intégrés Intel et AMD, NVIDIA avec pilote open source "Nouveau"
Avec un GPU Intel ou AMD, le décodage matériel avec le plugin open source VAAPI gstreamer est préférable. Les pilotes open source "Nouveau" pour graphiques NVIDIA sont également en principe supportés : voir ici, mais cela nécessite de compléter VAAPI avec un firmware extrait des pilotes propriétaires NVIDIA.
NVIDIA avec pilotes propriétaires
Le plugin nvh264dec
(inclus dans gstreamer1.0-plugins-bad depuis GStreamer-1.18.0) peut être utilisé pour un décodage vidéo accéléré sur le GPU NVIDIA après l'installation du pilote CUDA de NVIDIA libcuda.so
. Pour GStreamer-1.16.3 ou version antérieure, le plugin s'appelle nvdec
et doit être construit par l'utilisateur.
Prise en charge de Video4Linux2 pour le décodage matériel h264 sur Raspberry Pi (Pi 4B et versions antérieures)
Les ordinateurs Raspberry Pi (RPi) (testés sur Pi 4 modèle B) peuvent désormais exécuter UxPlay à l'aide du décodage vidéo logiciel, mais le décodage h264/h265 accéléré par le matériel par le micrologiciel du GPU Broadcom 2835 du Pi est préféré. UxPlay y accède à l'aide du plugin GStreamer-1.22 Video4Linux2 (v4l2) ; Utilise le module de noyau Linux hors ligne principale bcm2835-codec maintenu par Raspberry Pi, jusqu'à présent uniquement inclus dans le système d'exploitation Raspberry Pi, et deux autres distributions (Ubuntu, Manjaro) disponibles avec Raspberry Pi Imager. (Pour GStreamer < 1.22, voir le wiki UxPlay) .
(Nouveau) : Prise en charge du décodage matériel h265 (HEVC) sur Raspberry Pi (Pi 4 modèle B et Pi 5)
Le soutien est présent, mais jusqu'à présent, des résultats satisfaisants n'ont pas été obtenus. Le modèle Pi 5 fournit uniquement un décodage à accélération matérielle (GPU) pour la vidéo h265, mais pas pour le H264, car son processeur est suffisamment puissant pour un décodage logiciel H264 satisfaisant.
La licence GPLv3 d'UxPlay n'a pas d'« exception GPL » ajoutée permettant explicitement de la distribuer sous forme compilée lorsqu'elle est liée à des versions d'OpenSSL antérieures à la v. 3.0.0 (les anciennes versions d'OpenSSL ont une clause de licence incompatible avec la GPL à moins qu'OpenSSL puisse être considérée comme une "bibliothèque système", ce qui est le cas dans *BSD). De nombreuses distributions Linux traitent OpenSSL comme une « bibliothèque système », mais certaines (par exemple Debian) ne le font pas : dans ce cas, le problème est résolu en créant une liaison avec OpenSSL-3.0.0 ou version ultérieure.
Soit téléchargez et décompressez UxPlay-master.zip, soit (si git est installé) : "git clone https://github.com/FDH2/UxPlay". Vous pouvez également télécharger une version récente ou antérieure répertoriée dans les versions.
(Adaptez ces instructions pour les Linux non basés sur Debian ou *BSD ; pour macOS, voir les instructions spécifiques ci-dessous). Voir Dépannage ci-dessous pour obtenir de l'aide en cas de difficultés.
Vous avez besoin d'un compilateur C/C++ (par exemple g++) avec les bibliothèques de développement standard installées. Les systèmes basés sur Debian fournissent un paquet « build-essential » à utiliser pour compiler des logiciels. Vous avez également besoin de pkg-config : s'il n'est pas trouvé par " which pkg-config
", installez pkg-config ou son remplacement similaire, pkgconf. Assurez-vous également que cmake>=3.5 est installé : " sudo apt install cmake
" (ajoutez-y build-essential
et pkg-config
(ou pkgconf
) si nécessaire).
Assurez-vous que votre distribution fournit OpenSSL 1.1.1 ou version ultérieure, et libplist 2.0 ou version ultérieure. (Cela signifie que les systèmes basés sur Debian 10 « Buster » (par exemple, Ubuntu 18.04) ou plus récent ; sur les systèmes Debian 10, « libplist » est une version plus ancienne, vous avez besoin de « libplist3 ».) Si ce n'est pas le cas, vous devrez peut-être créer et installer ceux-ci à partir de la source (voir les instructions à la fin de ce README).
Si vous disposez d'une installation OpenSSL non standard, vous devrez peut-être définir la variable d'environnement OPENSSL_ROOT_DIR ( par exemple , " export OPENSSL_ROOT_DIR=/usr/local/lib64
" si c'est là qu'elle est installée). De même, pour les installations GStreamer non standard (ou multiples), définissez la variable d'environnement GSTREAMER_ROOT_DIR sur le répertoire qui contient le répertoire ".../gstreamer-1.0/" de l'installation de gstreamer qu'UxPlay doit utiliser (s'il s'agit par exemple de "~ /my_gstreamer/lib/gstreamer-1.0/", définissez cet emplacement avec " export GSTREAMER_ROOT_DIR=$HOME/my_gstreamer/lib
").
Dans une fenêtre de terminal, accédez au répertoire source du code source téléchargé ("UxPlay-*", "*" = "master" ou la balise de version pour les téléchargements de fichiers zip, "UxPlay" pour les téléchargements "git clone"), puis suivez les instructions ci-dessous :
Remarque : Par défaut, UxPlay sera construit avec une optimisation pour l'ordinateur sur lequel il est construit ; lorsque ce n'est pas le cas, comme lorsque vous emballez pour une distribution, utilisez l'option cmake -DNO_MARCH_NATIVE=ON
.
Si vous utilisez Windows X11 sous Linux ou *BSD et que vous souhaitez basculer en mode plein écran en appuyant sur une touche (F11 ou Alt_L+Entrée), UxPlay doit être construit avec une dépendance à X11. À partir d'UxPlay-1.59, cela sera fait par défaut SI les bibliothèques de développement X11 sont installées et détectées. Installez-les avec " sudo apt install libx11-dev
". Si GStreamer < 1,20 est détecté, un correctif nécessaire aux applications de partage d'écran ( par exemple , Zoom) sera également effectué.
-DNO_X11_DEPS=ON
.sudo apt install libssl-dev libplist-dev
". ( sauf si vous devez créer OpenSSL et libplist à partir des sources ).sudo apt install libavahi-compat-libdnssd-dev
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
. (* Ignorer si vous avez construit Gstreamer à partir des sources )cmake .
( Pour un build plus propre, ce qui est utile si vous modifiez le source, remplacez-le par " mkdir build; cd build; cmake ..
" : vous pouvez ensuite supprimer le contenu du répertoire build
si nécessaire, sans affecter le source. ) Aussi ajoutez ici toutes les options cmake " -D
" selon vos besoins (par exemple, -DNO_X11_DEPS=ON
ou -DNO_MARCH_NATIVE=ON
).make
sudo make install
(vous pouvez ensuite désinstaller avec sudo make uninstall
dans le même répertoire dans lequel cela a été exécuté). Cela installe le fichier exécutable " uxplay
" dans /usr/local/bin
(et installe une page de manuel dans un endroit standard comme /usr/local/share/man/man1
et les fichiers README dans un endroit comme /usr/local/share/doc/uxplay
). (Si "man uxplay" échoue, vérifiez si $MANPATH est défini : si c'est le cas, le chemin d'accès à la page de manuel (généralement /usr/local/share/man/) doit être ajouté à $MANPATH .) L'exécutable uxplay peut également être trouvé dans le répertoire build après le processus de build, si vous souhaitez tester avant l'installation (auquel cas les plugins GStreamer doivent d'abord être installés).
**Pour ceux qui disposent de distributions basées sur RPM, un fichier de spécifications RPM uxplay.spec est également disponible : voir Créer un package RPM installable.
Red Hat, ou des clones comme CentOS (maintenant continué sous le nom de Rocky Linux ou Alma Linux) : (sudo dnf install, ou sudo yum install) openssl-devel libplist-devel avahi-compat-libdns_sd-devel gstreamer1-devel gstreamer1-plugins-base- devel (+libX11-devel pour X11 plein écran) (certains d'entre eux peuvent se trouver dans le référentiel de modules complémentaires "CodeReady", appelé "PowerTools" par clones)
Mageia, PCLinuxOS, OpenMandriva : Identique à Red Hat, sauf pour les changements de nom : (Mageia) « gstreamer1.0-devel », « gstreamer-plugins-base1.0-devel » ; (OpenMandriva) "libopenssl-devel", "gstreamer-devel", "libgst-plugins-base1.0-devel". PCLinuxOS : identique à Mageia, mais utilise synaptic (ou apt) comme gestionnaire de paquets.
openSUSE : (installation sudo zypper) libopenssl-3-devel (anciennement libopenssl-devel) libplist-2_0-devel (anciennement libplist-devel) avahi-compat-mDNSResponder-devel gstreamer-devel gstreamer-plugins-base-devel (+ libX11- développer pour le plein écran X11).
Arch Linux ( également disponible sous forme de package dans AUR ) : (sudo pacman -Syu) openssl libplist avahi gst-plugins-base.
FreeBSD : (installation sudo pkg) libplist gstreamer1. Avahi-libdns ou mDNSResponder doivent également être installés pour fournir la bibliothèque dns_sd. OpenSSL est déjà installé en tant que bibliothèque système.
Les créateurs de RPM pour la première fois doivent d'abord installer les packages rpm-build et rpmdevtools, puis créer l'arborescence rpmbuild avec " rpmdev-setuptree
". Ensuite, téléchargez et copiez uxplay.spec dans ~/rpmbuild/SPECS
. Dans ce répertoire, exécutez " rpmdev-spectool -g -R uxplay.spec
" pour télécharger le fichier source correspondant uxplay-*.tar.gz
dans ~/rpmbuild/SOURCES
("rpmdev-spectool" peut aussi être simplement appelé "spectool" ); puis exécutez " rpmbuild -ba uxplay.spec
" (vous devrez installer toutes les dépendances requises dans ce rapport). Cela devrait créer le package uxplay RPM dans un sous-répertoire de ~/rpmbuild/RPMS
. ( uxplay.spec est testé sur Fedora 38, Rocky Linux 9.2, openSUSE Leap 15.5, Mageia 9, OpenMandriva, PCLinuxOS ; il peut être facilement modifié pour inclure des listes de dépendances pour d'autres distributions basées sur RPM.)
Installez ensuite les plugins GStreamer nécessaires avec sudo apt install gstreamer1.0-<plugin>
. Les valeurs de <plugin>
requises sont :
Les distributions basées sur Debian divisent certains packages de plugins en morceaux plus petits : certains qui peuvent également être nécessaires incluent " gl " pour le support d'OpenGL (cela fournit le videosink " -vs glimagesink ", qui peut être très utile dans de nombreux systèmes (y compris Raspberry Pi ), et doit toujours être utilisé lors de l'utilisation du décodage h264/h265 par un GPU NVIDIA), " gtk3 " (qui fournit le flux vidéo "-vs gtksink") et " x " pour le support X11, bien que ceux-ci peut être déjà installé ; " vaapi " est nécessaire pour le décodage vidéo h264 accéléré par le matériel par les graphiques Intel ou AMD (mais pas pour une utilisation avec NVIDIA utilisant des pilotes propriétaires). Si le son ne fonctionne pas, les plugins " alsa ", " pulseaudio " ou " pipewire " devront peut-être être installés, selon la configuration de votre audio.
Dans certains cas, en raison de problèmes de brevet, la fonctionnalité avdec_aac du plugin libav nécessaire au décodage de l'audio AAC en mode miroir n'est pas fournie dans la distribution officielle : obtenez-la depuis les référentiels communautaires pour ces distributions.
Red Hat ou des clones comme CentOS (maintenant continué sous le nom de Rocky Linux ou Alma Linux) : installez gstreamer1-libav gstreamer1-plugins-bad-free (+ gstreamer1-vaapi pour les graphiques Intel/AMD). Dans Fedora récent, gstreamer1-libav est renommé gstreamer1-plugin-libav. Pour obtenir avdec_aac, installez les packages depuis rpmfusion.org : (récupérez ffmpeg-libs depuis rpmfusion ; sur RHEL ou des clones, mais pas sur Fedora récent, récupérez également gstreamer1-libav à partir de là).
Mageia, PCLinuxOS, OpenMandriva : installez gstreamer1.0-libav gstreamer1.0-plugins-bad (+ gstreamer1.0-vaapi pour les graphiques Intel/AMD). Sur Mageia, pour obtenir avdec_aac, installez ffmpeg depuis le dépôt "tainted" , (qui fournit également un gstreamer1.0-plugins-bad plus complet).
openSUSE : installez gstreamer-plugins-libav gstreamer-plugins-bad (+ gstreamer-plugins-vaapi pour les graphiques Intel/AMD). Pour obtenir avdec_aac, installez les packages libav* pour openSUSE à partir de Packman "Essentials" ; recommandation : après avoir ajouté le référentiel Packman, utilisez l'option dans la gestion du logiciel YaST pour basculer tous les packages système pour le multimédia vers Packman).
Arch Linux Installez gst-plugins-good gst-plugins-bad gst-libav (+ gstreamer-vaapi pour les graphiques Intel/AMD).
FreeBSD : Installez gstreamer1-libav, gstreamer1-plugins, gstreamer1-plugins-* (* = core, good, bad, x, gtk, gl, vulkan, pulse, v4l2, ...), (+ gstreamer1-vaapi pour Intel/ Graphiques AMD).
Depuis UxPlay-1.64, UxPlay peut être démarré avec des options lues à partir d'un fichier de configuration, qui sera le premier trouvé d'un (1) fichier avec un chemin donné par la variable d'environnement $UXPLAYRC
, (2) ~/.uxplayrc
dans l'accueil de l'utilisateur. répertoire ("~"), (3) ~/.config/uxplayrc
. Le format est une option par ligne, en omettant le "-"
initial de l'option de ligne de commande. Les lignes du fichier de configuration commençant par "#"
sont traitées comme des commentaires et ignorées.
Exécutez uxplay dans une fenêtre de terminal . Sur certains systèmes, vous pouvez spécifier le mode plein écran avec l'option -fs
, ou basculer vers et hors du mode plein écran avec F11 ou (maintenir Alt gauche) + Entrée. Utilisez Ctrl-C (ou fermez la fenêtre) pour y mettre fin une fois terminé. Si le serveur UxPlay n'est pas vu par le panneau déroulant "Screen Mirroring" du client iOS, vérifiez que votre serveur DNS-SD (généralement avahi-daemon) est en cours d'exécution : faites-le dans une fenêtre de terminal avec systemctl status avahi-daemon
. Si cela indique que le démon avahi n'est pas en cours d'exécution, contrôlez-le avec sudo systemctl [start,stop,enable,disable] avahi-daemon
(sur les systèmes non-systemd, tels que *BSD, utilisez sudo service avahi-daemon [status, start, stop, restart, ...]
). Si UxPlay est vu, mais que le client ne parvient pas à se connecter lorsqu'il est sélectionné, il peut y avoir un pare-feu sur le serveur qui empêche UxPlay de recevoir les demandes de connexion du client à moins que certains ports réseau ne soient ouverts : si un pare-feu est actif, ouvrez également le port UDP 5353. (pour les requêtes mDNS) nécessaire à Avahi . Voir Dépannage ci-dessous pour obtenir de l'aide sur ce problème ou sur d'autres.
Contrairement à une Apple TV, le serveur UxPlay n'exige pas par défaut que les clients se « couplent » initialement avec lui à l'aide d'un code PIN affiché par le serveur (après quoi le client « fait confiance » au serveur et n'a pas besoin de le répéter). Depuis la v1.67, Uxplay propose une telle "authentification par code PIN" en option : voir " -pin
" et " -reg
" dans Utilisation pour plus de détails, si vous souhaitez l'utiliser. Certains clients avec MDM (Mobile Device Management, souvent présent sur les appareils appartenant à l'employeur) doivent utiliser l'authentification par code PIN : UxPlay le fournira même s'il fonctionne sans l'option code PIN.
Par défaut, UxPlay est verrouillé sur son client actuel jusqu'à ce que ce client abandonne la connexion ; depuis UxPlay-1.58, l'option -nohold
modifie ce comportement de sorte que lorsqu'un nouveau client demande une connexion, il supprime le client actuel et prend le relais. UxPlay 1.66 introduit un mécanisme ( -restrict
, -allow <id>
, -block <id>
) pour contrôler quels clients sont autorisés à se connecter, en utilisant leur "deviceID" (qui dans les appareils Apple semble être immuable).
En mode Miroir, GStreamer a le choix entre deux méthodes pour lire la vidéo avec l'audio qui l'accompagne : avant UxPlay-1.64, les flux vidéo et audio étaient tous deux lus dès que possible après leur arrivée (la méthode GStreamer " sync=false ") , avec une horloge interne GStreamer utilisée pour essayer de les maintenir synchronisés. À partir d'UxPlay-1.64, l'autre méthode (mode " sync=true " de GStreamer), qui utilise des horodatages dans les flux audio et vidéo envoyés par le client, est la nouvelle méthode par défaut . Sur les hôtes UxPlay à faible puissance de décodage (tels que les modèles Raspberry Pi Zero W ou 3 B+), cela supprimera les images vidéo qui ne peuvent pas être décodées à temps pour lire avec l'audio, rendant la vidéo saccadée, mais toujours synchronisée.
L'ancienne méthode, qui ne supprime pas les images vidéo tardives, fonctionnait bien sur des systèmes plus puissants et est toujours disponible avec l'option UxPlay « -vsync no
» ; cette méthode est adaptée au "streaming en direct" et peut être meilleure lors de l'utilisation d'UxPlay comme deuxième moniteur pour un ordinateur Mac, par exemple, tandis que la nouvelle méthode basée sur l'horodatage par défaut est la meilleure pour regarder une vidéo, afin de conserver les mouvements des lèvres et les voix. synchronisé. (Sans utilisation d'horodatage, la vidéo finira par être en retard sur l'audio si elle ne peut pas être décodée assez rapidement : le décodage vidéo accéléré par le matériel a permis d'éviter cela auparavant lorsque les horodatages n'étaient pas utilisés.)
-async
option basée. (Un exemple pourrait être si vous souhaitez suivre les paroles d'Apple Music sur le client tout en écoutant un son de qualité supérieure sur le serveur UxPlay). Cela retarde la vidéo sur le client pour qu'elle corresponde à l'audio sur le serveur, ce qui entraîne un léger délai avant qu'une pause ou un changement de piste initié sur le client ne prenne effet sur l'audio lu par le serveur. Le contrôle du volume AirPlay atténue le volume (gain) jusqu'à -30 dB : la plage de décibels -30 : 0 peut être redimensionnée à partir de Low : 0 ou Low : High , en utilisant l'option -db
("-db Low " ou " -db Low : High "), Low doit être négatif. La mise à l'échelle est linéaire en décibels. Notez que le format audio de GStreamer « coupera » tout gain audio supérieur à +20 dB, alors gardez High en dessous de ce niveau. L'option -taper
fournit un profil de contrôle du volume AirPlay « effilé » que certains utilisateurs peuvent préférer.
Les options -vsync et -async permettent également un réglage facultatif du retard audio positif (ou négatif) en millisecondes pour un réglage précis : -vsync 20.5
retarde l'audio par rapport à la vidéo de 0,0205 secondes ; une valeur négative le fait avancer.)
vous constaterez peut-être que la vidéo est améliorée par le paramètre -fps 60 qui permet de lire certaines vidéos à 60 images par seconde. (Vous pouvez voir quel framerate est réellement diffusé en utilisant -vs fpsdisplaysink et/ou -FPSdata.) Lorsque vous utilisez ceci, vous devez utiliser l'option de synchronisation par horodatage par défaut -vsync
.
Depuis UxPlay-1.54, vous pouvez afficher la « pochette » qui l'accompagne à partir de sources comme Apple Music en mode Audio uniquement (ALAC) : exécutez « uxplay -ca <name> &
» en arrière-plan, puis exécutez une visionneuse d'images avec un rechargement automatique. fonctionnalité : un exemple est "feh" : exécutez " feh -R 1 <name>
" au premier plan ; terminez feh puis Uxplay avec " ctrl-C fg ctrl-C
".
Par défaut, GStreamer utilise un algorithme pour rechercher le meilleur « puits vidéo » (terme utilisé par GStreamer pour désigner un pilote graphique permettant d'afficher des images). Vous pouvez remplacer cela avec l'option uxplay -vs <videosink>
. Les récepteurs vidéo disponibles dépendent de votre système d'exploitation et de votre matériel graphique : utilisez " gst-inspect-1.0 | grep sink | grep -e video -e Video -e image
" pour voir ce qui est disponible. Certaines possibilités sous Linux/*BSD sont :
glimagesink (OpenGL), waylandsink
xvimagesink , ximagesink (X11)
kmssink , fbdevsink (graphiques de console sans X11)
vaapisink (pour les graphiques à accélération matérielle Intel/AMD) ; pour les graphiques matériels NVIDIA (avec CUDA), utilisez glimagesink combiné avec " -vd nvh264dec
" (ou "nvh264sldec", une nouvelle variante qui deviendra "nvh264dec" dans GStreamer-1.24).
Si le serveur est "sans tête" (pas de moniteur connecté, restitue uniquement l'audio), utilisez -vs 0
.
GStreamer recherche également le meilleur « audiosink » ; remplacez son choix par -as <audiosink>
. Les choix sous Linux incluent pulsesink, alsasink, pipewiresink, oss4sink ; découvrez ce qui est disponible avec gst-inspect-1.0 | grep sink | grep -e audio -e Audio
.
Un problème courant implique que GStreamer tente d'utiliser un décodage vidéo h264 matériel accéléré incorrectement configuré ou absent (par exemple, VAAPI). Essayez " uxplay -avdec
" pour forcer le décodage vidéo logiciel ; si cela fonctionne, vous pouvez alors essayer de corriger le décodage vidéo matériel accéléré si vous en avez besoin, ou simplement désinstaller le plugin GStreamer vaapi.
Voir Utilisation pour plus d’options d’exécution.
Pour la vidéo Framebuffer (pour Raspberry Pi OS "Lite" et autres distributions non-X11), utilisez le KMS videosink "-vs kmssink" (le videoink du framebuffer DirectFB "dfbvideosink" est cassé sur le Pi et segfaults). Dans ce cas, vous devez explicitement utiliser l'option "-vs kmssink", car sans elle, autovideosink ne trouve pas le bon videosink.
Raspberry Pi 5 ne fournit pas de décodage matériel H264 (et n'en a pas besoin).
Pi Zero 2 W, 3 Model B+ et 4 Model B doivent utiliser le décodage matériel H264 par le GPU Broadcom, mais il nécessite un module de noyau hors du commun bcm2835_codec maintenu dans l'arborescence du noyau Raspberry Pi ; les distributions connues pour le fournir incluent Raspberry Pi OS, Ubuntu et Manjaro-RPi4. Utilisez le décodage logiciel (option -avdec) si ce module n'est pas disponible.
Uxplay utilise le plugin Video4Linux2 (v4l2) de GStreamer-1.22 et versions ultérieures pour accéder au GPU, si le décodage matériel H264 est utilisé. Cela devrait se produire automatiquement. L'option -v4l2 peut être utilisée, mais il est généralement préférable de laisser GStreamer trouver lui-même le meilleur pipeline vidéo.
Sur les anciennes distributions (GStreamer < 1.22), le plugin v4l2 a besoin d'un patch : voir le Wiki UxPlay. L'ancien système d'exploitation Raspberry Pi (Bullseye) a un GStreamer-1.18.4 partiellement corrigé qui nécessite l'option uxplay -bt709 (et n'utilise pas -v4l2) ; il est toujours préférable d'appliquer le patch complet du wiki UxPlay dans ce cas.
Pour le système d'exploitation Raspberry Pi "double héritage" (Buster), il n'y a pas de correctif pour GStreamer-1.14. Au lieu de cela, créez d'abord un GStreamer-1.18.6 plus récent et complet à partir des sources en utilisant ces instructions avant de créer UxPlay.
Le Raspberry Pi 3 Model B+ exécutant un système d'exploitation 32 bits peut également accéder au GPU avec le plugin GStreamer OMX (utilisez l'option " -vd omxh264dec
"), mais cela est interrompu par le firmware du Pi 4 Model B. La prise en charge d'OMX a été supprimée du système d'exploitation Raspberry Pi (Bullseye), mais est présente dans Buster.
La vidéo H265 (4K) est prise en charge avec le décodage matériel par le GPU Broadcom sur les modèles Raspberry Pi 5, ainsi que sur le Raspberry Pi 4 modèle B. Bien que GStreamer semble utiliser ce décodage matériel, la vitesse de rendu satisfaisante de la vidéo 4K par UxPlay sur ces modèles Raspberry Pi n'ont pas encore été réalisés. L'option "-h265" est requise pour activer le support h265. Une connexion Ethernet filaire est préférable dans ce mode (et peut être requise par le client).
Même avec le décodage vidéo GPU, certaines images peuvent être supprimées par les modèles à faible consommation pour maintenir la synchronisation audio et vidéo à l'aide d'horodatages. Dans Legacy Raspberry Pi OS (Bullseye), raspi-config "Performance Options" permet de spécifier la quantité de mémoire à allouer au GPU, mais ce paramètre semble être absent dans Bookworm (mais il peut toujours être réglé sur par exemple 128 Mo en ajoutant une ligne "gpu_mem=128" dans /boot/config.txt). Un Pi Zero 2 W (qui dispose de 512 Mo de mémoire) a bien fonctionné lorsqu'il a été testé dans Bullseye ou Bookworm Lite 32 bits avec 128 Mo alloués au GPU (la valeur par défaut semble être de 64 Mo).
Les options uxplay de base pour R Pi sont uxplay [-vs <videosink>]
. Le choix <videosink>
= glimagesink
est parfois utile. Avec le compositeur vidéo Wayland, utilisez <videosink>
= waylandsink
. Avec la vidéo framebuffer, utilisez <videosink>
= kmssink
.
ssh user@remote_host
export DISPLAY=:0
nohup uxplay [options] > FILE &
Le son et la vidéo seront diffusés sur l'hôte distant ; "nohup" maintiendra uxplay en marche si la session ssh est fermée. La sortie du terminal est enregistrée dans FILE (qui peut être /dev/null pour la supprimer)
Remarque: Une fonctionnalité de serveur AirPlay natif est incluse dans MacOS 12 Monterey, mais est limitée au matériel récent. Uxplay peut fonctionner sur des systèmes macOS plus anciens qui ne pourront pas exécuter Monterey, ou peuvent exécuter Monterey mais pas AirPlay.
Ces instructions pour MacOS supposent que les outils de développement de ligne de commande Xcode sont installés (si Xcode est installé, ouvrez le terminal, tapez "sudo xcode-select --install" et acceptez les conditions).
Il est également supposé que CMake> = 3.13 est installé: Cela peut être fait avec les gestionnaires de packages MacPorts ( sudo port install cmake
), Homebrew ( brew install cmake
), ou par un téléchargement depuis https://cmake.org/download/. Installez également git
si vous l'utilisez pour récupérer UxPlay.
Installez ensuite libplist et openssl-3.x. Notez que les versions statiques de ces bibliothèques seront utilisées dans les constructions de macOS, afin qu'elles puissent être désinstallées après la création d'Uxplay, si vous le souhaitez.
Si vous utilisez Homebrew: brew install libplist openssl@3
Si vous utilisez Macports: sudo port install libplist-devel openssl3
Sinon, construisez libplist et ouvre à partir de la source: Voir les instructions vers la fin de cette lecture; Nécessite des outils de développement (AutoConf, Automake, Libtool, etc. ) à installer.
Ensuite, obtenez la dernière version macOS de GStreamer-1.0.
Utilisation de GSTERMER "OFFICIELTIQUE" (recommandé pour les utilisateurs de Macport et Homebrew) : Installez la version GStreamer pour MacOS à partir de https://gstreamer.freedesktop.org/download/. (Cette version contient son propre PKG-Config, vous n'avez donc pas à en installer un.) Installez à la fois les packages GStreamer-1.0 et GStreamer-1.0-Devel. Après le téléchargement, cliquez sur eux pour installer (ils installent sur /Library/FrameWorks/gstreamer.framework). Les utilisateurs de Homebrew ou de Macports ne doivent pas installer (ou ne devraient pas désinstaller) le GSTERAMER fourni par leur gestionnaire de packages, s'ils utilisent la version "officielle".
Utilisation de GStreamer de Homebrew : PKG-Config est nécessaire: ("Brew Installer PKG-Config gstreamer"). Cela provoque l'installation d'un grand nombre de packages supplémentaires par Homebrew en tant que dépendances. L'installation Homebrew GStreamer a récemment été retravaillée en une seule "formule" nommée gstreamer
, qui fonctionne désormais sans avoir besoin de GST_PLUGIN_PATH pour être définie dans l'environnement. Homebrew installe GStreamer vers (HOMEBREW)/lib/gstreamer-1.0
où (HOMEBREW)/*
est /opt/homebrew/*
sur les macs de silicium Apple, et /usr/local/*
sur les macs Intel; Ne mettez pas de plugins non homébreux supplémentaires (que vous vous construisez) et définissez plutôt GST_PLUGIN_PATH pour pointer de leur emplacement (Homebrew ne fournit pas un gtrestremer complet, mais semble avoir tout nécessaire pour Uxplay).
Utilisation de GSTERAMER installée à partir de Macports : ce n'est pas recommandé, car actuellement le MacPorts Gtreer est ancien (V1.16.2), non entretenu et conçu pour utiliser x11:
(Si vous souhaitez vraiment utiliser le MacPorts GStreamer-1.16.2, installez PKGCONF ("Sudo Port Installer PKGCONF"), puis "Sudo Port Installer GSTERMER1-GST-PLUGINS-BASE GSTERAMER1-GST-PLUGINS-GOOD GSTERMER1-GST-PLUGIN -bad gstreamer1-gst-libav ". Pour la prise -DUSE_X11=ON
charge x11 sur macO , et l'exécutez à partir d'un terminal xquartz avec uxplay -s 800x600
ximagesink;
Après avoir installé GStreamer, construire et installer UXPlay: ouvrir un terminal et changer dans le répertoire source UXPlay ("UxPlay-Master" pour les téléchargements ZipFile, "UXPlay" pour "Git Clone" Téléchargements) et construire / installer avec "Cmake .; Make; Sudo Make Installer "(Identique à Linux).
L'exécution d'UxPlay tout en vérifiant les avertissements GSTRAMER (faites-le avec "Export GST_DEBUG = 2" avant de runnng uxplay) révèle qu'avec la valeur par défaut (puisque UXPlay 1.64) l'utilisation de temps pour la synchronisation vidéo, de nombreux cadres vidéo sont supprimés (uniquement sur MacOS), Peut-être en raison d'une autre erreur (à propos de Videometa) qui apparaît dans les avertissements GSTREAMER. Recommandation: utilisez la nouvelle option UXPlay "No Timestamp" -vsync no
" (vous pouvez ajouter une ligne" VSYNC NO "dans le fichier de configuration UXPlayrc).
Sur MacOS avec cette installation de GStreamer, les seules listes de vidéos disponibles semblent être GlimagesInk (choix par défaut fait par Autovideosink) et Osxvideosink. Le titre de la fenêtre n'affiche pas le nom du serveur AirPlay, mais la fenêtre est visible pour les applications de partage d'écran (par exemple, zoom). La seule audiosink disponible semble être Osxaudiosink.
L'option -NC est toujours utilisée, qu'elle soit sélectionnée ou non. Il s'agit d'une solution de contournement pour un problème avec les listes de vidéos GSTREAMER sur macOS: si le pipeline GStreamer est détruit tandis que la fenêtre de miroir est toujours ouverte, un segfault se produit.
Dans le cas de GlimagesInk, les paramètres de résolution "-s wxh" n'affectent pas la (petite) taille de fenêtre du miroir OpenGL initial, mais la fenêtre peut être étendue à l'aide de la souris ou du trackpad. En revanche, une fenêtre créée avec "-vs osxvideosink" est initialement grande, mais a le mauvais rapport d'aspect (image étirée); Dans ce cas, le rapport d'aspect change lorsque la largeur de la fenêtre est modifiée en faisant glisser son côté; L'option -vs "osxvideosink force-aspect-ratio=true"
peut être utilisée pour faire que la fenêtre a le rapport d'aspect correct lors de son ouverture pour la première fois.
Téléchargez et installez BonJour SDK pour Windows v3.0 . Vous pouvez télécharger le SDK sans aucune inscription sur softpedia.com, ou l'obtenir à partir du site officiel d'Apple https://developer.apple.com/download (Apple vous fait vous inscrire en tant que développeur pour y accéder depuis leur site). Cela devrait installer le SDK BonJour comme C:Program FilesBonjour SDK
.
(Ceci est pour les fenêtres 64 bits; une construction pour les fenêtres 32 bits devrait être possible, mais n'est pas testée.) L'environnement de construction MSYS2 de type UNIX sera utilisé: Télécharger et installer MSYS2 à partir du site officiel https: // www .msys2.org /. Acceptez l'emplacement d'installation par défaut C:mysys64
.
Les packages MSYS2 sont installés avec une variante du gestionnaire de packages "Pacman" utilisé par Arch Linux. Ouvrez un terminal "MSYS2 MINGW64" de l'onglet MSYS2 dans le menu Démarrer Windows et mettez à jour la nouvelle installation MSYS2 avec "Pacman -SYU". Installez ensuite le compilateur MingW-64 et CMake
pacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc
Le compilateur avec toutes les dépendances requis sera installé dans le répertoire MSYS64, avec un chemin par défaut C:/msys64/mingw64
. Ici, nous allons simplement construire Uxplay à partir de la ligne de commande dans l'environnement MSYS2 (cela utilise " ninja
" à la place de " make
" pour le système de construction).
Téléchargez le dernier UXPlay depuis GitHub (pour utiliser git
, installez-le avec pacman -S git
, puis " git clone https://github.com/FDH2/UxPlay
") , puis installez les dépendances UXPlay (OpenSSL est déjà installé avec MSYS2):
pacman -S mingw-w64-x86_64-libplist mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base
Si vous essayez un système de construction Windows différent, les versions MSVC de GStreamer pour Windows sont disponibles à partir du site officiel de GSTREAMER, mais seule la construction MINGW 64 bits sur MSYS2 a été testée.
CD dans le répertoire source UXPlay, puis " mkdir build
" et " cd build
". Le processus de construction suppose que le SDK Bonjour est installé sur C:Program FilesBonjour SDK
. S'il est ailleurs, définissez la variable Enviroment BonJour_SDK_HOME pour pointer de son emplacement. Puis construire uxplay avec
cmake ..
ninja
En supposant aucune erreur dans l'un ou l'autre, vous aurez construit le répertoire UXPlay exécutable UXPlay.exe dans le répertoire actuel ("build"). Les fonctionnalités "Sudo Make Installer" et "Sudo Make Disinstal" offertes dans les autres builds ne sont pas disponibles sur Windows; Au lieu de cela, l'environnement MSYS2 a /mingw64/...
disponible, et vous pouvez installer l'exécutable uxplay.exe en C:/msys64/mingw64/bin
(plus manpage et documentation en C:/msys64/mingw64/share/...
) avec
cmake --install . --prefix /mingw64
Pour pouvoir afficher la page mande, vous devez installer la visionneuse de ManPage avec " pacman -S man
".
Pour exécuter uxplay.exe, vous devez installer certains packages de plugin gstreamère avec pacman -S mingw-w64-x86_64-gst-<plugin>
, où les <plugin>
ont été donnés
D'autres packages de plugin MSYS2 GSTERAMER possibles que vous pourriez utiliser sont répertoriés dans les packages MSYS2.
Vous devrez également accorder l'autorisation à l'exécutable UXPlay UXPlay.exe pour accéder aux données via le pare-feu Windows. Vous pouvez automatiquement vous offrir le choix de le faire lorsque vous exécutez pour la première fois UxPlay, ou vous devrez peut-être le faire en utilisant les paramètres Windows-> Mise à jour et sécurité-> Windows Security-> Firewall et Network Protection -> Autoriser une application via un pare-feu . Si votre protection virale indique Uxplay.exe comme "suspecte" (mais sans une véritable signature de logiciels malveillants), vous devrez peut-être lui donner une exception.
Testez maintenant en exécutant " uxplay
" (dans une fenêtre de terminal MSYS2). Si vous devez spécifier l'Audiosink, il y a deux choix principaux sur Windows: le plugin direct " -as directsoundsink
" plus ancien, et la plus moderne API de session audio Windows (WASAPI) " -as wasapisink
", qui prend en charge des options supplémentaires telles que des options supplémentaires telles que des options supplémentaires telles que
uxplay -as 'wasapisink device="<guid>"'
où <guid>
spécifie un périphérique audio disponible par son GUID, qui peut être trouvé en utilisant " gst-device-monitor-1.0 Audio
": <guid>
a une forme comme {0.0.0.00000000}.{98e35b2b-8eba-412e-b840-fd2c2492cf44}
. Si " device
" n'est pas spécifié, le périphérique audio par défaut est utilisé.
Si vous souhaitez spécifier la pose des vidéos à l'aide de l'option -vs <videosink>
, certains choix pour <videosink>
sont d3d11videosink
, d3dvideosink
, glimagesink
, gtksink
.
-vs "d3d11videosink fullscreen-toggle-mode=property fullscreen=true"
, ou obtenir la possibilité de faire entrer et de sortir du mode plein écran en utilisant le clé de clé alt-entrée combinaison avec l'option -vs "d3d11videosink fullscreen-toggle-mode=alt-enter"
. Pour plus de commodité, ces options seront ajoutées si simplement -vs d3d11videosink
avec ou sans l'option complète "-fs" est utilisée. (Les utilisateurs de Windows peuvent souhaiter ajouter " vs d3d11videosink
" (pas initial " -
") au fichier d'options de démarrage UXPlay; voir "man uxplay" ou "uxplay -h".) L'exécutable uxplay.exe peut également être exécuté sans l'environnement MSYS2, dans le terminal Windows, avec C:msys64mingw64binuxplay
.
Possibilités :
-
" caractères) dans le fichier de démarrage UxPlay (soit donné par la variable d'environnement $UXPLAYRC
, ou ~/.uxplayrc
ou ~/.config/uxplayrc
); Les lignes commençant par " #
" sont traitées comme des commentaires et ignorées. Les options de ligne de commande remplacent les options dans le fichier de démarrage.-n server_name (par défaut: uxplay); Server_name @ hostname sera le nom qui apparaît en offrant des services AirPlay à votre iPad, iPhone, etc., où le nom d'hôte est le nom du serveur exécutant Uxplay. Ce sera également le nom illustré ci-dessus de la fenêtre Affichage du miroir (X11).
-nh n'ajoutez pas "@ hostname " à la fin du nom du serveur AirPlay.
-H265 Activer la prise en charge "ScreenMultiCoDec" (AirPlay "Fonctionne" Bit 42) pour accepter la vidéo H265 (4K / HEVC) en plus de la vidéo H264 (1080p) en mode d'écran-miroir. Lorsque cette option est utilisée, deux "pipelines vidéo" (un pour H264, un pour H265) sont créés. Si des plugins GStreamer dans le pipeline sont spécifiques à H264 ou H265, la version correcte sera utilisée dans chaque pipeline. Une connexion Ethernet client câblée est préférée au WiFi pour la vidéo 4K, et peut être exigée par le client. Seuls les appareils Apple récents (Mac M1 / M2 ou iPads, et certains iPhones) peuvent envoyer une vidéo H265 si une résolution "-s wxh" avec h> 1080 est demandée. L'option "-H265" modifie la résolution par défaut (option "-s") de 1920x1080 à 3840x2160, et laisse le cadres maximum par défaut (option "-fps") à 30 ips.
-pin [nnnn] : (depuis V1.67) Utilisez l'authentification "PIN" de style Apple (pun) lorsqu'un nouveau client se connecte pour la première fois: un code PIN à quatre chiffres s'affiche sur le terminal, et le client L'écran affiche une invite de connexion pour que cela soit entré. Lorsque "-pin" est utilisé par lui-même, un nouveau code PIN aléatoire est choisi pour chaque authentification; Si "-pin nnnn" (par exemple, "-pin 3939") est utilisé, cela définira un code fixe immuable. L'authentification ajoute le serveur à la liste des "serveurs de confiance" du client et que le client n'aura pas besoin de réautoriser à condition que les clés publiques du client et du serveur restent inchangées. (Par défaut depuis V1.68, la clé publique du serveur est générée à partir de l'adresse MAC, qui peut être modifiée avec l'option -M; voir l'option -Key pour une autre méthode de génération de clés). (Ajoutez une ligne "PIN" dans le fichier de démarrage UXPlay si vous souhaitez que le serveur UXPlay utilise le protocole d'authentification PIN).
-Reg [ nom de fichier ] : (depuis v1.68). Si "-pin" est utilisé, cette option maintient un registre de "Clients de confiance" PIN-Authenticated dans $ home / .uxplay.register (ou éventuellement, dans le nom de fichier ). Sans cette option, les clients renvoyés qui sautent l'authentification PIN sont fiables et ne sont pas vérifiés. Cette option peut être utile si UxPlay est utilisé dans un environnement plus public, pour enregistrer les détails du client; Le registre est du texte, une ligne par client, avec la clé publique du client (format de base-64), l'ID de périphérique et le nom du périphérique; Commentant (avec "#") ou supprimant une ligne dérégiste le client correspondant (voir Options -restrict, -block, -Awlow pour plus de moyens de contrôler l'accès au client). (Ajoutez une ligne "Reg" dans le fichier de démarrage si vous souhaitez utiliser cette fonction.)
-vsync [x] (en mode miroir :) Cette option ( maintenant la valeur par défaut ) utilise des horodatages pour synchroniser l'audio avec la vidéo sur le serveur, avec un retard audio facultatif dans les millisecondes (décimales) ( x = "20,5" signifie 0,0205 secondes de retard: Des retards positifs ou négatifs inférieurs à une seconde sont autorisés.) Il est nécessaire sur des systèmes à faible puissance tels que Raspberry Pi sans décodage vidéo matériel.
-vsync no (en mode miroir :) Cela désactive la synchronisation audio-vidéo basée sur l'horodatage, restaurant le comportement par défaut avant UXPlay-1.64. Les systèmes de bureau standard semblent bien fonctionner sans utiliser d'horodatage: ce mode est approprié pour le "streaming en direct", comme l'utilisation d'UxPlay comme deuxième moniteur pour un ordinateur Mac, ou la surveillance d'une webcam; Avec lui, aucune trame vidéo n'est abandonnée.
-Async [x] (en mode audio uniquement (ALAC) :) Cette option utilise des horodatages pour synchroniser l'audio sur le serveur avec une vidéo sur le client, avec un retard audio facultatif en millisecondes (décimal) ( x = "20,5" signifie 0,0205 Deux secondes: des retards positifs ou négatifs inférieurs à une seconde sont autorisés.) Parce que le client ajoute un délai vidéo pour tenir compte de la latence, le serveur en mode -Sync ajoute un délai audio équivalent, ce qui signifie que l'audio change comme une pause ou un changement de piste ne prendra pas effet immédiatement. Cela pourrait en principe être atténué en utilisant le paramètre de latence audio -al
pour modifier la latence (par défaut 0,25 seconde) que le serveur relève du client, mais à l'heure actuelle, cela ne semble pas avoir d'effet .
-async no . Il s'agit du comportement toujours par défaut en mode audio uniquement, mais cette option peut être utile comme une option de ligne de commande pour désactiver une option -async
définie dans un fichier de configuration "uxplayrc".
-DB Low [: High ] RESCALES L'ATTÉRATION DE CONTROL (GAIN) AIRPLAY VOLUME-CONTROL de -30DB: 0 dB à Low : 0dB ou Low : High . La limite inférieure faible doit être négative (atténuation); La limite supérieure élevée peut être le signe. (GStreamer restreint le volume-augmentation par élevé de sorte qu'il ne peut pas dépasser + 20 dB). Le rediffusion est "plat", de sorte que pour -db -50: 10, un changement d'atténuation de l'aérodrome par -7db est traduit en un -7 x (60/30) = -14db atténuation, et le volume maximum (AirPlay 0DB) est une augmentation de 10 dB, et Airplay -30DB deviendrait -50 dB. Notez que la valeur AirPlay minimum (-30db exactement) est traduite par "Mute".
-Taper fournit un profil de contrôle de volume d'air "effilé" (correspondant à celui appelé "Dasl-Tapering" dans Shairport-Sync): chaque fois la longueur du curseur de volume (ou le nombre de pas au-dessus de Mute, où 16 étapes = complet Le volume) est réduit de 50%, le volume perçu est réduit en deux (une atténuation de 10 dB). (Ceci est modifié à faibles volumes, pour utiliser le volume "non modéré" s'il est plus fort.)
-s wxh eg -s 1920x1080 (= "1080p"), les résolutions de largeur et de hauteur par défaut en pixels pour la vidéo H264. (La valeur par défaut devient 3840x2160 (= "4k") lorsque l'option -H265 est utilisée.) Il s'agit simplement d'une demande faite au client AirPlay, et ne sera peut-être pas la résolution finale que vous obtenez. W et H sont des nombres entiers avec quatre chiffres ou moins. Notez que la taille du pixel de hauteur est celle de contrôle utilisée par le client pour déterminer le format de streaming; La largeur est ajustée dynamiquement à la forme de l'image (portrait ou format paysage, selon la façon dont un iPad est maintenu, par exemple).
-s wxh @ r comme ci-dessus, mais informe également le client AirPlay sur le taux de rafraîchissement de l'écran de l'écran. La valeur par défaut est r = 60 (60 Hz); R doit être un nombre total inférieur à 256.
-o active une option "surestinée" pour la fenêtre d'affichage. Cela réduit la résolution de l'image en utilisant certains des pixels demandés par l'option -s wxh (ou leurs valeurs par défaut 1920x1080) en ajoutant un cadre limite vide de pixels non utilisés (qui serait perdu dans un écran complet affiché par gstreamer). Recommandation: n'utilisez pas cette option à moins qu'il n'y ait une raison particulière de l'utiliser.
-FS utilise le mode plein écran, mais fonctionne uniquement avec X11, Wayland, Vaapi et D3D11 (Windows).
-P vous permet de sélectionner les ports réseau utilisés par UXPlay (ceux-ci doivent être ouverts si le serveur est derrière un pare-feu). En lui-même, -p, les ports "hérités" TCP 7100, 7000, 7001, UDP 6000, 6001, 7011. -Pn (par exemple -p 35000) définit les ports TCP et UDP N, n + 1, n + 2. -p n1, n2, n3 (valeurs séparées par des virgules) définit chaque port séparément; -p N1, N2 Définit les ports N1, N2, N2 + 1. -p TCP N ou -P UDP N définit uniquement les ports TCP ou UDP. Les ports doivent être dans la plage [1024-65535].
Si l'option -p n'est pas utilisée, les ports sont choisis dynamiquement (au hasard), ce qui ne fonctionnera pas si un pare-feu s'exécute.
-AvDec Forces Utilisation du décodage H264 Logiciel à l'aide de l'élément GStreamer AVDEC_H264 (décodeur LiBav H264). Cette option devrait empêcher Autovideosink de choisir un plugin de vidéosink accéléré par le matériel tel que Vaapisink.
-VP Parser choisit l'élément d'analyse H264 du pipeline GStreamer, la valeur par défaut est H264Parse. L'utilisation de citations "..." permet d'ajouter des options.
-vd Decoder choisit l'élément de décodeur H264 du pipeline GStreamer, au lieu de la valeur par défaut "DecodeBin" qui le choisit pour vous. Le décodage du logiciel est effectué par AVDEC_H264; Divers décodeurs matériels incluent: VAAPIH264DEC, NVDEC, NVH264DEC, V4L2H264DEC (ceux-ci nécessitent que le matériel approprié soit disponible). L'utilisation de citations "..." permet à certains paramètres d'être inclus avec le nom du décodeur.
-VC Le convertisseur choisit l'élément VideoConverter du pipeline GSTERAMER, au lieu de la valeur par défaut "VideoConvert". Lors de l'utilisation du décodage du matériel Video4Linux2 par un GPU, -vc v4l2convert
utilisera également le GPU pour la conversion vidéo. L'utilisation de citations "..." permet à certains paramètres d'être inclus avec le nom du convertisseur.
-vs Videosink choisit le grestamer videosink, au lieu de la valeur par défaut "autovideosink" qui le choisit pour vous. Certains choix de vidéosink sont: XimagesInk, XvimagesInk, Vaapisink (pour Intel Graphics), Gtksink, GlimagesInk, WaylandSink, Osxvideosink (pour MacOS), KMSSInk (pour les systèmes sans X11, comme Raspberry Pi OS Lite) ou FPSDisplaySink (qui montre le rédacteur en cours fps). L'utilisation de citations "..." permet à certains paramètres d'être inclus avec le nom de la videosink. Par exemple, le mode plein écran est pris en charge par le plugin Vaapisink et est obtenu en utilisant -vs "vaapisink fullscreen=true"
; Cela fonctionne également avec waylandsink
. La syntaxe de ces options est spécifique à un plugin donné (voir la documentation GStreamer), et certains choix de vidéosinques pourraient ne pas fonctionner sur votre système.
-vs 0 supprime l'affichage de la vidéo en streamine. En mode miroir, l'écran du client est toujours reflété à un taux réduit de 1 trame par seconde, mais n'est pas rendu ou affiché. Cette option doit toujours être utilisée si le serveur est "sans tête" (sans écran attaché pour afficher la vidéo), et uniquement utilisé pour rendre l'audio, qui sera un audio comprimé AAC en mode miroir avec vidéo non sensible et de qualité supérieure de qualité Alac de qualité supérieure Audio Apple Lossless en mode AirPlay audio uniquement.
-v4L2 Paramètres vidéo pour le décodage vidéo H264 H264 dans le GPU par Video4Linux2. Équivalent à -vd v4l2h264dec -vc v4l2convert
.
-BT709 Une solution de contournement pour la défaillance de l'ancien plugin Video4Linux2 pour reconnaître l'utilisation par Apple d'une variante "Couleur complète" inhabituelle (mais autorisée) de la norme de couleur BT709 pour la télévision numérique. Ce n'est plus nécessaire par GStreamer-1.20.4 et les back-sports.
-rpi équivalent à "-v4l2" (non valide pour Raspberry Pi Model 5, et supprimé dans Uxplay 1.67)
-rpigl équivalent à "-rpi -vs glimagesink". (Supprimé depuis uxplay 1.67)
-rpifb équivalent à "-rpi -vs kmssink" (supprimé depuis uxplay 1.67)
-rpiwl équivalent à "-rpi -vs waylandsink". (Supprimé depuis uxplay 1.67)
-As Audiosink choisit le GSTREAMER Audiosink, au lieu de laisser AutoAudiosink le choisir pour vous. Certains choix d'Audiosink sont: Pulsesink, Alsasink, Pipewiresink, Osssink, Oss4Sink, Jackaudiosink, Osxaudiosink (pour macOS), Wasapisink, DirectSoundsink (pour Windows). L'utilisation de devis "..." pourrait permettre certains paramètres facultatifs (par exemple -as "alsasink device=..."
pour spécifier un périphérique de sortie non défaut). La syntaxe de ces options est spécifique à un plugin donné (voir la documentation GStreamer), et certains choix d'Audiosink peuvent ne pas fonctionner sur votre système.
-As 0 (ou juste -A ) supprime le jeu de l'audio en streaming, mais affiche une vidéo en streamine.
-Al x spécifie une latence audio x en (décimal) secondes en audio uniquement (ALAC), qui est signalée au client. Les valeurs dans la plage [0,0, 10,0] secondes sont autorisées et seront converties en un nombre entier de microsecondes. La valeur par défaut est de 0,25 sec (250000 USEC). (Cependant, le client semble ignorer cette latence signalée, donc cette option semble non fonctionnelle.)
-ca FileName fournit un fichier (où le nom de fichier peut inclure un chemin complet) utilisé pour la sortie de "Cover Art" (de la musique Apple, etc. ) en mode ALAC audio uniquement. Ce fichier est écrasé avec la dernière couverture à son arrivée. L'art de la couverture (format JPEG) est jeté si cette option n'est pas utilisée. Utilisez avec une visionneuse d'image qui recharge l'image si elle change, ou régulièrement ( par exemple une fois par seconde.). Pour y parvenir, exécutez " uxplay -ca [path/to/]filename &
" en arrière-plan, puis exécutez la visionneuse d'image au premier plan. Exemple, en utilisant feh
comme visionneuse: exécutez " feh -R 1 [path/to/]filename
" (dans la même fenêtre de terminal dans laquelle Uxplay a été mis en arrière-plan). Pour arrêter, utilisez ctrl-C fg ctrl-C
pour terminer la visionneuse d'images, apportez