Nota: La transmisión de audio en varias habitaciones AirPlay2 no es compatible: use shairport-sync para eso.
.
Instale uxplay en sistemas Linux basados en Debian con " sudo apt install uxplay
"; en FreeBSD con " sudo pkg install uxplay
". También disponible en sistemas basados en Arch a través de AUR. Desde la versión 1.66, uxplay ahora también está empaquetado en formato RPM por Fedora 38 (" sudo dnf install uxplay
").
Para otras distribuciones basadas en RPM que aún no han empaquetado UxPlay, ahora se proporciona un "archivo de especificaciones" de RPM uxplay.spec con versiones recientes (consulte sus "Activos"), y también se puede encontrar en el directorio principal de fuentes de UxPlay. Consulte la sección sobre el uso de este archivo de especificaciones para crear un paquete RPM instalable.
Después de la instalación:
(En Linux y *BSD): si hay un firewall activo en el servidor que aloja UxPlay, asegúrese de que el puerto de red predeterminado (UDP 5353) para consultas mDNS/DNS-SD esté abierto (consulte Solución de problemas a continuación para obtener más detalles); También abra tres puertos UDP y tres TCP para Uxplay, y use la opción "uxplay -p" (ver " man uxplay
" o " uxplay -h
").
Incluso si instala el paquete binario uxplay precompilado de su distribución, es posible que necesite leer las instrucciones a continuación para ejecutar UxPlay para ver cuál de los paquetes de complementos GStreamer de su distribución también debe instalar.
Para el modo de solo audio (Apple Music, etc.), la mejor calidad se obtiene con la opción "uxplay -async", pero luego iOS impone una latencia de 2 segundos.
Agregue cualquier opción de UxPlay que desee utilizar como predeterminada a un archivo de inicio ~/.uxplayrc
(consulte " man uxplay
" o " uxplay -h
" para conocer el formato y otras ubicaciones posibles). En particular, si su sistema utiliza sistemas de audio PipeWire o video Wayland, es posible que desee agregar "as pipewiresink" o "vs waylandsink" como valores predeterminados al archivo. (La salida de los comandos de terminal "ps waux | grep pulse" o "pactl info" contendrá "pipewire" si su sistema Linux/BSD lo usa).
En Raspberry Pi: si usa Ubuntu 22.10 o anterior, GStreamer debe estar parcheado para usar la decodificación de video por hardware mediante la GPU Broadcom (también recomendado pero opcional para el sistema operativo Raspberry Pi (Bullseye): use la opción " uxplay -bt709
" si no usa el parche).
Para compilar (fácilmente) la última versión de UxPlay desde el código fuente, consulte la sección Obtención de UxPlay.
Este proyecto es un servidor Unix AirPlay2 Mirror de código abierto GPLv3 para Linux, macOS y *BSD. Inicialmente fue desarrollado por antimof usando código de RPiPlay basado en OpenMAX, que a su vez deriva de AirplayServer, shairplay y playfair. (El sitio antimof ya no participa en el desarrollo, pero publica periódicamente actualizaciones extraídas del nuevo sitio principal de UxPlay).
UxPlay se prueba en varios sistemas, incluidos (entre otros) Debian (10 "Buster", 11 "Bullseye", 12 "Bookworm"), Ubuntu (20.04 LTS, 22.04 LTS, 23.04 (también derivados de Ubuntu, Linux Mint, Pop! _OS), Red Hat y clones (Fedora 38, Rocky Linux 9.2), openSUSE Leap 15.5, Mageia 9, OpenMandriva "ROME", PCLinuxOS, Arch Linux, Manjaro y debería ejecutarse en cualquier sistema Linux. También probado en macOS Catalina y Ventura (Intel) y Sonoma (M2), FreeBSD 14.0, Windows 10 y 11 (64 bits).
En Raspberry Pi 4 modelo B, se prueba en Raspberry Pi OS (Bullseye y Bookworm) (32 y 64 bits), Ubuntu 22.04 LTS y 23.04, Manjaro RPi4 23.02 y (sin decodificación de video por hardware) en openSUSE 15.5. También probado en Raspberry Pi Zero 2 W, 3 modelo B+ y ahora 5.
Su uso principal es actuar como un AppleTV para duplicar la pantalla (con audio) de clientes iOS/iPadOS/macOS (iPhone, iPod Touch, iPad, computadoras Mac) en la pantalla del servidor de un host que ejecuta Linux, macOS u otro sistema Unix. (y ahora también Microsoft Windows). UxPlay admite el protocolo AirPlay2 de Apple mediante el "Protocolo heredado", pero faltan algunas funciones. (Los detalles de lo que se sabe públicamente sobre el protocolo AirPlay 2 de Apple se pueden encontrar aquí, aquí y aquí; consulte también pyatv, que podría ser un recurso para agregar protocolos modernos). Si bien no hay garantía de que futuras versiones de iOS sigan admitiendo el "Protocolo heredado", ", iOS 17 continúa siendo compatible.
El servidor UxPlay y su cliente deben estar en la misma red de área local, en la que también se está ejecutando un servidor Bonjour/Zeroconf mDNS/DNS-SD (sólo el servicio DNS-SD "Service Discovery" es estrictamente necesario, no es necesario que el red local también será del tipo ".local" basado en mDNS). En servidores Linux y BSD Unix, esto suele ser proporcionado por Avahi, a través del servicio avahi-daemon, y está incluido en la mayoría de las distribuciones de Linux (este servicio también puede ser proporcionado por servidores macOS, iOS o Windows).
Las conexiones al servidor UxPlay por parte de clientes iOS/MacOS se pueden iniciar tanto en el modo AirPlay Mirror (que transmite audio AAC comprimido con pérdida mientras se refleja la pantalla del cliente) como en el modo AirPlay Audio alternativo que transmite audio Apple Lossless (ALAC) sin duplicación de pantalla. En el modo Audio , los metadatos se muestran en el terminal uxplay; si se utiliza la opción -ca <name>
de UxPlay, la portada adjunta también se envía a un archivo <name>
que se actualiza periódicamente. y se puede ver con un visor de gráficos (recargable) de su elección. Es posible cambiar entre los modos Espejo y Audio durante una conexión activa: en el modo Espejo , detenga la duplicación (o cierre la ventana de espejo) e inicie una conexión en modo Audio , vuelva a cambiar. al iniciar una conexión en modo Espejo , la visualización de la portada se detiene/reinicia cuando sale/vuelve a ingresar al modo Audio ;
Tenga en cuenta que UxPlay no puede descifrar el video-DRM de Apple (como se encuentra en el contenido de la "aplicación Apple TV" en el cliente) y la aplicación Apple TV no se puede ver usando el modo AirPlay Mirror de UxPlay (solo se transmitirá el audio desprotegido, en AAC). formato), pero UxPlay transmitirá contenido de video y audio de aplicaciones sin DRM como la "aplicación YouTube" en modo Espejo.
Como UxPlay no admite actualmente la transmisión de video AirPlay que no sea Mirror (donde el cliente controla un servidor web en el servidor AirPlay que recibe directamente contenido HLS para evitar que el cliente lo decodifique y vuelva a codificar), use el ícono de video AirPlay en aplicaciones como la aplicación YouTube solo enviarán audio (en formato ALAC sin pérdidas) sin el vídeo que lo acompaña (hay planes para admitir vídeo HLS en futuras versiones de UxPlay)
UxPlay utiliza "complementos" de GStreamer para renderizar audio y vídeo. Esto significa que el vídeo y el audio son compatibles "listos para usar", utilizando una variedad de complementos. AirPlay transmite vídeo en formato h264: la decodificación de gstreamer es independiente de los complementos y utiliza decodificadores h264 de hardware GPU acelerados si están disponibles; de lo contrario, se utiliza la decodificación de software.
VAAPI para gráficos integrados Intel y AMD, NVIDIA con controlador de código abierto "Nouveau"
Con una GPU Intel o AMD, es preferible la decodificación de hardware con el complemento VAAPI gstreamer de código abierto. Los controladores "Nouveau" de código abierto para gráficos NVIDIA también son, en principio, compatibles: consulte aquí, pero esto requiere que VAAPI se complemente con firmware extraído de los controladores propietarios de NVIDIA.
NVIDIA con controladores propietarios
El complemento nvh264dec
(incluido en gstreamer1.0-plugins-bad desde GStreamer-1.18.0) se puede utilizar para la decodificación de video acelerada en la GPU NVIDIA después de instalar el controlador CUDA libcuda.so
de NVIDIA. Para GStreamer-1.16.3 o anterior, el complemento se llama nvdec
y debe ser creado por el usuario.
Compatibilidad con Video4Linux2 para decodificación de hardware h264 en Raspberry Pi (Pi 4B y anteriores)
Las computadoras Raspberry Pi (RPi) (probadas en Pi 4 Modelo B) ahora pueden ejecutar UxPlay usando decodificación de video por software, pero se prefiere la decodificación h264/h265 acelerada por hardware mediante firmware en la GPU Broadcom 2835 de Pi. UxPlay accede a esto utilizando el complemento GStreamer-1.22 Video4Linux2 (v4l2); Utiliza el códec bcm2835 del módulo del kernel de Linux fuera de línea principal mantenido por Raspberry Pi, hasta ahora solo incluido en el sistema operativo Raspberry Pi, y otras dos distribuciones (Ubuntu, Manjaro) disponibles con Raspberry Pi Imager. (Para GStreamer < 1.22, consulte UxPlay Wiki) .
(Nuevo): Compatibilidad con decodificación de hardware h265 (HEVC) en Raspberry Pi (Pi 4 modelo B y Pi 5)
El apoyo está presente, pero hasta el momento no se han obtenido resultados satisfactorios. Pi modelo 5 solo proporciona decodificación acelerada por hardware (GPU) para video h265, pero no H264, ya que su CPU es lo suficientemente potente para una decodificación satisfactoria de software H264.
La licencia GPLv3 de UxPlay no tiene una "excepción GPL" agregada que permita explícitamente distribuirla en forma compilada cuando se vincula a versiones de OpenSSL anteriores a la v. 3.0.0 (las versiones anteriores de OpenSSL tienen una cláusula de licencia incompatible con la GPL a menos que OpenSSL pueda ser considerada como una "Biblioteca del sistema", que está en *BSD). Muchas distribuciones de Linux tratan a OpenSSL como una "Biblioteca del sistema", pero algunas (por ejemplo, Debian) no lo hacen: en este caso, el problema se resuelve vinculándolo con OpenSSL-3.0.0 o posterior.
Descargue y descomprima UxPlay-master.zip, o (si git está instalado): "git clone https://github.com/FDH2/UxPlay". También puede descargar una versión reciente o anterior que figura en Versiones.
(Adapte estas instrucciones para Linux o *BSD no basados en Debian; para macOS, consulte las instrucciones específicas a continuación). Consulte Solución de problemas a continuación para obtener ayuda ante cualquier dificultad.
Necesita un compilador C/C++ (por ejemplo, g++) con las bibliotecas de desarrollo estándar instaladas. Los sistemas basados en Debian proporcionan un paquete "build-essential" para usar en la compilación de software. También necesita pkg-config: si no lo encuentra " which pkg-config
", instale pkg-config o su reemplazo pkgconf. También asegúrese de que cmake>=3.5 esté instalado: " sudo apt install cmake
" (agregue build-essential
y pkg-config
(o pkgconf
) a esto si es necesario).
Asegúrese de que su distribución proporcione OpenSSL 1.1.1 o posterior y libplist 2.0 o posterior. (Esto significa sistemas basados en Debian 10 "Buster" (por ejemplo, Ubuntu 18.04) o más nuevos; en sistemas Debian 10 "libplist" es una versión anterior, necesita "libplist3".) Si no es así, es posible que deba compilar e instalar estos desde la fuente (consulte las instrucciones al final de este README).
Si tiene una instalación OpenSSL no estándar, es posible que necesite configurar la variable de entorno OPENSSL_ROOT_DIR ( por ejemplo , " export OPENSSL_ROOT_DIR=/usr/local/lib64
" si es ahí donde está instalado). De manera similar, para instalaciones de GStreamer no estándar (o múltiples), establezca la variable de entorno GSTREAMER_ROOT_DIR en el directorio que contiene el directorio ".../gstreamer-1.0/" de la instalación de gstreamer que UxPlay debería usar (si es, por ejemplo, "~ /my_gstreamer/lib/gstreamer-1.0/", establezca esta ubicación con " export GSTREAMER_ROOT_DIR=$HOME/my_gstreamer/lib
").
En una ventana de terminal, cambie los directorios al directorio fuente del código fuente descargado ("UxPlay-*", "*" = "master" o la etiqueta de versión para descargas de archivos zip, "UxPlay" para descargas de "git clone"), luego siga las instrucciones a continuación:
Nota: De forma predeterminada, UxPlay se creará con optimización para la computadora en la que se basa; cuando este no sea el caso, como cuando está empaquetando una distribución, use la opción cmake -DNO_MARCH_NATIVE=ON
.
Si usa X11 Windows en Linux o *BSD, y desea activar/desactivar el modo de pantalla completa presionando una tecla (F11 o Alt_L+Enter), UxPlay debe construirse con una dependencia de X11. A partir de UxPlay-1.59, esto se hará de forma predeterminada SI las bibliotecas de desarrollo X11 están instaladas y detectadas. Instálelos con " sudo apt install libx11-dev
". Si se detecta GStreamer < 1.20, también se realizará una solución necesaria para las aplicaciones para compartir pantalla ( por ejemplo , Zoom).
-DNO_X11_DEPS=ON
.sudo apt install libssl-dev libplist-dev
". ( a menos que necesite compilar OpenSSL y libplist desde la fuente ).sudo apt install libavahi-compat-libdnssd-dev
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
. (* Omita si creó Gstreamer desde la fuente )cmake .
( Para una compilación más limpia, que es útil si modifica la fuente, reemplácela por " mkdir build; cd build; cmake ..
": luego puede eliminar el contenido del directorio build
si es necesario, sin afectar la fuente). agregue aquí cualquier opción de cmake " -D
" según sea necesario (por ejemplo, -DNO_X11_DEPS=ON
o -DNO_MARCH_NATIVE=ON
).make
sudo make install
(después puedes desinstalar con sudo make uninstall
en el mismo directorio en el que se ejecutó). Esto instala el archivo ejecutable " uxplay
" en /usr/local/bin
(e instala una página de manual en algún lugar estándar como /usr/local/share/man/man1
y archivos README en algún lugar como /usr/local/share/doc/uxplay
). (Si "man uxplay" falla, verifique si $MANPATH está configurado: si es así, la ruta a la página de manual (generalmente /usr/local/share/man/) debe agregarse a $MANPATH .) El ejecutable de uxplay también puede ser se encuentra en el directorio de compilación después del proceso de compilación, si desea realizar una prueba antes de la instalación (en cuyo caso primero se deben instalar los complementos de GStreamer).
**Para aquellos con distribuciones basadas en RPM, también está disponible un archivo de especificaciones de RPM uxplay.spec: consulte Creación de un paquete rpm instalable.
Red Hat, o clones como CentOS (ahora continúa como Rocky Linux o Alma Linux): (sudo dnf install, o sudo yum install) openssl-devel libplist-devel avahi-compat-libdns_sd-devel gstreamer1-devel gstreamer1-plugins-base- devel (+libX11-devel para X11 en pantalla completa) (algunos de estos pueden estar en el complemento "CodeReady" repositorio, llamado "PowerTools" por los clones)
Mageia, PCLinuxOS, OpenMandriva: Igual que Red Hat, excepto por los cambios de nombre: (Mageia) "gstreamer1.0-devel", "gstreamer-plugins-base1.0-devel"; (OpenMandriva) "libopenssl-devel", "gstreamer-devel", "libgst-plugins-base1.0-devel". PCLinuxOS: igual que Mageia, pero usa synaptic (o apt) como administrador de paquetes.
openSUSE: (sudo zypper install) libopenssl-3-devel (anteriormente libopenssl-devel) libplist-2_0-devel (anteriormente libplist-devel) avahi-compat-mDNSResponder-devel gstreamer-devel gstreamer-plugins-base-devel (+ libX11- desarrollo para pantalla completa X11).
Arch Linux ( también disponible como paquete en AUR ): (sudo pacman -Syu) openssl libplist avahi gst-plugins-base.
FreeBSD: (sudo pkg install) libplist gstreamer1. También se debe instalar avahi-libdns o mDNSResponder para proporcionar la biblioteca dns_sd. OpenSSL ya está instalado como biblioteca del sistema.
Los constructores de RPM por primera vez deben instalar primero los paquetes rpm-build y rpmdevtools, luego crear el árbol rpmbuild con " rpmdev-setuptree
". Luego descargue y copie uxplay.spec en ~/rpmbuild/SPECS
. En ese directorio, ejecute " rpmdev-spectool -g -R uxplay.spec
" para descargar el archivo fuente correspondiente uxplay-*.tar.gz
en ~/rpmbuild/SOURCES
("rpmdev-spectool" también puede llamarse simplemente "spectool" ); luego ejecute " rpmbuild -ba uxplay.spec
" (deberá instalar las dependencias requeridas que esto informa). Esto debería crear el paquete RPM uxplay en un subdirectorio de ~/rpmbuild/RPMS
. ( uxplay.spec se prueba en Fedora 38, Rocky Linux 9.2, openSUSE Leap 15.5, Mageia 9, OpenMandriva, PCLinuxOS; se puede modificar fácilmente para incluir listas de dependencias para otras distribuciones basadas en RPM).
A continuación, instale los complementos de GStreamer necesarios con sudo apt install gstreamer1.0-<plugin>
. Los valores de <plugin>
requeridos son:
Las distribuciones basadas en Debian dividen algunos de los paquetes de complementos en partes más pequeñas: algunas que también pueden ser necesarias incluyen " gl " para compatibilidad con OpenGL (esto proporciona el videoink "-vs gliimagesink", que puede ser muy útil en muchos sistemas (incluido Raspberry Pi ), y siempre debe usarse cuando se utiliza la decodificación h264/h265 mediante una GPU NVIDIA), " gtk3 " (que proporciona el disipador de videos "-vs gtksink") y " x " para compatibilidad con X11, aunque es posible que estos ya estén instalados; " vaapi " es necesario para la decodificación de vídeo h264 acelerada por hardware mediante gráficos Intel o AMD (pero no para su uso con NVIDIA que utilice controladores propietarios). Si el sonido no funciona, es posible que sea necesario instalar los complementos " alsa ", " pulseaudio " o " pipewire ", dependiendo de cómo esté configurado el audio.
En algunos casos, debido a problemas de patentes, la función del complemento libav avdec_aac necesaria para decodificar audio AAC en modo espejo no se proporciona en la distribución oficial: consígala en los repositorios comunitarios para esas distribuciones.
Red Hat, o clones como CentOS (ahora continúa como Rocky Linux o Alma Linux): Instale gstreamer1-libav gstreamer1-plugins-bad-free (+ gstreamer1-vaapi para gráficos Intel/AMD). En Fedora reciente, gstreamer1-libav pasa a llamarse gstreamer1-plugin-libav. Para obtener avdec_aac, instale paquetes desde rpmfusion.org : (obtenga ffmpeg-libs de rpmfusion; en RHEL o clones, pero no en Fedora reciente, obtenga también gstreamer1-libav desde allí).
Mageia, PCLinuxOS, OpenMandriva: Instale gstreamer1.0-libav gstreamer1.0-plugins-bad (+ gstreamer1.0-vaapi para gráficos Intel/AMD). En Mageia, para obtener avdec_aac, instale ffmpeg desde el repositorio "contaminado" (que también proporciona un gstreamer1.0-plugins-bad más completo).
openSUSE: Instale gstreamer-plugins-libav gstreamer-plugins-bad (+ gstreamer-plugins-vaapi para gráficos Intel/AMD). Para obtener avdec_aac, instale los paquetes libav* para openSUSE de Packman "Essentials" ; Recomendación: después de agregar el repositorio Packman, use la opción en la administración de software de YaST para cambiar todos los paquetes del sistema multimedia a Packman).
Arch Linux Instale gst-plugins-good gst-plugins-bad gst-libav (+ gstreamer-vaapi para gráficos Intel/AMD).
FreeBSD: Instale gstreamer1-libav, gstreamer1-plugins, gstreamer1-plugins-* (* = core, good, bad, x, gtk, gl, vulkan, pulse, v4l2, ...), (+ gstreamer1-vaapi para Intel/ Gráficos AMD).
Desde UxPlay-1.64, UxPlay se puede iniciar con opciones leídas desde un archivo de configuración, que será el primero que se encuentre entre (1) un archivo con una ruta dada por la variable de entorno $UXPLAYRC
, (2) ~/.uxplayrc
en la página de inicio del usuario. directorio ("~"), (3) ~/.config/uxplayrc
. El formato es una opción por línea, omitiendo el "-"
inicial de la opción de línea de comando. Las líneas del archivo de configuración que comienzan con "#"
se tratan como comentarios y se ignoran.
Ejecute uxplay en una ventana de terminal . En algunos sistemas, puede especificar el modo de pantalla completa con la opción -fs
, o alternar entre y fuera del modo de pantalla completa con F11 o (manteniendo presionada la tecla Alt izquierda)+Intro. Utilice Ctrl-C (o cierre la ventana) para finalizarlo cuando haya terminado. Si el panel desplegable "Duplicación de pantalla" del cliente iOS no ve el servidor UxPlay, verifique que su servidor DNS-SD (generalmente avahi-daemon) se esté ejecutando: haga esto en una ventana de terminal con systemctl status avahi-daemon
. Si esto muestra que avahi-daemon no se está ejecutando, contrólelo con sudo systemctl [start,stop,enable,disable] avahi-daemon
(en sistemas que no son systemd, como *BSD, use sudo service avahi-daemon [status, start, stop, restart, ...]
). Si se ve UxPlay, pero el cliente no logra conectarse cuando se selecciona, puede haber un firewall en el servidor que impide que UxPlay reciba solicitudes de conexión del cliente a menos que se abran algunos puertos de red: si hay un firewall activo, abra también el puerto UDP 5353 (para consultas mDNS) que necesita Avahi . Consulte Solución de problemas a continuación para obtener ayuda con este u otros problemas.
A diferencia de un Apple TV, el servidor UxPlay no requiere de forma predeterminada que los clientes se "emparejen" inicialmente con él mediante un código PIN mostrado por el servidor (después de lo cual el cliente "confía" en el servidor y no necesita repetir esto). Desde v1.67, Uxplay ofrece dicha "autenticación de pin" como opción: consulte " -pin
" y " -reg
" en Uso para obtener más detalles, si desea utilizarlo. Algunos clientes con MDM (Administración de dispositivos móviles, a menudo presente en dispositivos propiedad del empleador) deben usar autenticación mediante pin: UxPlay proporcionará esto incluso cuando se ejecute sin la opción de pin.
De forma predeterminada, UxPlay está bloqueado para su cliente actual hasta que ese cliente interrumpe la conexión; desde UxPlay-1.58, la opción -nohold
modifica este comportamiento de modo que cuando un nuevo cliente solicita una conexión, elimina el cliente actual y toma el control. UxPlay 1.66 introduce un mecanismo ( -restrict
, -allow <id>
, -block <id>
) para controlar qué clientes pueden conectarse, utilizando su "ID de dispositivo" (que en los dispositivos Apple parece ser inmutable).
En el modo Espejo, GStreamer puede elegir entre dos métodos para reproducir video con el audio que lo acompaña: antes de UxPlay-1.64, las transmisiones de video y audio se reproducían lo antes posible después de su llegada (el método " sync=false " de GStreamer) , con un reloj interno GStreamer utilizado para intentar mantenerlos sincronizados. A partir de UxPlay-1.64, el otro método (el modo " sync=true " de GStreamer), que utiliza marcas de tiempo en las transmisiones de audio y video enviadas por el cliente, es el nuevo valor predeterminado . En hosts UxPlay de baja potencia de decodificación (como los modelos Raspberry Pi Zero W o 3 B+), esto eliminará cuadros de video que no se pueden decodificar a tiempo para reproducirse con el audio, lo que hará que el video se entrecorte, pero aún así esté sincronizado.
El método anterior que no elimina fotogramas de vídeo tardíos funcionó bien en sistemas más potentes y todavía está disponible con la opción UxPlay " -vsync no
"; este método está adaptado a la "transmisión en vivo" y puede ser mejor cuando se usa UxPlay como segundo monitor para una computadora Mac, por ejemplo, mientras que el nuevo método predeterminado basado en marca de tiempo es mejor para ver un video, para mantener los movimientos de los labios y las voces. sincronizado. (Sin el uso de marcas de tiempo, el video eventualmente quedará rezagado con respecto al audio si no se puede decodificar lo suficientemente rápido: la decodificación de video acelerada por hardware ayudó a evitar esto anteriormente, cuando no se usaban marcas de tiempo).
-async
opción basada. (Un ejemplo podría ser si desea seguir las letras de Apple Music en el cliente mientras escucha un sonido superior en el servidor UxPlay). Esto retrasa el vídeo en el cliente para que coincida con el audio en el servidor, por lo que genera un ligero retraso antes de que una pausa o cambio de pista iniciado en el cliente tenga efecto en el audio reproducido por el servidor. El control de volumen de AirPlay atenúa el volumen (ganancia) hasta -30 dB: el rango de decibeles -30:0 se puede reescalar desde Bajo : 0 o Bajo : Alto , usando la opción -db
("-db Bajo " o "-db Bajo : Alto "), Bajo debe ser negativo. El cambio de escala es lineal en decibelios. Tenga en cuenta que el formato de audio de GStreamer "recortará" cualquier ganancia de audio superior a +20 dB, así que mantenga Alto por debajo de ese nivel. La opción -taper
proporciona un perfil de control de volumen de AirPlay "cónico" que algunos usuarios pueden preferir.
Las opciones -vsync y -async también permiten un ajuste opcional de retardo de audio positivo (o negativo) en milisegundos para un ajuste fino: -vsync 20.5
retrasa el audio en relación con el vídeo en 0,0205 segundos; un valor negativo lo adelanta.)
Es posible que descubra que el vídeo mejora con la configuración -fps 60, que permite que algunos vídeos se reproduzcan a 60 fotogramas por segundo. (Puedes ver qué velocidad de fotogramas se transmite realmente usando -vs fpsdisplaysink y/o -FPSdata). Al usar esto, debes usar la opción predeterminada de sincronización basada en marca de tiempo -vsync
.
Desde UxPlay-1.54, puede mostrar la "Cubierta" adjunta de fuentes como Apple Music en modo Solo audio (ALAC): ejecute " uxplay -ca <name> &
" en segundo plano, luego ejecute un visor de imágenes con recarga automática. característica: un ejemplo es "feh": ejecute " feh -R 1 <name>
" en primer plano; termine feh y luego Uxplay con " ctrl-C fg ctrl-C
".
De forma predeterminada, GStreamer utiliza un algoritmo para buscar el mejor "videodisipador" (término de GStreamer para un controlador de gráficos para mostrar imágenes) para usar. Puedes anular esto con la opción uxplay -vs <videosink>
. Los disipadores de video disponibles dependen de su sistema operativo y hardware de gráficos: use " gst-inspect-1.0 | grep sink | grep -e video -e Video -e image
" para ver qué hay disponible. Algunas posibilidades en Linux/*BSD son:
gliimagesink (OpenGL), waylandsink
xvimagesink , ximagesink (X11)
kmssink , fbdevsink (gráficos de consola sin X11)
vaapisink (para gráficos acelerados por hardware Intel/AMD); para gráficos de hardware NVIDIA (con CUDA), use gliimagesink combinado con " -vd nvh264dec
" (o "nvh264sldec", una nueva variante que se convertirá en "nvh264dec" en GStreamer-1.24).
Si el servidor es "sin cabeza" (sin monitor conectado, solo reproduce audio), use -vs 0
.
GStreamer también busca el mejor "audiosink"; anule su elección con -as <audiosink>
. Las opciones en Linux incluyen pulsesink, alsasink, pipewiresink, oss4sink; vea lo que está disponible con gst-inspect-1.0 | grep sink | grep -e audio -e Audio
.
Un problema común implica que GStreamer intente utilizar decodificación de video h264 de hardware acelerado incorrectamente configurado o ausente (por ejemplo, VAAPI). Pruebe " uxplay -avdec
" para forzar la decodificación de vídeo por software; Si esto funciona, puede intentar reparar la decodificación de video por hardware acelerada si lo necesita, o simplemente desinstalar el complemento GStreamer vaapi.
Consulte Uso para obtener más opciones de tiempo de ejecución.
Para video Framebuffer (para Raspberry Pi OS "Lite" y otras distribuciones que no sean X11), use el videoink KMS "-vs kmssink" (el videoink framebuffer de DirectFB "dfbvideosink" está roto en el Pi y tiene fallas de segmentación). En este caso, debes usar explícitamente la opción "-vs kmssink", ya que sin ella, autovideosink no encuentra el videosink correcto.
Raspberry Pi 5 no proporciona decodificación H264 por hardware (y no la necesita).
Pi Zero 2 W, 3 Modelo B+ y 4 Modelo B deben usar decodificación de hardware H264 mediante la GPU Broadcom, pero requiere un módulo de kernel fuera del convencional bcm2835_codec mantenido en el árbol del kernel de Raspberry Pi; Las distribuciones que se sabe que lo suministran incluyen Raspberry Pi OS, Ubuntu y Manjaro-RPi4. Utilice la decodificación de software (opción -avdec) si este módulo no está disponible.
Uxplay utiliza el complemento Video4Linux2 (v4l2) de GStreamer-1.22 y posteriores para acceder a la GPU, si se utiliza la decodificación H264 por hardware. Esto debería suceder automáticamente. Se puede utilizar la opción -v4l2, pero normalmente es mejor dejar que GStreamer encuentre el mejor canal de vídeo por sí solo.
En distribuciones más antiguas (GStreamer < 1.22), el complemento v4l2 necesita un parche: consulte UxPlay Wiki. El sistema operativo Raspberry Pi heredado (Bullseye) tiene un GStreamer-1.18.4 parcialmente parcheado que necesita la opción uxplay -bt709 (y no use -v4l2); En este caso, es mejor aplicar el parche completo de UxPlay Wiki.
Para el sistema operativo Raspberry Pi (Buster) de "doble legado", no existe ningún parche para GStreamer-1.14. En su lugar, primero cree un GStreamer-1.18.6 completamente nuevo desde el código fuente siguiendo estas instrucciones antes de compilar UxPlay.
Raspberry Pi 3 Modelo B+ con un sistema operativo de 32 bits también puede acceder a la GPU con el complemento GStreamer OMX (use la opción " -vd omxh264dec
"), pero esto no funciona con el firmware de Pi 4 Modelo B. La compatibilidad con OMX se eliminó del sistema operativo Raspberry Pi (Bullseye), pero está presente en Buster.
El video H265 (4K) es compatible con decodificación de hardware mediante la GPU Broadcom en los modelos Raspberry Pi 5, así como en Raspberry Pi 4 modelo B. Si bien GStreamer parece hacer uso de esta decodificación de hardware, la velocidad de renderizado satisfactoria de video 4K de UxPlay en Estos modelos de Raspberry Pi aún no se han logrado. Se requiere la opción "-h265" para activar el soporte h265. En este modo se prefiere una conexión Ethernet por cable (y puede ser requerida por el cliente).
Incluso con la decodificación de vídeo GPU, los modelos de menor potencia pueden eliminar algunos fotogramas para mantener el audio y el vídeo sincronizados mediante marcas de tiempo. En el sistema operativo Legacy Raspberry Pi (Bullseye), las "Opciones de rendimiento" de raspi-config permiten especificar cuánta memoria asignar a la GPU, pero esta configuración parece estar ausente en Bookworm (pero aún se puede configurar, por ejemplo, en 128 MB agregando una línea "gpu_mem=128" en /boot/config.txt). Un Pi Zero 2 W (que tiene 512 MB de memoria) funcionó bien cuando se probó en Bullseye o Bookworm Lite de 32 bits con 128 MB asignados a la GPU (el valor predeterminado parece ser 64 MB).
Las opciones básicas de uxplay para R Pi son uxplay [-vs <videosink>]
. La elección <videosink>
= glimagesink
a veces resulta útil. Con el compositor de video Wayland, use <videosink>
= waylandsink
. Con video framebuffer, use <videosink>
= kmssink
.
ssh user@remote_host
export DISPLAY=:0
nohup uxplay [options] > FILE &
El sonido y el vídeo se reproducirán en el host remoto; "nohup" mantendrá uxplay ejecutándose si se cierra la sesión ssh. La salida del terminal se guarda en ARCHIVO (que puede ser /dev/null para descartarla)
Nota: Una función de servidor nativo de AirPlay está incluida en MacOS 12 Monterey, pero está restringida al hardware reciente. UXPlay puede ejecutarse en sistemas MacOS más antiguos que no podrán ejecutar Monterey, o pueden ejecutar Monterey pero no AirPlay.
Estas instrucciones para macOS suponen que se instalan las herramientas de desarrollador de la línea de comandos XCode (si se instala Xcode, abra el terminal, escriba "sudo xcode-select --install" y acepte las condiciones).
También se supone que CMake> = 3.13 está instalado: esto se puede hacer con los administradores de paquetes MacPorts ( sudo port install cmake
), homebrew ( brew install cmake
) o una descarga de https://cmake.org/download/. También instale git
si lo usa para obtener UXPlay.
Siguiente instalar libplist y openssl-3.x. Tenga en cuenta que las versiones estáticas de estas bibliotecas se utilizarán en las compilaciones de macOS, para que puedan desinstalarse después de construir UXPlay, si lo desea.
Si usa HomeBrew: brew install libplist openssl@3
Si usa MacPorts: sudo port install libplist-devel openssl3
De lo contrario, construya liblist y openssl a partir de la fuente: consulte las instrucciones cerca del final de este readme; Requiere herramientas de desarrollo (AutoConf, Automake, Libtool, etc. ) para instalar.
A continuación, obtenga el último lanzamiento de MacOS de GStreamer-1.0.
Uso de GSTreamer "oficial" (recomendado tanto para MacPorts como para usuarios caseros) : instale la versión de Gstreamer para macOS en https://gstreamer.freedesktop.org/download/. (Esta versión contiene su propio PKG-Config, por lo que no tiene que instalar uno). Instale los paquetes GStreamer-1.0 y GStreamer-1.0-Devel. Después de descargar, haga clic en Cambiarlos para instalar (se instalan en /library/frameworks/gstreamer.framework). Los usuarios de HomeBrew o MacPorts no deben instalar (o deben desinstalar) el GStreamer suministrado por su Administrador de paquetes, si usan la versión "oficial".
Uso de HomeBrew's GStreamer : PKG-Config es necesario: ("Brew Instale PKG-Config Gstreamer"). Esto hace que una gran cantidad de paquetes adicionales sea instalado por Homebrew como dependencias. La instalación Homebrew Gstreamer se ha reelaborado recientemente en una sola "Fórmula" llamada gstreamer
, que ahora funciona sin necesidad de que se establezca GST_PLUGIN_PATH en el entorno. HomeBrew instala GStreamer a (HOMEBREW)/lib/gstreamer-1.0
Where (HOMEBREW)/*
IS /opt/homebrew/*
en Apple Silicon Macs, y /usr/local/*
en Intel Macs; No coloque ningún complemento adicional no homebreo (que se construya allí) allí, y en su lugar, configure GST_PLUGIN_PATH para señalar su ubicación (Homebrew no suministra un GStreamer completo, pero parece tener todo lo necesario para UXPlay).
Uso de GStreamer instalado desde MacPorts : no se recomienda esto, ya que actualmente el MacPorts Gstreamer es antiguo (v1.16.2), sin mantenimiento y está construido para usar X11:
(Si realmente desea usar el MacPorts GStreamer-1.16.2, instale pkgconf ("sudo puerto instalar pkgconf"), entonces "sudo puerto instalar gstreamer1-gst-plugins-base gstreamer1-gst-plugins-Good gstreamer1-gst-plugins -bad gstreamer1-gst-libav ". Para soporte X11 en macOS, compile uxplay usando una opción especial cmake -DUSE_X11=ON
, y ejecutarlo desde un terminal Xquartz con -vs ximagesink uxplay -s 800x600
Después de instalar GStreamer, cree e instale UXPlay: abra un terminal y cambie en el directorio de origen UXPlay ("UXPlay-Master" para descargas ZipFile, "UxPlay" para descargas "Git Clone") y construya/instalar con "CMake.; Hacer; sudo haz instalar "(igual que para Linux).
Ejecutar UXPlay mientras verifica las advertencias de Gstreamer (haz esto con "exportar gst_debug = 2" antes de ejecutar uxplay) revela que con el valor predeterminado (ya que uxplay 1.64) se usa de marcas de tiempo para la sincronización de video, se están dejando caer muchos marcos de video (solo en macos),,,, Quizás debido a otro error (sobre Videometa) que aparece en las advertencias de Gstreamer. Recomendación: use la nueva opción UXPlay "No TimeStamp" -vsync no
" (puede agregar una línea" VSYNC NO "en el archivo de configuración de UXPlayRC).
En MacOS con esta instalación de GStreamer, los únicos videos disponibles parecen ser GlimagegeLink (elección predeterminada hecha por AutovideOsink) y OSXVideOsink. El título de la ventana no muestra el nombre del servidor AirPlay, pero la ventana está visible para aplicaciones de intercambio de pantalla (por ejemplo, Zoom). El único Audiosink disponible parece ser Osxaudiosink.
La opción -nc siempre se usa, ya sea que se seleccione o no. Esta es una solución para un problema con los videos de Gstreamer en MacOS: si la tubería GStreamer se destruye mientras la ventana del espejo aún está abierta, se produce una Segfault.
En el caso de GlimageSink, la configuración de resolución "-S WXH" no afecta el tamaño de la ventana del espejo OpenGL (pequeño) (pequeño), pero la ventana se puede ampliar usando el mouse o la pista de seguimiento. Por el contrario, una ventana creada con "-VS OSXVideOsink" es inicialmente grande, pero tiene la relación de aspecto incorrecta (imagen estirada); En este caso, la relación de aspecto cambia cuando el ancho de la ventana se cambia arrastrando su lado; La opción -vs "osxvideosink force-aspect-ratio=true"
se puede usar para que la ventana tenga la relación de aspecto correcta cuando se abre por primera vez.
Descargue e instale Bonjour SDK para Windows v3.0 . Puede descargar el SDK sin ningún registro en Softpedia.com, o obtenerlo del sitio oficial de Apple https://developer.apple.com/download (Apple le hace registrarse como desarrollador para acceder a él desde su sitio). Esto debería instalar el Bonjour SDK como C:Program FilesBonjour SDK
.
(Esto es para ventanas de 64 bits; una compilación para ventanas de 32 bits debería ser posible, pero no se prueba). Se utilizará el entorno de compilación MSYS2 similar a UNIX: descargue e instale MSYS2 desde el sitio oficial https: // www .msys2.org/. Acepte la ubicación de instalación predeterminada C:mysys64
.
Los paquetes MSYS2 se instalan con una variante del Administrador de paquetes "Pacman" utilizado por Arch Linux. Abra un terminal "MSYS2 MINGW64" desde la pestaña MSYS2 en el menú Inicio de Windows y actualice la nueva instalación de MSYS2 con "Pacman -Syu". Luego instale el compilador MINGW-64 y CMake
pacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc
El compilador con todas las dependencias requeridas se instalará en el directorio MSYS64, con la ruta predeterminada C:/msys64/mingw64
. Aquí simplemente construiremos UXPlay a partir de la línea de comandos en el entorno MSYS2 (esto usa " ninja
" en lugar de " make
" para el sistema de compilación).
Descargue el último UXPlay de GitHub (para usar git
, instálelo con pacman -S git
, luego " git clone https://github.com/FDH2/UxPlay
") , luego instale las dependencias de UXPlay (OpenSSL ya está instalado con MSYS2):
pacman -S mingw-w64-x86_64-libplist mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base
Si está probando un sistema de compilación de Windows diferente, las versiones MSVC de GStreamer para Windows están disponibles en el sitio oficial de GStreamer, pero solo se ha probado la compilación MingW de 64 bits en MSYS2.
CD al directorio de origen UXPlay, luego " mkdir build
" y " cd build
". El proceso de compilación supone que el SDK de Bonjour está instalado en C:Program FilesBonjour SDK
. Si está en otro lugar, establezca la variable Enviroment Bonjour_Sdk_Home para señalar a su ubicación. Luego construya uxplay con
cmake ..
ninja
Suponiendo que no hay error en ninguno de estos, habrá construido el ejecutable UXPlay uxplay.exe en el directorio actual ("construir"). Las características "sudo make install" y "sudo make desinstall" ofrecidas en las otras compilaciones no están disponibles en Windows; En su lugar, el entorno MSYS2 tiene /mingw64/...
disponible, y puede instalar el ejecutable Uxplay.exe en C:/msys64/mingw64/bin
(más manzana y documentación en C:/msys64/mingw64/share/...
) con
cmake --install . --prefix /mingw64
Para poder ver la manzana, debe instalar el visor de la mano de la mano con " pacman -S man
".
Para ejecutar uxplay.exe, debe instalar algunos paquetes de complementos Gstreamer con pacman -S mingw-w64-x86_64-gst-<plugin>
, donde los requeridos tienen <plugin>
dado por
Otros posibles paquetes de complementos MSYS2 Gstreamer que puede usar se enumeran en los paquetes MSYS2.
También deberá otorgar permiso al ejecutable UXPlay UXPlay.exe para acceder a los datos a través del firewall de Windows. Se puede ofrecer automáticamente la opción de hacerlo cuando ejecuta UXPlay por primera vez, o es posible que deba hacerlo utilizando la configuración de Windows-> Actualización y seguridad-> Windows Security-> Firewall & Network Protection-> Permitir una aplicación a través del firewall . Si su protección contra el virus marca UXPlay.exe como "sospechosa" (pero sin una firma de malware verdadera), es posible que deba darle una excepción.
Ahora pruebe ejecutando " uxplay
" (en una ventana de terminal MSYS2). Si necesita especificar el Audiosink, hay dos opciones principales en Windows: el complemento DirectSound anterior " -as directsoundsink
" y el complemento API de la sesión de audio de Windows (WASAPI) más moderno " -as wasapisink
", que admite opciones adicionales como
uxplay -as 'wasapisink device="<guid>"'
Donde <guid>
especifica un dispositivo de audio disponible por su GUID, que se puede encontrar usando " gst-device-monitor-1.0 Audio
": <guid>
tiene una forma como {0.0.0.00000000}.{98e35b2b-8eba-412e-b840-fd2c2492cf44}
. Si no se especifica " device
", se utiliza el dispositivo de audio predeterminado.
Si desea especificar el videos en la opción Usando la opción -vs <videosink>
, algunas opciones para <videosink>
son d3d11videosink
, d3dvideosink
, glimagesink
, gtksink
.
-vs "d3d11videosink fullscreen-toggle-mode=property fullscreen=true"
, o obtener la capacidad de alternar y salir del modo Fullscreen utilizando la tecla ALT-Inter Combinación con la opción -vs "d3d11videosink fullscreen-toggle-mode=alt-enter"
. Por conveniencia, estas opciones se agregarán si solo se usa -vs d3d11videosink
con o sin la opción de pantalla completa "-fs". (Los usuarios de Windows pueden desear agregar " vs d3d11videosink
" (sin inicial " -
") al archivo de opciones de inicio de UXPlay; consulte "Man uxplay" o "uxplay -h".) El ejecutable uxplay.exe también se puede ejecutar sin el entorno MSYS2, en el terminal de Windows, con C:msys64mingw64binuxplay
.
Opciones:
-
") en el archivo de inicio UXPlay (ya sea una variable de entorno $UXPLAYRC
, o ~/.uxplayrc
o ~/.config/uxplayrc
); Las líneas que comienzan con " #
" se tratan como comentarios e ignoradas. Opciones de línea de comando Opciones de reemplazo en el archivo de inicio.-n server_name (predeterminado: uxplay); server_name@ hostname será el nombre que aparece ofreciendo servicios de AirPlay a su iPad, iPhone, etc., donde el nombre de host es el nombre del servidor que ejecuta UXPlay. Este también será el nombre que se muestra encima de la ventana de pantalla del espejo (x11).
-nh no agregue "@ hostname " al final del nombre del servidor AirPlay.
-H265 Active "ScreenMultiCodec" Support (AirPlay "Características" Bit 42) para aceptar el video H265 (4K/HEVC) además del video H264 (1080p) en el modo de espejo de pantalla. Cuando se usa esta opción, se crean dos "tuberías de video" (una para H264, una para H265). Si algún complemento GStreamer en la tubería son específicos para H264 o H265, la versión correcta se utilizará en cada tubería. Se prefiere una conexión Ethernet de cliente de cliente cableado sobre WiFi para el video 4K, y el cliente podría requerir. Solo los dispositivos Apple recientes (M1/M2 Mac o iPads, y algunos iPhones) pueden enviar un video H265 si se solicita un resolución "-S WXH" con H> 1080. La opción "-H265" cambia la resolución predeterminada (opción "-s") de 1920x1080 a 3840x2160, y deja la opción máxima de cuadros máximo predeterminado ("-fps") a 30 fps.
-Pin [NNNN] : (desde V1.67) Use autenticación "PIN" de estilo Apple (una vez) cuando un nuevo cliente se conecta por primera vez: se muestra un código PIN de cuatro dígitos en la terminal y el cliente La pantalla muestra un indicador de inicio de sesión para que esto se ingrese. Cuando se usa "-pin" por sí mismo, se elige un nuevo código PIN aleatorio para cada autenticación; Si se usa "-pin nnnn" (por ejemplo, "-pin 3939"), esto establecerá un código fijo sin cambios. La autenticación agrega el servidor a la lista del cliente de "Servidores de confianza" y el cliente no necesitará reautorizar siempre que las claves públicas del cliente y el servidor permanezcan sin cambios. (De manera predeterminada, desde V1.68, la clave pública del servidor se genera desde la dirección MAC, que se puede cambiar con la opción -m; consulte la opción -key para un método alternativo de generación de claves). (Agregue una línea "PIN" en el archivo de inicio UXPlay si desea que el servidor UXPlay use el protocolo de autenticación PIN).
-reg [ nombre de archivo ] : (desde v1.68). Si se usa "-Pin", esta opción mantiene un registro de "clientes de confianza" autorizados en PIN en $ home/.uxplay.register (o opcionalmente, en el nombre de archivo ). Sin esta opción, los clientes que devuelven que se salten la autorización PIN se confían y no se verifican. Esta opción puede ser útil si UXPlay se usa en un entorno más público, para registrar los detalles del cliente; El registro es texto, una línea por cliente, con la clave pública del cliente (formato base-64), ID de dispositivo y nombre del dispositivo; Comentar fuera (con "#") o eliminar una línea desregistra al cliente correspondiente (ver opciones -restrict, -block, y permiso para obtener más formas de controlar el acceso al cliente). (Agregue una línea "reg" en el archivo de inicio si desea usar esta función).
-vsync [x] (en modo espejo :) Esta opción ( ahora el predeterminado ) usa marcas de tiempo para sincronizar el audio con video en el servidor, con un retraso de audio opcional en milisegundos (decimales) ( x = "20.5" significa retraso de 0.0205 segundos: Se permiten retrasos positivos o negativos menos de un segundo). Se necesita en sistemas de baja potencia, como Raspberry Pi sin decodificación de video de hardware.
-vsync NO (en modo espejo :) Esto desactiva la sincronización de audio-video basada en la marca de tiempo, restaurando el comportamiento predeterminado antes de UXPlay-1.64. Los sistemas de escritorio estándar parecen funcionar bien sin el uso de marcas de tiempo: este modo es apropiado para la "transmisión en vivo", como el uso de UXPlay como segundo monitor para una computadora Mac, o monitorear una cámara web; Con él, no se dejan caer marcos de video.
-sync [x] (en modo de solo audio (ALAC) :) Esta opción utiliza marcas de tiempo para sincronizar el audio en el servidor con video en el cliente, con un retraso de audio opcional en milisegundos (decimales) ( x = "20.5" significa 0.0205 Seconds Retraso: se permiten retrasos positivos o negativos inferiores a un segundo). Debido a que el cliente agrega un retraso de video para tener en cuenta la latencia, el servidor en el modo -Sync agrega un retraso de audio equivalente, lo que significa que los cambios de audio dichos como Como pausa o un cambio de pista, no entrará en vigencia de inmediato. En principio, esto podría mitigarse utilizando la configuración de latencia de audio -al
para cambiar la latencia (valor predeterminado 0.25 segundos) que el servidor informa al cliente, pero actualmente cambia esto no parece tener ningún efecto .
-Async no . Este es el comportamiento predeterminado en modo de solo audio, pero esta opción puede ser útil como una opción de línea de comandos para apagar una opción -async
establecida en un archivo de configuración "UXPlayRC".
-db bajo [: alto ] Rescala la atenuación de control de volumen de avión (ganancia) de -30dB: 0dB a bajo : 0dB o bajo : alto . El límite inferior bajo debe ser negativo (atenuación); El límite superior alto puede ser un signo. (GStreamer restringe el volumen de augsación por alto para que no pueda exceder +20dB). El reescalado es "plano", de modo que para -db -50: 10, un cambio en la atenuación de la airplay en -7dB se traduce a una atenuación de -7 x (60/30) = -14db y el volumen máximo (avión 0dB) es un aumento de 10dB, y el airplay -30dB se convertiría en -50dB. Tenga en cuenta que el valor mínimo de AirPlay (-30dB exactamente) se traduce a "silencio".
-Taper proporciona un perfil de control de volumen de avión "cónico" (que coincide con el llamado "Dasl-Tapering" en Shairport-Sync): cada vez la longitud del control deslizante de volumen (o el número de pasos por encima del silencio, donde 16 pasos = completos El volumen) se reduce en un 50%, el volumen percibido se reduce a la mitad (una atenuación de 10dB). (Esto se modifica a volúmenes bajos, para usar el volumen "no superado" si es más fuerte).
-S WXH EG -S 1920X1080 (= "1080p"), las resoluciones predeterminadas de ancho y altura en píxeles para video H264. (El valor predeterminado se convierte en 3840x2160 (= "4k") cuando se usa la opción -h265). Esta es solo una solicitud hecha al cliente AirPlay, y tal vez no será la resolución final que obtenga. W y H son números enteros con cuatro dígitos o menos. Tenga en cuenta que el tamaño de píxel de altura es el controlador utilizado por el cliente para determinar el formato de transmisión; El ancho se ajusta dinámicamente a la forma de la imagen (formato de retrato o paisaje, dependiendo de cómo se mantenga un iPad, por ejemplo).
-s wxh@r como se indicó anteriormente, pero también informa al cliente de AirPlay sobre la tasa de actualización de la pantalla de la pantalla. El valor predeterminado es r = 60 (60 Hz); R debe ser un número entero inferior a 256.
-O enciende una opción "exagerada" para la ventana de visualización. Esto reduce la resolución de la imagen mediante el uso de algunos de los píxeles solicitados por opción -s wxH (o sus valores predeterminados 1920x1080) agregando un marco límite vacío de píxeles no utilizados (que se perdería en una pantalla de pantalla completa que exageran, y no está Mostrado por Gstreamer). Recomendación: no use esta opción a menos que haya alguna razón especial para usarla.
-FS utiliza el modo de pantalla completa, pero solo funciona con X11, Wayland, Vaapi y D3D11 (Windows).
-P le permite seleccionar los puertos de red utilizados por UXPlay (estos deben abrirse si el servidor está detrás de un firewall). Por sí mismo, -p establece puertos "heredados" TCP 7100, 7000, 7001, UDP 6000, 6001, 7011. -PN (por ejemplo, -p 35000) establece los puertos TCP y UDP n, n+1, n+2. -P n1, n2, n3 (valores separados por comas) establece cada puerto por separado; -P N1, N2 establece puertos N1, N2, N2+1. -P TCP N o -P UDP N establece solo los puertos TCP o UDP. Los puertos deben estar en el rango [1024-65535].
Si no se usa la opción -p, los puertos se eligen dinámicamente (al azar), que no funcionará si se está ejecutando un firewall.
-AVDEC Fuerzas del uso del software H264 Decodificación utilizando el elemento GStreamer AVDEC_H264 (decodificador Libav H264). Esta opción debe evitar que AutovideOsink elija un complemento de videos de videos acelerado como Vaapisink.
-VP Parser elige el elemento analizador H264 de la tubería GStreamer, el valor predeterminado es H264Parse. El uso de citas "..." permite agregar opciones.
-Vd Decoder elige el elemento decodificador H264 de la tubería GStreamer, en lugar del valor predeterminado "decodebin" que lo elige para usted. La decodificación del software es realizada por AVDEC_H264; Varios decodificadores de hardware incluyen: VAAPIH264DEC, NVDEC, NVH264DEC, V4L2H264DEC (estos requieren que el hardware apropiado esté disponible). El uso de citas "..." permite incluir algunos parámetros con el nombre del decodificador.
-VC Converter elige el elemento VideoConverter de GStreamer Pipeline, en lugar del valor predeterminado "VideoConvert". Al usar Video4Linux2 Hardware Decoding mediante una GPU, -vc v4l2convert
también usará la GPU para la conversión de video. El uso de citas "..." permite que algunos parámetros se incluyan con el nombre del convertidor.
-VS VideoSink elige el VideoSink de GStreamer, en lugar del valor predeterminado "AutovideOsink" que lo elige para usted. Some videosink choices are: ximagesink, xvimagesink, vaapisink (for intel graphics), gtksink, glimagesink, waylandsink, osxvideosink (for macOS), kmssink (for systems without X11, like Raspberry Pi OS lite) or fpsdisplaysink (which shows the streaming framerate in fps). El uso de citas "..." permite que algunos parámetros se incluyan con el nombre de la videos. Por ejemplo, el modo de pantalla completa es compatible con el complemento Vaapisink, y se obtiene usando -vs "vaapisink fullscreen=true"
; Esto también funciona con waylandsink
. La sintaxis de tales opciones es específica para un complemento dado (ver documentación de GStreamer), y algunas opciones de videosink podrían no funcionar en su sistema.
-vs 0 suprime la visualización de video transmitido. En el modo Mirror, la pantalla del cliente todavía se refleja a una velocidad reducida de 1 cuadro por segundo, pero no se representa o se muestra. Esta opción siempre debe usarse si el servidor no tiene "pantalla de cabeza" (sin pantalla adjunta para mostrar un video), y solo se usa para hacer audio, que será un audio con pérdida con pérdida Audio de Apple Lossless en modo AirPlay solo de audio.
-v4l2 Configuración de video para hardware H264 Decodificación de video en la GPU por Video4Linux2. Equivalente a -vd v4l2h264dec -vc v4l2convert
.
-BT709 Una solución alternativa para la falla del complemento Video4Linux2 anterior para reconocer el uso de Apple de una variante de "color de gama completa" poco común (pero permitido) del estándar de color BT709 para TV digital. GSTreamer -.20.4 ya no necesita esto y los backports de él.
-RPI equivalente a "-v4l2" (no válido para Raspberry Pi Model 5, y eliminado en UXPlay 1.67)
-rpigl equivalente a "-rpi -vs GlimagegeSink". (Eliminado desde UXPlay 1.67)
-rpifb equivalente a "-rpi -vs kmssink" (eliminado desde uxplay 1.67)
-rpiwl equivalente a "-rpi -vs waylandsink". (Eliminado desde UXPlay 1.67)
-Man Audiosink elige el Gstreamer Audiosink, en lugar de dejar que AutoAudiosink lo elija. Algunas opciones de Audiosink son: PulSesink, Alsink, Pipewiresink, OSSSink, OSS4Sink, Jackaudiosink, Osxaudiosink (para macOS), Wasapisink, DirectSoundsink (para Windows). El uso de cotizaciones "..." podría permitir algunos parámetros opcionales (por ejemplo -as "alsasink device=..."
para especificar un dispositivo de salida no definitivo). La sintaxis de tales opciones es específica para un complemento dado (ver documentación de GStreamer), y algunas opciones de Audiosink podrían no funcionar en su sistema.
-Me 0 (o simplemente -a ) suprime la reproducción del audio transmitido, pero muestra video transmitido.
-al x especifica una latencia de audio x en segundos (decimales) en solo audio (ALAC), que se informa al cliente. Se permiten valores en el rango [0.0, 10.0] segundos y se convertirán en un número entero de microsegundos. El valor predeterminado es 0.25 segundos (250000 USEC). (Sin embargo, el cliente parece ignorar esta latencia reportada, por lo que esta opción parece no funcional).
-Ca FileName proporciona un archivo (donde el nombre de archivo puede incluir una ruta completa) utilizado para la salida de "portada" (de Apple Music, etc. ,) en el modo ALAC de solo audio. Este archivo se sobrescribe con la última portada a medida que llega. La portada (formato JPEG) se descarta si no se usa esta opción. Use con un visor de imágenes que vuelve a cargar la imagen si cambia, o regularmente ( por ejemplo, una vez por segundo). Para lograr esto, ejecute " uxplay -ca [path/to/]filename &
" en el fondo, luego ejecute el visor de imágenes en primer plano. Ejemplo, usando feh
como visor: ejecute " feh -R 1 [path/to/]filename
" (en la misma ventana terminal en la que UXPlay se colocó en el fondo). Para dejar de fumar, use ctrl-C fg ctrl-C
para terminar el visor de imágenes, traer