注意:不支持 AirPlay2 多房间音频流:请使用 shairport-sync。
。
使用“ sudo apt install uxplay
”在基于 Debian 的 Linux 系统上安装 uxplay;在 FreeBSD 上使用“ sudo pkg install uxplay
”。也可通过 AUR 在基于 Arch 的系统上使用。从 v. 1.66 开始,uxplay 现在也由 Fedora 38 以 RPM 格式打包(“ sudo dnf install uxplay
”)。
对于尚未打包 UxPlay 的其他基于 RPM 的发行版,现在随最新版本提供了 RPM“specfile” uxplay.spec (请参阅其“资产”),也可以在 UxPlay 源顶级目录中找到。请参阅有关使用此规范文件构建可安装 RPM 包的部分。
安装后:
(在 Linux 和 *BSD 上):如果托管 UxPlay 的服务器上的防火墙处于活动状态,请确保 mDNS/DNS-SD 查询的默认网络端口 (UDP 5353) 已打开(有关更多详细信息,请参阅下面的故障排除);还为 Uxplay 打开三个 UDP 和三个 TCP 端口,并使用“uxplay -p”选项(请参阅“ man uxplay
”或“ uxplay -h
”)。
即使您安装了发行版的预编译 uxplay 二进制包,您也可能需要阅读以下运行 UxPlay 的说明,以了解您还应该安装哪些发行版的GStreamer 插件包。
对于纯音频模式(Apple Music 等),可以通过选项“uxplay -async”获得最佳质量,但 iOS 会产生 2 秒的延迟。
将您想要用作默认值的任何 UxPlay 选项添加到启动文件~/.uxplayrc
(有关格式和其他可能的位置,请参阅“ man uxplay
”或“ uxplay -h
”)。特别是,如果您的系统使用 PipeWire 音频或 Wayland 视频系统,您可能希望将“as pipelinesink”或“vs waylandsink”添加为文件的默认值。 (如果您的 Linux/BSD 系统使用终端命令“ps waux | greppulse”或“pactl info”的输出将包含“pipewire”)。
在 Raspberry Pi 上:如果您使用 Ubuntu 22.10 或更早版本,则必须修补 GStreamer 以使用 Broadcom GPU 的硬件视频解码(也推荐,但对于 Raspberry Pi OS (Bullseye) 是可选的:如果不使用,请使用选项“ uxplay -bt709
”补丁)。
要(轻松)从源代码编译最新的 UxPlay,请参阅获取 UxPlay 部分。
该项目是一个适用于 Linux、macOS 和 *BSD 的 GPLv3 开源 unix AirPlay2 镜像服务器。它最初是由 antimof 使用基于 OpenMAX 的 RPiPlay 的代码开发的,而 RPiPlay 又源自 AirplayServer、shairplay 和 playfair。 (antimof 网站不再参与开发,但会定期发布从新的 UxPlay 主网站提取的更新)。
UxPlay 在许多系统上进行了测试,其中包括 Debian(10“Buster”、11“Bullseye”、12“Bookworm”)、Ubuntu(20.04 LTS、22.04 LTS、23.04(还有 Ubuntu 衍生品 Linux Mint、Pop! _OS)、Red Hat 和克隆(Fedora 38、Rocky Linux 9.2)、openSUSE Leap 15.5、Mageia 9、OpenMandriva“ROME”、PCLinuxOS、Arch Linux、Manjaro,并且应在任何 Linux 系统上运行。还在 macOS Catalina 和 Ventura (Intel) 和 Sonoma (M2)、FreeBSD 14.0、Windows 10 和 11 (64) 上进行了测试。少量)。
在 Raspberry Pi 4 B 型上,它在 Raspberry Pi OS(Bullseye 和 Bookworm)(32 位和 64 位)、Ubuntu 22.04 LTS 和 23.04、Manjaro RPi4 23.02 以及 openSUSE 15.5(无硬件视频解码)上进行了测试。还在 Raspberry Pi Zero 2 W、3 型号 B+ 和现在的 5 上进行了测试。
它的主要用途是像 AppleTV 一样,在运行 Linux、macOS 或其他 UNIX 的主机的服务器显示屏上对 iOS/iPadOS/macOS 客户端(iPhone、iPod Touch、iPad、Mac 计算机)进行屏幕镜像(带音频) (现在还有 Microsoft Windows)。 UxPlay 使用“旧版协议”支持 Apple 的 AirPlay2 协议,但缺少一些功能。 (有关 Apple AirPlay 2 协议的公开信息的详细信息,请参阅此处、此处和此处;另请参阅 pyatv,它可能是添加现代协议的资源。)虽然不能保证未来的 iOS 版本将继续支持“旧版协议” 》,iOS 17继续支持。
UxPlay 服务器及其客户端必须位于同一局域网上,并且该局域网上还运行着Bonjour/Zeroconf mDNS/DNS-SD 服务器(仅 DNS-SD“服务发现”服务是严格必要的,不需要本地网络也可以是基于“.local”mDNS 的类型)。在 Linux 和 BSD Unix 服务器上,这通常由 Avahi 通过 avahi-daemon 服务提供,并且包含在大多数 Linux 发行版中(此服务也可以由 macOS、iOS 或 Windows 服务器提供)。
iOS/MacOS 客户端与 UxPlay 服务器的连接可以在AirPlay Mirror模式(在镜像客户端屏幕的同时传输有损压缩的 AAC 音频)或在替代的AirPlay Audio模式下启动,该模式在不进行屏幕镜像的情况下传输 Apple Lossless (ALAC) 音频在音频模式下,如果使用 UxPlay 选项-ca <name>
,则元数据会显示在 uxplay 终端中,随附的封面也会输出到定期更新的文件<name>
中,并且可以使用 .您选择的(重新加载)图形查看器可以在活动连接期间在镜像和音频模式之间切换:在镜像模式下,停止镜像(或关闭镜像窗口)并启动音频模式连接,通过启动镜像模式切换回来。连接;当您离开/重新进入音频模式时,封面艺术显示会停止/重新启动。
请注意,Apple video-DRM(在客户端上的“Apple TV 应用程序”内容中找到)无法通过 UxPlay 解密,并且无法使用 UxPlay 的 AirPlay Mirror 模式观看 Apple TV 应用程序(仅会传输未受保护的音频,采用 AAC 格式)格式),但来自无 DRM 应用程序(例如“YouTube 应用程序”)的视频和音频内容都将由 UxPlay 以镜像模式进行流式传输。
由于 UxPlay 目前不支持非 Mirror AirPlay 视频流(其中客户端控制 AirPlay 服务器上的 Web 服务器直接接收 HLS 内容,以避免被客户端解码和重新编码),因此使用 AirPlay 视频的图标YouTube 应用程序等应用程序将仅发送音频(无损 ALAC 格式),而不发送附带视频(计划在 UxPlay 的未来版本中支持 HLS 视频)
UxPlay 使用 GStreamer“插件”来渲染音频和视频。这意味着使用多种插件“开箱即用”支持视频和音频。 AirPlay 以 h264 格式传输视频:gstreamer 解码与插件无关,并使用加速 GPU 硬件 h264 解码器(如果可用);如果不是,则使用软件解码。
适用于 Intel 和 AMD 集成显卡的 VAAPI,NVIDIA 带有“Nouveau”开源驱动程序
对于 Intel 或 AMD GPU,最好使用开源 VAAPI gstreamer 插件进行硬件解码。原则上也支持 NVIDIA 显卡的开源“Nouveau”驱动程序:请参阅此处,但这需要 VAAPI 补充从专有 NVIDIA 驱动程序中提取的固件。
具有专有驱动程序的 NVIDIA
安装 NVIDIA 的 CUDA 驱动程序libcuda.so
后,可以使用nvh264dec
插件(自 GStreamer-1.18.0 起包含在 gstreamer1.0-plugins-bad 中)在 NVIDIA GPU 上加速视频解码。对于 GStreamer-1.16.3 或更早版本,该插件称为nvdec
,并且必须由用户构建。
Video4Linux2 支持 Raspberry Pi(Pi 4B 及更早版本)上的 h264 硬件解码
Raspberry Pi (RPi) 计算机(在 Pi 4 Model B 上测试)现在可以使用软件视频解码来运行 UxPlay,但首选通过 Pi 的 Broadcom 2835 GPU 中的固件进行硬件加速的 h264/h265 解码。 UxPlay 使用 GStreamer-1.22 Video4Linux2 (v4l2) 插件访问它;使用由 Raspberry Pi 维护的非主线 Linux 内核模块 bcm2835-codec,到目前为止仅包含在 Raspberry Pi OS 中,以及 Raspberry Pi Imager 提供的其他两个发行版(Ubuntu、Manjaro)。 (对于 GStreamer < 1.22,请参阅 UxPlay Wiki) 。
(新):支持 Raspberry Pi(Pi 4 model B 和 Pi 5)上的 h265 (HEVC) 硬件解码
支持是存在的,但迄今为止尚未取得令人满意的结果。 Pi model 5 仅提供 h265 视频的硬件加速 (GPU) 解码,但不提供 H264,因为其 CPU 足够强大,可以满足令人满意的软件 H264 解码
UxPlay 的 GPLv3 许可证没有添加“GPL 例外”,明确允许在链接到v.3.0.0 之前的OpenSSL 版本时以编译形式分发(旧版本的 OpenSSL 具有与 GPL 不兼容的许可证条款,除非 OpenSSL 可以被视为“系统库”,它位于 *BSD 中)。许多 Linux 发行版将 OpenSSL 视为“系统库”,但有些发行版(例如 Debian)则不然:在这种情况下,通过链接 OpenSSL-3.0.0 或更高版本可以解决问题。
下载并解压 UxPlay-master.zip,或者(如果安装了 git):“git clone https://github.com/FDH2/UxPlay”。您还可以下载版本中列出的最新或早期版本。
(针对非基于 Debian 的 Linux 或 *BSD 调整这些说明;对于 macOS,请参阅下面的具体说明)。请参阅下面的故障排除以获取有关任何困难的帮助。
您需要一个安装了标准开发库的 C/C++ 编译器(例如 g++)。基于 Debian 的系统提供了一个“build-essential”包用于编译软件。您还需要 pkg-config:如果“ which pkg-config
”没有找到它,请安装 pkg-config 或其类似的替代品 pkgconf。还要确保安装了 cmake>=3.5:“ sudo apt install cmake
”(如果需要,请添加build-essential
和pkg-config
(或pkgconf
))。
确保您的发行版提供 OpenSSL 1.1.1 或更高版本以及 libplist 2.0 或更高版本。 (这意味着基于 Debian 10“Buster”的系统(例如 Ubuntu 18.04)或更新版本;在 Debian 10 系统上“libplist”是旧版本,您需要“libplist3”。)如果没有,您可能需要构建和安装这些来自源代码(请参阅本自述文件末尾的说明)。
如果您安装的是非标准 OpenSSL,则可能需要设置环境变量 OPENSSL_ROOT_DIR(例如,“ export OPENSSL_ROOT_DIR=/usr/local/lib64
”,如果安装位置在该位置)。同样,对于非标准(或多个)GStreamer 安装,请将环境变量 GSTREAMER_ROOT_DIR 设置为包含 UxPlay 应使用的 gstreamer 安装的“.../gstreamer-1.0/”目录的目录(如果是例如“~ /my_gstreamer/lib/gstreamer-1.0/”,使用“ export GSTREAMER_ROOT_DIR=$HOME/my_gstreamer/lib
”设置此位置)。
在终端窗口中,将目录更改为已下载源代码的源目录(“UxPlay-*”、“*”=“master”或 zip 文件下载的发布标记,“UxPlay”用于“git clone”下载),然后请按照以下说明操作:
注意:默认情况下,UxPlay 将针对其所构建的计算机进行优化构建;如果不是这种情况,例如打包发行版时,请使用 cmake 选项-DNO_MARCH_NATIVE=ON
。
如果您在 Linux 或 *BSD 上使用 X11 Windows,并且希望通过按键(F11 或 Alt_L+Enter)切换进入/退出全屏模式,则需要依赖 X11 来构建 UxPlay。从 UxPlay-1.59 开始,如果安装并检测到 X11 开发库,则默认情况下会执行此操作。使用“ sudo apt install libx11-dev
”安装它们。如果检测到 GStreamer < 1.20,还将进行屏幕共享应用程序(例如Zoom)所需的修复。
-DNO_X11_DEPS=ON
。sudo apt install libssl-dev libplist-dev
"。(除非您需要从源代码构建 OpenSSL 和 libplist )。sudo apt install libavahi-compat-libdnssd-dev
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
。 (*如果您从源代码构建 Gstreamer 则跳过)cmake .
(对于更清晰的构建,如果您修改源代码,这会很有用,请将其替换为“ mkdir build; cd build; cmake ..
”:然后您可以根据需要删除build
目录的内容,而不会影响源代码。 )根据需要在此处添加任何 cmake“ -D
”选项(例如-DNO_X11_DEPS=ON
或-DNO_MARCH_NATIVE=ON
)。make
sudo make install
(之后您可以在运行此程序的同一目录中使用sudo make uninstall
进行卸载)。这会将可执行文件“ uxplay
”安装到/usr/local/bin
,(并将手册页安装到标准位置,例如/usr/local/share/man/man1
并将自述文件安装到/usr/local/share/doc/uxplay
位置/usr/local/share/doc/uxplay
)。 (如果“man uxplay”失败,请检查是否设置了 $MANPATH:如果设置了,则需要将联机帮助页的路径(通常是 /usr/local/share/man/)添加到 $MANPATH 中。) uxplay 可执行文件也可以是如果您希望在安装之前进行测试(在这种情况下必须首先安装 GStreamer 插件),则可以在构建过程后的构建目录中找到。
**对于那些使用基于 RPM 的发行版的用户,还可以使用 RPM 规范文件 uxplay.spec:请参阅构建可安装的 rpm 包。
Red Hat,或像 CentOS 这样的克隆(现在继续作为 Rocky Linux 或 Alma Linux):( sudo dnf install 或 sudo yum install) openssl-devel libplist-devel avahi-compat-libdns_sd-devel gstreamer1-devel gstreamer1-plugins-base- devel(+libX11-devel 用于全屏 X11) (其中一些可能位于“CodeReady”中附加存储库,被克隆称为“PowerTools”)
Mageia、PCLinuxOS、OpenMandriva:与 Red Hat 相同,但名称更改:(Mageia)“gstreamer1.0-devel”、“gstreamer-plugins-base1.0-devel”; (OpenMandriva)“libopenssl-devel”、“gstreamer-devel”、“libgst-plugins-base1.0-devel”。 PCLinuxOS:与 Mageia 相同,但使用 synaptic(或 apt)作为其包管理器。
openSUSE: (sudo zypper install) libopenssl-3-devel (以前的 libopenssl-devel) libplist-2_0-devel (以前的 libplist-devel) avahi-compat-mDNSResponder-devel gstreamer-devel gstreamer-plugins-base-devel (+ libX11-开发全屏 X11)。
Arch Linux (也可以作为 AUR 中的软件包提供):(sudo pacman -Syu) openssl libplist avahi gst-plugins-base。
FreeBSD: (sudo pkg install)libplist gstreamer1。还必须安装 avahi-libdns 或 mDNSResponder 以提供 dns_sd 库。 OpenSSL 已作为系统库安装。
首次使用 RPM 构建者应首先安装 rpm-build 和 rpmdevtools 软件包,然后使用“ rpmdev-setuptree
”创建 rpmbuild 树。然后下载 uxplay.spec 并将其复制到~/rpmbuild/SPECS
中。在该目录中,运行“ rpmdev-spectool -g -R uxplay.spec
”将相应的源文件uxplay-*.tar.gz
下载到~/rpmbuild/SOURCES
(“rpmdev-spectool”也可能简称为“spectool”) );然后运行“ rpmbuild -ba uxplay.spec
”(您将需要安装此报告所需的任何依赖项)。这应该在~/rpmbuild/RPMS
的子目录中创建 uxplay RPM 包。 ( uxplay.spec在 Fedora 38、Rocky Linux 9.2、openSUSE Leap 15.5、Mageia 9、OpenMandriva、PCLinuxOS 上进行了测试;可以轻松修改它以包含其他基于 RPM 的发行版的依赖项列表。)
接下来使用sudo apt install gstreamer1.0-<plugin>
安装所需的 GStreamer 插件。所需的<plugin>
值为:
基于 Debian 的发行版将一些插件包分成更小的部分:可能还需要一些插件包,包括用于 OpenGL 支持的“ gl ”(这提供了“-vs glimagesink”videosink,它在许多系统(包括 Raspberry Pi)中非常有用),并且在使用 NVIDIA GPU 进行 h264/h265 解码时应始终使用)、“ gtk3 ”(提供“-vs gtksink”videosink)以及 X11 的“ x ”支持,尽管这些可能已经安装; Intel 或 AMD 显卡的硬件加速 h264 视频解码需要“ vaapi ”(但不适用于使用专有驱动程序的 NVIDIA)。如果声音无法正常工作,则可能需要安装“ alsa ”、“ pulseaudio ”或“ pipelinewire ”插件,具体取决于音频的设置方式。
在某些情况下,由于专利问题,官方发行版中未提供以镜像模式解码 AAC 音频所需的 libav 插件功能avdec_aac :从这些发行版的社区存储库中获取它。
Red Hat 或 CentOS 之类的克隆(现在继续称为 Rocky Linux 或 Alma Linux):安装 gstreamer1-libav gstreamer1-plugins-bad-free(+ 用于 Intel/AMD 显卡的 gstreamer1-vaapi)。在最近的 Fedora 中,gstreamer1-libav 更名为 gstreamer1-plugin-libav。要获取 avdec_aac,请从 rpmfusion.org 安装软件包:(从 rpmfusion 获取 ffmpeg-libs;在 RHEL 或克隆版上,但不是最近的 Fedora,也从那里获取 gstreamer1-libav)。
Mageia、PCLinuxOS、OpenMandriva:安装 gstreamer1.0-libav gstreamer1.0-plugins-bad(+ 用于 Intel/AMD 显卡的 gstreamer1.0-vaapi)。在 Mageia 上,要获取 avdec_aac,请从“受污染的”存储库安装 ffmpeg (它还提供了更完整的 gstreamer1.0-plugins-bad)。
openSUSE:安装 gstreamer-plugins-libav gstreamer-plugins-bad(+ 用于 Intel/AMD 显卡的 gstreamer-plugins-vaapi)。要获取 avdec_aac,请从 Packman“Essentials”安装适用于 openSUSE 的 libav* 软件包;建议:添加Packman存储库后,使用YaST软件管理中的选项将多媒体的所有系统包切换到Packman)。
Arch Linux安装 gst-plugins-good gst-plugins-bad gst-libav (+ 用于 Intel/AMD 显卡的 gstreamer-vaapi)。
FreeBSD:安装 gstreamer1-libav、gstreamer1-plugins、gstreamer1-plugins-*(* = core、good、bad、x、gtk、gl、vulkan、pulse、v4l2、...)、(+ gstreamer1-vaapi for Intel/ AMD 显卡)。
从 UxPlay-1.64 开始,UxPlay 可以使用从配置文件读取的选项启动,该配置文件将是第一个找到的 (1) 路径由环境变量$UXPLAYRC
指定的文件,(2) 用户家中的~/.uxplayrc
目录(“~”),(3) ~/.config/uxplayrc
。格式为每行一个选项,省略命令行选项的开头"-"
。配置文件中以"#"
开头的行将被视为注释并被忽略。
在终端窗口中运行 uxplay 。在某些系统上,您可以使用-fs
选项指定全屏模式,或使用 F11 或(按住左 Alt)+Enter 键切换进入和退出全屏模式。完成后使用 Ctrl-C(或关闭窗口)终止它。如果 iOS 客户端的下拉“屏幕镜像”面板看不到 UxPlay 服务器,请检查您的 DNS-SD 服务器(通常是 avahi-daemon)是否正在运行:在终端窗口中使用systemctl status avahi-daemon
执行此操作。如果这表明 avahi-daemon 没有运行,请使用sudo systemctl [start,stop,enable,disable] avahi-daemon
控制它(在非 systemd 系统上,例如 *BSD,使用sudo service avahi-daemon [status, start, stop, restart, ...]
)。如果看到 UxPlay,但客户端选择时无法连接,则可能是服务器上存在防火墙,阻止 UxPlay 接收客户端连接请求,除非打开某些网络端口:如果防火墙处于活动状态,还打开 UDP 端口 5353 (用于 mDNS 查询) Avahi 所需的。请参阅下面的故障排除以获取有关此问题或其他问题的帮助。
与 Apple TV 不同,UxPlay 服务器默认情况下不要求客户端使用服务器显示的 pin 码与其进行初始“配对”(之后客户端“信任”服务器,并且不需要重复此操作)。从 v1.67 开始,Uxplay 提供了这样的“pin-authentication”作为选项:如果您想使用它,请参阅用法中的“ -pin
”和“ -reg
”了解详细信息。一些具有 MDM(移动设备管理,通常出现在雇主拥有的设备上)的客户端需要使用 PIN 身份验证:即使在没有 PIN 选项的情况下运行,UxPlay 也会提供此功能。
默认情况下,UxPlay 被锁定到当前客户端,直到该客户端断开连接;从 UxPlay-1.58 开始,选项-nohold
修改了此行为,以便当新客户端请求连接时,它会删除当前客户端并接管。 UxPlay 1.66 引入了一种机制( -restrict
、 -allow <id>
、 -block <id>
)来控制允许哪些客户端连接,使用它们的“deviceID”(在 Apple 设备中似乎是不可变的)。
在镜像模式下,GStreamer 有两种方法来播放视频及其伴随的音频:在 UxPlay-1.64 之前,视频和音频流在到达后立即播放(GStreamer“ sync=false ”方法) ,使用 GStreamer 内部时钟来尝试保持它们同步。从 UxPlay-1.64 开始,另一种方法(GStreamer 的“ sync=true ”模式)是新的默认方法,该方法使用客户端发送的音频和视频流中的时间戳。在低解码功率 UxPlay 主机(例如 Raspberry Pi Zero W 或 3 B+ 型号)上,这将丢弃无法及时解码以播放音频的视频帧,从而使视频出现抖动,但仍保持同步。
不丢弃后期视频帧的旧方法在更强大的系统上运行良好,并且仍然可以通过 UxPlay 选项“ -vsync no
”使用;此方法适用于“实时流媒体”,例如,当使用 UxPlay 作为 Mac 计算机的第二个显示器时可能会更好,而新的默认基于时间戳的方法最适合观看视频,以保持嘴唇运动和声音同步。 (如果不使用时间戳,如果解码速度不够快,视频最终将落后于音频:硬件加速视频解码有助于防止以前在不使用时间戳时出现这种情况。)
-async
timestamp-为基础的选项。 (例如,如果您想在客户端上跟随 Apple Music 歌词,同时在 UxPlay 服务器上收听优质声音)。这会延迟客户端上的视频以匹配服务器上的音频,因此在客户端上启动的暂停或音轨更改对服务器播放的音频生效之前会导致轻微的延迟。 AirPlay 音量控制可将音量(增益)衰减高达 -30dB:分贝范围 -30:0 可以使用选项-db
(“-db Low ”或“-db”从Low :0 或Low : High重新调整) Low : High "), Low必须为负数。重新缩放以分贝为单位呈线性。请注意,GStreamer 的音频格式将“剪辑”任何高于 +20db 的音频增益,因此请将“高”保持在该级别以下。选项-taper
提供了一些用户可能喜欢的“锥形”AirPlay 音量控制配置文件。
-vsync 和 -async 选项还允许以毫秒为单位进行可选的正(或负)音频延迟调整,以进行微调: -vsync 20.5
相对于视频延迟音频 0.0205 秒;负值会推动它。)
您可能会发现通过设置 -fps 60 可以改进视频,该设置允许某些视频以每秒 60 帧的速度播放。 (您可以使用 -vs fpsdisplaysink 和/或 -FPSdata 查看实际流式传输的帧速率。)使用此选项时,您应该使用默认的基于时间戳的同步选项-vsync
。
从 UxPlay-1.54 开始,您可以在纯音频 (ALAC) 模式下显示来自 Apple Music 等来源的随附“封面艺术”:在后台运行“ uxplay -ca <name> &
”,然后运行具有自动重新加载功能的图像查看器功能:例如“feh”:在前台运行“ feh -R 1 <name>
”;终止 feh,然后使用“ ctrl-C fg ctrl-C
”终止 Uxplay。
默认情况下,GStreamer 使用算法来搜索要使用的最佳“videosink”(GStreamer 术语,表示用于显示图像的图形驱动程序)。您可以使用 uxplay 选项-vs <videosink>
来覆盖它。哪些视频接收器可用取决于您的操作系统和图形硬件:使用“ gst-inspect-1.0 | grep sink | grep -e video -e Video -e image
”来查看可用的内容。 Linux/*BSD 上的一些可能性是:
glimagesink (OpenGL)、 waylandsink
xvimagesink , ximagesink (X11)
kmssink 、 fbdevsink (不带 X11 的控制台图形)
vaapisink (用于 Intel/AMD 硬件加速图形);对于 NVIDIA 硬件图形(带有 CUDA),请使用glimagesink与“ -vd nvh264dec
”(或“nvh264sldec”,一种新变体,在 GStreamer-1.24 中将成为“nvh264dec”)结合使用。
如果服务器是“无头”(没有连接监视器,仅渲染音频),请使用-vs 0
。
GStreamer 还会搜索最好的“音频接收器”;使用-as <audiosink>
覆盖其选择。 Linux 上的选择包括pulsesink、alsasink、pipewiresink、oss4sink;查看gst-inspect-1.0 | grep sink | grep -e audio -e Audio
.
一个常见问题涉及 GStreamer 尝试使用配置不正确或缺少加速硬件 h264 视频解码(例如 VAAPI)。尝试“ uxplay -avdec
”强制软件视频解码;如果这有效,您可以尝试修复加速硬件视频解码(如果需要),或者只需卸载 GStreamer vaapi 插件。
有关更多运行时选项,请参阅用法。
对于帧缓冲视频(对于 Raspberry Pi OS“Lite”和其他非 X11 发行版),请使用 KMS 视频接收器“-vs kmssink”(DirectFB 帧缓冲视频接收器“dfbvideosink”在 Pi 上损坏,并出现段错误)。在这种情况下,您应该明确使用“-vs kmssink”选项,因为没有它,autovideosink 找不到正确的视频接收器。
Raspberry Pi 5 不提供硬件 H264 解码(也不需要)。
Pi Zero 2 W、3 Model B+和4 Model B应该使用Broadcom GPU的硬件H264解码,但它需要Raspberry Pi内核树中维护的非主流内核模块bcm2835_codec;已知提供它的发行版包括 Raspberry Pi OS、Ubuntu 和 Manjaro-RPi4。如果此模块不可用,请使用软件解码(选项 -avdec)。
如果使用硬件 H264 解码,Uxplay 使用 GStreamer-1.22 及更高版本的 Video4Linux2 (v4l2) 插件来访问 GPU。这应该会自动发生。可以使用选项 -v4l2,但通常最好让 GStreamer 自己找到最佳视频管道。
在较旧的发行版 (GStreamer < 1.22) 上,v4l2 插件需要补丁:请参阅 UxPlay Wiki。旧版 Raspberry Pi OS (Bullseye) 有一个部分修补的 GStreamer-1.18.4,它需要 uxplay 选项 -bt709(并且不要使用 -v4l2);在这种情况下,最好应用 UxPlay Wiki 中的完整补丁。
对于“双遗产”Raspberry Pi OS (Buster),没有适用于 GStreamer-1.14 的补丁。相反,在构建 UxPlay 之前,首先使用这些说明从源代码构建一个完整的更新的 GStreamer-1.18.6。
运行 32 位操作系统的 Raspberry Pi 3 Model B+ 也可以使用 GStreamer OMX 插件访问 GPU(使用选项“ -vd omxh264dec
”),但这会被 Pi 4 Model B 固件破坏。 OMX 支持已从 Raspberry Pi OS (Bullseye) 中删除,但存在于 Buster 中。
Raspberry Pi 5 型号以及 Raspberry Pi 4 B 型号上的 Broadcom GPU 支持H265 (4K)视频的硬件解码。虽然 GStreamer 似乎利用了这种硬件解码,但 UxPlay 在 4K 视频上的渲染速度令人满意。这些Raspberry Pi模型尚未实现。激活 h265 支持需要选项“-h265”。在此模式下首选有线以太网连接(客户端可能需要)。
即使使用 GPU 视频解码,低功耗型号也可能会丢弃一些帧,以使用时间戳保持音频和视频同步。在旧版 Raspberry Pi OS (Bullseye) 中,raspi-config“性能选项”允许指定分配给 GPU 的内存量,但 Bookworm 中似乎不存在此设置(但仍然可以通过添加一行将其设置为 128MB) /boot/config.txt 中的“gpu_mem=128”)。在 32 位 Bullseye 或 Bookworm Lite 中测试时,Pi Zero 2 W(具有 512MB 内存)运行良好,GPU 分配有 128MB(默认值似乎是 64MB)。
R Pi 的基本 uxplay 选项是uxplay [-vs <videosink>]
。选择<videosink>
= glimagesink
有时很有用。对于 Wayland 视频合成器,请使用<videosink>
= waylandsink
。对于帧缓冲视频,请使用<videosink>
= kmssink
。
ssh user@remote_host
export DISPLAY=:0
nohup uxplay [options] > FILE &
声音和视频将在远程主机上播放;如果 ssh 会话关闭,“nohup”将使 uxplay 保持运行。终端输出保存到 FILE(可以是 /dev/null 来丢弃它)
注意:macOS 12 Monterey 中包含本机 AirPlay 服务器功能,但仅限于最新的硬件。 Uxplay可以在无法运行蒙特雷的旧MacOS系统上运行,也可以运行蒙特雷,但不能运行蒙特雷。
MACOS的这些指令假设已安装XCode命令行开发人员工具(如果安装了Xcode,请打开终端,键入“ sudo xcode-select-安装”并接受条件)。
还假定安装了Cmake> = 3.13:可以使用软件包管理器MacPorts( sudo port install cmake
),Homebrew( brew install cmake
)或通过https://cmake.org/download/的下载来完成。还要安装git
如果您将使用它来获取uxplay。
下一个安装libplist和openssl-3.x。请注意,这些库的静态版本将在MacOS构建中使用,因此可以在构建Uxplay后卸载它们,如果需要的话。
如果您使用自制: brew install libplist openssl@3
如果您使用Macports: sudo port install libplist-devel openssl3
否则,从来源构建libplist和openssl:请参阅此读数末尾附近的说明;需要安装开发工具(AutoConf,Automake,Libtool等)。
接下来,获取GSTREAMER-1.0的最新MACOS版本。
使用“官方” GSTREAMER(建议使用MacPorts和Homebrowrew用户) :从https://gstreamer.freedesktop.org/download/安装MACOS的GSTREAMER版本。 (此版本包含其自己的PKG-Config,因此您不必安装一个。)同时安装GSTREAMER-1.0和GSTREAMER-1.0-DEVEVEVEVAGES。下载后,请单击它们安装(它们安装到/library/frameworks/gstreamer.framework)。如果使用“官方”版本,则不应安装(或卸载)由包装管理器提供的GSTREAMER。
使用Homebrew的GSTREAMER :需要PKG-Config :(“ Brew install pkg-config gstreamer”)。这会导致大量额外的软件包作为依赖项安装。 Homebrew Gstreamer安装最近已将其重新设计为一个名为gstreamer
单个“公式”,现在它不需要GST_PLUGIN_PATH即可设置在Enciroment中。 Homebrew将GSTREAMER安装到(HOMEBREW)/lib/gstreamer-1.0
Where (HOMEBREW)/*
is /opt/homebrew/*
在苹果硅Mac上,和/usr/local/*
in intel Macs上;不要将任何额外的非啤酒插件(您自己构建)放在那里,而是将GST_PLUGIN_PATH指向其位置(Homebrew不提供完整的Gstreamer,但似乎拥有Uxplay所需的一切)。
使用Macports安装的GSTREAMER :不建议这样做,因为Macports Gstreamer当前是旧的(v1.16.2),未受维护并构建用于使用X11:
(如果您真的希望使用Macports GStreamer-1.16.2,请安装PKGCONF(“ Sudo port install pkgconf”),然后“ sudo port install gstreamer1-gst-plugins gst-plugins gstreamer1-gstreamer1-gst-plugins1-gst-plugins gstreamer1-gstreamer1-gstreamer1-gst-gst-pluginer1-gst-plugugins -bad gstreamer1-gst-libav“。对于MacOS上的X11支持,使用特殊CMAKE选项编译Uxplay -DUSE_X11=ON
,并从Xquartz终端运行-vs Ximagesink;旧的非retina Mac需要较低的分辨率: uxplay -s 800x600
。
安装GSTREAMER后,构建和安装Uxplay:打开终端并更改为Uxplay源目录(用于Zipfile下载的“ Uxplay-Master”,“ uxplay”,“ uxplay”,用于“ git clone”下载),并使用“ cmake。; make; make; make; sudo使安装“(与Linux相同)。
在检查GSTREAMER警告时运行Uxplay(在Runnng Uxplay之前使用“导出GST_DEBUG = 2”执行此操作)表明,默认情况下(自Uxplay 1.64)使用时间戳进行视频同步,许多视频帧,仅在MacOS上(仅在MacOS上),,,,,,,,,地也许是由于另一个错误(关于视频测量法)出现在GSTREAMER警告中。建议:使用新的Uxplay“ no Timestamp”选项“ -vsync no
” (您可以在uxplayrc配置文件中添加线“ vsync no”)。
在MacOS上,使用Gstreamer的安装,唯一可用的VideoSink似乎是GlimagesInk(AutovideOsink做出的默认选择)和OSXVIDEOSINK。窗口标题未显示AirPlay服务器名称,但是窗口可在屏幕共享应用程序(例如Zoom)中看到窗口。唯一可用的AudioSink似乎是Osxaudiosink。
无论是否选择它,始终使用选项-NC。这是MacOS上GSTREAMER VIDEOSINK的问题的解决方法:如果Gstreamer管道在镜像窗口仍然打开时被销毁,则会发生segfault。
在GlimagesInk的情况下,分辨率设置“ -s WXH”不会影响(小)初始OpenGL镜像窗口大小,但是可以使用鼠标或触控板扩展窗口。相比之下,使用“ -vs osxvideosink”创建的窗口最初很大,但纵横比的错误(拉伸图像);在这种情况下,当窗口宽度通过拖动侧面更改时,长宽比会发生变化。选项-vs "osxvideosink force-aspect-ratio=true"
可用于使窗口首次打开时具有正确的长宽比。
下载并安装Windows v3.0的Bonjour SDK 。您可以在softpedia.com上下载无需注册即可下载SDK,也可以从Apple官方网站https://developer.apple.com/download中获取它(Apple让您注册为开发人员从其网站访问它)。这应该将Bonjour SDK安装为C:Program FilesBonjour SDK
。
(这是适用于64位窗口;应该进行32位窗口的构建,但未进行测试。)将使用类似Unix的MSYS2构建环境:从官方网站下载并安装MSYS2 .msys2.org/。接受默认安装位置C:mysys64
。
MSYS2软件包安装了Arch Linux使用的“ PACMAN”软件包管理器的变体。从Windows启动菜单中的MSYS2选项卡中打开“ MSYS2 MingW64”终端,并使用“ Pacman -syu”更新新的MSYS2安装。然后安装mingW-64编译器和CMAKE
pacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc
具有所有必需依赖项的编译器将安装在MSYS64目录中,默认路径C:/msys64/mingw64
。在这里,我们只需在MSYS2环境中的命令行构建Uxplay(这使用“ ninja
”代替“ make
”为构建系统)。
从GitHub下载最新的Uxplay (要使用git
,将其与pacman -S git
一起安装,然后“ git clone https://github.com/FDH2/UxPlay
”) ,然后安装Uxplay依赖项(OpenSSL已与MSYSSS安装,已与MSYSS安装):
pacman -S mingw-w64-x86_64-libplist mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base
如果您正在尝试其他Windows构建系统,则可以从官方的GSTREAMER网站上获得Windows的MSVC版本,但是仅测试了MSYS2上的MINGW 64位构建。
CD到UXPLAY源目录,然后“ mkdir build
”和“ cd build
”。构建过程假设Bonjour SDK安装在C:Program FilesBonjour SDK
上。如果它在其他地方,请将Enviroment变量Bonjour_sdk_home设置为指向其位置。然后用
cmake ..
ninja
假设这两个错误都没有错误,您将在当前(“ build”)目录中构建UXPlay可执行UXPlay.exe 。 Windows上没有其他版本中提供的“ sudo make install”和“ sudo make卸载”功能;取而代之的是,MSYS2环境具有/mingw64/...
可用,您可以在C:/msys64/mingw64/bin
中安装uxplay.exe可执行文件(加上C:/msys64/mingw64/share/...
) 和
cmake --install . --prefix /mingw64
为了能够查看该手册,您需要使用“ pacman -S man
”安装Manpage查看器。
要运行uxplay.exe,您需要使用PACMAN <plugin>
pacman -S mingw-w64-x86_64-gst-<plugin>
安装一些GSTREAMER插件套件
您可能使用的其他可能使用的MSYS2 GSTREAMER插件软件包在MSYS2软件包中列出。
您还需要授予UXPlay可执行uxplay.exe的权限,以通过Windows防火墙访问数据。您可以自动为您选择在第一次运行Uxplay时选择此操作,或者您可能需要使用Windows设置 - > Update和Security-> Windows-> Windows-> Windows-> Windows-> Windows-> Firewall&Network Protection->允许应用程序通过FireWallall进行操作。如果您的病毒保护标志Uxplay.exe为“可疑”(但没有真正的恶意软件签名),则可能需要给它一个例外。
现在通过运行“ uxplay
”(在MSYS2终端窗口中)测试。如果您需要指定AudioSink,则Windows上有两个主要选择:旧的DirectSound插件“ -as directsoundsink
”,以及更现代的Windows Audio Session Api(Wasapi)插件“ -as wasapisink
”,它支持其他选项,例如
uxplay -as 'wasapisink device="<guid>"'
其中<guid>
指定其GUID的可用音频设备,可以使用“ gst-device-monitor-1.0 Audio
”找到: <guid>
具有{0.0.0.00000000}.{98e35b2b-8eba-412e-b840-fd2c2492cf44}
。如果未指定“ device
”,则使用默认的音频设备。
如果您希望使用-vs <videosink>
选项指定视频链接,则<videosink>
的某些选择是d3d11videosink
,d3dvideosink, d3dvideosink
, glimagesink
,glimagesink, gtksink
。
-vs "d3d11videosink fullscreen-toggle-mode=property fullscreen=true"
,或者可以使用Alt-Enter-Enter-Enter-Enter-Enter-Enter-Enter-Encter-Enge option -vs“ d3dd11VideOsink fullscreen-toggle mode = property”结合选项-vs "d3d11videosink fullscreen-toggle-mode=alt-enter"
。为了方便起见,如果使用或不使用全屏选项“ -vs d3d11videosink
”,将添加这些选项。 (Windows用户可能希望将“ vs d3d11videosink
”(无初始“ -
”)添加到Uxplay启动选项文件;请参阅“ Man Uxplay”或“ Uxplay -H”。)在Windows终端中,使用C:msys64mingw64binuxplay
在Windows终端中,也可以在没有MSYS2环境的情况下运行可执行UXPlay.exe。
选项:
-
”字符)(在环境变量$UXPLAYRC
给出,或~/.uxplayrc
或~/.config/uxplayrc
);以“ #
”开头的行被视为评论,被忽略。命令行选项在启动文件中取代选项。-n server_name (默认:uxplay); server_name@ hostName将是向您的iPad,iPhone等提供播放服务的名称,其中主机名是运行Uxplay的服务器的名称。现在,这也将是镜像显示(x11)窗口上方显示的名称。
-NH在AirPlay服务器名称末尾不要附加“@ HostName ”。
-H265激活“ Screenmulticodec”支持(AirPlay“功能”位42),用于在屏幕模式下接受H265(4K/HEVC)视频(4K/HEVC)视频。使用此选项时,创建了两个“视频管道”(一个用于H264,一个用于H265)。如果管道中的任何GSTREAMER插件特定于H264或H265,则将在每个管道中使用正确的版本。对于4K视频而言,有线客户端服务器以太网连接比WiFi首选,并且可能是客户所需的。只有要求使用H> 1080的分解“ -s WXH”,仅最近的Apple设备(M1/M2 Mac或iPad和某些iPhone)才能发送H265视频。 “ -h265”选项将默认分辨率(“ -s”选项)从1920x1080更改为3840x2160,并在30fps下将默认的最大帧量(“ -fps”选项)更改为30fps。
-pin [nnnn] :(自V1.67)首次连接时使用Apple-Style(一次性)“ PIN”身份验证:终端上显示四位数PIN代码,并且客户端屏幕显示输入此内容的登录提示。当自己使用“ -pin”时,为每个身份验证选择了一个新的随机引脚代码;如果使用“ -pin nnnn”(例如,“ -pin 3939”),则将设置一个不变的固定代码。身份验证将服务器添加到客户端的“受信任服务器”列表中,如果客户端和服务器公共密钥保持不变,则客户端将不需要重新验证。 (默认情况下,由于v1.68,服务器公共密钥是从MAC地址生成的,可以使用-M选项更改该密钥;有关密钥生成的替代方法,请参见-Key选项)。 (如果您希望Uxplay服务器使用PIN Authentication协议,则在UXPlay启动文件中添加行“ PIN”)。
-REG [ filename ] :(自v1.68)。如果使用“ -pin”,则此选项将在$ home/.uxplay.register(或在文件名中选择)中维护PIN-authtementicated的“受信任客户端”的寄存器。没有此选项,返回的客户跳过PIN-WATHENTICATION将被信任且未检查。如果在更公共的环境中使用Uxplay来记录客户详细信息,则此选项可能会很有用;寄存器是文本,每个客户端一行,带有客户端的公钥(基本64格式),设备ID和设备名称;评论(使用“#”)或删除相应客户端的线路(请参阅选项 - 限制,-block,-allow),以获取更多控制客户端访问的方法)。 (如果您想使用此功能,请在启动文件中添加一行“ reg”。)
-vsync [x] (在镜像模式下:)此选项(现在默认值)使用时间戳将音频与服务器上的视频同步,可选音频延迟(十进制)毫秒( x =“ 20.5”表示0.0205秒延迟延迟:允许正面或负延迟少于一秒钟。)在没有硬件视频解码的情况下,需要在诸如Raspberry Pi之类的低功率系统上。
-vsync no (在镜像模式下:)此关闭基于时间戳的音频视频同步,在uxplay-1.64之前还原默认行为。标准桌面系统似乎不使用时间戳就可以很好地工作:此模式适用于“实时流”,例如将UXPlay用作Mac计算机的第二个显示器或监视网络摄像头;有了它,没有删除视频帧。
-Async [x] (在仅音频(ALAC)模式中:)此选项使用时间戳将服务器上的音频与客户端上的视频同步,并具有可选的音频延迟(十进制)毫秒( x =“ 20.5”表示0.020205秒延迟:允许延迟或负延迟少于一秒钟。或轨道变化不会立即生效。原则上,这可能会通过使用-al
音频延迟设置来更改服务器向客户端报告的延迟(默认为0.25秒)来减轻这一点,但是目前更改此延迟似乎没有任何效果。
-Async no 。这仍然是只有音频模式下的默认行为,但是此选项可能是在“ uxplayrc”配置文件中关闭-async
选项的命令行选项。
-db low [: high ]从-30dB:0dB到低:0dB或低:高:高:高:高:高:高:高:高:高:高:下限必须为负(衰减);上限高可以是符号。 (GSTREAMER将数量激进限制为高,以免超过 +20dB)。重新缩放为“平坦”,因此对于-db -50:10,-7DB的空中播放衰减变化被转换为-7 x(60/30)= -14DB衰减,最大音量(airplay 0db)是10dB的增强,AirPlay -30dB将变为-50dB。请注意,最小型播放值(准确-30dB)被翻译为“静音”。
-taper提供了“锥形”弹奏音量控制配置文件(与Shairport-sync中的“ Dasl-Tapering”匹配):每次卷滑块的长度(或静音上方的步骤数,其中16个步骤=完整的步骤=满体积)减少了50%,感知体积减半(10dB衰减)。 (在低卷中进行修改,以便使用“未含有的”音量,如果较大。)
-s WXH EG -S 1920x1080(=“ 1080p”),H264视频的像素中的默认宽度和高度分辨率。 (使用-H265选项时,默认值为3840x2160(=“ 4K”)。)这只是向AirPlay客户端的请求,也许不是您获得的最终分辨率。 W和H是四位数或更小的全数字。请注意,高度像素大小是客户使用的控制格式的控制。例如,根据iPad的方式,将宽度动态调整为图像形状(肖像或景观格式)。
-s wxh@r如上所述,但也通知AirPlay客户端有关显示屏的屏幕刷新率。默认值为r = 60(60 Hz); R必须是小于256的整数。
-O打开显示窗口的“过度范围”选项。这通过使用选项-s WXH要求的一些像素(或其默认值1920x1080)来降低图像分辨率,从由GSTREAMER展示)。建议:除非有一些特殊的理由使用它,否则不要使用此选项。
-FS使用全屏模式,但仅与X11,Wayland,Vaapi和D3D11(Windows)一起使用。
-p允许您选择Uxplay使用的网络端口(如果服务器在防火墙后面,则需要打开这些端口)。 -P本身设置“遗产”端口TCP 7100、7000、7001,UDP 6000、6001、7011。 -PN(例如-P 35000)设置TCP和UDP端口N,N+1,N+2。 -p n1,n2,n3(逗号分隔值)分别设置每个端口; -p N1,N2设置端口N1,N2,N2+1。 -p TCP N或-P UDP N仅设置TCP或UDP端口。端口必须在[1024-65535]范围内。
如果未使用-P选项,则动态选择端口(随机),如果防火墙正在运行,该端口将无法工作。
-AVDEC力使用软件H264使用GSTREAMER元素AVDEC_H264(LIBAV H264解码器)解码。此选项应防止自动启动选择选择硬件加速的VideoSink插件,例如Vaapisink。
-VP解析器选择GSTREAMER PIPLINE的H264解析器元素,默认值为H264Parse。使用引号“ ...”允许添加选项。
-VD解码器选择Gstreamer Pipeline的H264解码器元素,而不是为您选择它的默认值“ DecoDebin”。软件解码由AVDEC_H264完成;各种硬件解码器包括:VAAPIH264DEC,NVDEC,NVH264DEC,V4L2H264DEC(这些要求可以使用适当的硬件)。使用引号“ ...”允许解码器名称包含一些参数。
-VC转换器选择GSTREAMER PIPLINE的VIDEOCONCONTER元素,而不是默认值“ VideoConvert”。当使用GPU使用Video4Linux2硬件编码时, -vc v4l2convert
也将使用GPU进行视频转换。使用引号“ ...”允许将某些参数包含在转换器名称中。
-vs VideoSink选择了GSTREAMER VIDEOSINK,而不是为您选择它的默认值“ AutovideOsink”。一些VideoSink选择是:Ximagesink,xvimagesink,vaapisink(用于Intel Graphics),GTKSINK,GLIMAGESINK,WAYLANDSINK,OSXVIDEOSINK(用于Macos),KMSSink,KMSSink(对于没有X11的系统,例如Raspberry Pi oslite)或fpsdisplaysink(如fpsdisplaysink(显示流式流媒体),帧率)。使用引号“ ...”允许将一些参数包含在VideoSink名称中。例如,vaapisink插件支持全屏模式,并使用-vs "vaapisink fullscreen=true"
获得;这也与waylandsink
合作。此类选项的语法特定于给定的插件(请参阅GSTREAMER文档),并且VideoSink的某些选择可能对您的系统不起作用。
-vs 0抑制流视频的显示。在镜像模式下,客户端的屏幕仍以每秒1帧的降低速率进行镜像,但未呈现或显示。如果服务器为“无头”(没有附带的屏幕显示视频),并且仅用于渲染音频,则应始终使用此选项,这将是带有无endended视频的镜像模式下的AAC失误压缩音频,并且质量出色的ALAC苹果无损失音频在仅播放音频模式下。
-V4L2硬件H264视频视频设置在GPU中由Video4linux2在GPU中解码。相当于-vd v4l2h264dec -vc v4l2convert
。
-bt709对于旧的Video4linux2插件的失败,可以识别苹果对数字电视的BT709颜色标准的“全范围颜色”变体的使用。 GSTREAMER-1.20.4不再需要此功能。
-RPI等于“ -v4l2”(对于Raspberry Pi模型5不有效,在Uxplay 1.67中删除)
-rpigl等于“ -rpi -vs闪光”。 (自Uxplay 1.67以来被删除)
-RPIFB等于“ -rpi -vs kmssink”(自Uxplay 1.67以来被删除)
-RPIWL等于“ -rpi -vs Waylandsink”。 (自Uxplay 1.67以来被删除)
- 当AudioSink选择GSTREAMINK AUDIOSINK时,而不是让AutoAudioSink为您选择它。一些AudioSink选择是:pulsesink,alsasink,pipeWiresink,osssink,oss4sink,jackaudiosink,osxaudiosink(用于macos),wasapisink,directSoundSink(用于Windows)。使用引号“ ...”可能允许一些可选参数(例如-as "alsasink device=..."
来指定非默认输出设备)。此类选项的语法特定于给定的插件(请参阅GSTREAMER文档),并且AudioSink的某些选择可能对您的系统不起作用。
-AS 0 (或仅-a )抑制流音频的播放,但显示流视频。
- al x在仅在AUDIO(ALAC)中指定音频延迟X ,并报告给客户端。允许[0.0,10.0]范围内的值,并将转换为整个微秒。默认值为0.25秒(250000 USEC)。 (但是,客户似乎忽略了此报告的延迟,因此此选项似乎不是功能。)
-ca文件名提供了一个文件(其中可以包含一个完整路径),用于输出的“封面艺术”(来自Apple Music等),仅在音频ALAC模式下。该文件在到达时被最新的封面艺术所覆盖。如果不使用此选项,则将封面艺术(JPEG格式)丢弃。与图像查看器一起使用,该图像会更改(例如每秒一次)。为了实现这一目标,请在后台运行“ uxplay -ca [path/to/]filename &
”,然后在前景中运行图像查看器。例如,使用feh
作为查看器:运行“ feh -R 1 [path/to/]filename
”(在将UxPlay放入后台的同一终端窗口中)。要退出,请使用ctrl-C fg ctrl-C
终止图像查看器,带来