注意:不支援 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 上進行測試。
在 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
目錄的內容,而不會影響-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
)。 (如果「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-pvel. 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)和“ x ”用於 X11 支持,儘管這些可能已經安裝; 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)視訊的硬體解碼。模型尚未實現。啟動 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 可以在無法運行 Monterey 的舊版 macOS 系統上運行,或者可以運行 Monterey 但不能運行 AirPlay。
這些適用於 macOS 的說明假定已安裝 Xcode 命令列開發人員工具(如果已安裝 Xcode,請開啟終端,鍵入「sudo xcode-select --install」並接受條件)。
也假設安裝了 CMake >= 3.13:這可以使用套件管理器 MacPorts ( sudo port install cmake
)、Homebrew ( brew install cmake
) 或從 https://cmake.org/download/ 下載來完成。如果您要使用 git 來取得 UxPlay,也請安裝git
。
接下來安裝 libplist 和 openssl-3.x。請注意,這些庫的靜態版本將在 macOS 建置中使用,因此如果您願意,可以在建置 uxplay 後卸載它們。
如果您使用 Homebrew: brew install libplist openssl@3
如果您使用 MacPorts: sudo port install libplist-devel openssl3
否則,從原始程式碼建立 libplist 和 openssl:請參閱本自述文件末尾附近的說明;需安裝開發工具(autoconf、automake、libtool等)。
接下來取得最新的 macOS 版本的 GStreamer-1.0。
使用「官方」GStreamer(推薦 MacPorts 和 Homebrew 用戶) :從 https://gstreamer.freedesktop.org/download/ 安裝適用於 macOS 的 GStreamer 版本。 (此版本包含自己的 pkg-config,因此您無需安裝。)安裝 gstreamer-1.0 和 gstreamer-1.0-devel 軟體包。下載後,按住 Shift 鍵並點擊它們進行安裝(它們安裝到 /Library/FrameWorks/GStreamer.framework)。如果 Homebrew 或 MacPorts 使用者使用「官方」版本,則不應安裝(或不應卸載)其套件管理器提供的 GStreamer。
使用 Homebrew 的 GStreamer :需要 pkg-config:(「brew install pkg-config gstreamer」)。這會導致 Homebrew 安裝大量額外的軟體包作為依賴項。 Homebrew gstreamer 安裝最近已重新設計為名為gstreamer
單一“公式”,現在無需在環境中設定 GST_PLUGIN_PATH 即可運作。 Homebrew 將 gstreamer 安裝到(HOMEBREW)/lib/gstreamer-1.0
,其中(HOMEBREW)/*
在 Apple Silicon Mac 上是/opt/homebrew/*
,在 Intel Mac 上是/usr/local/*
;不要在那裡放置任何額外的非 Homebrew 插件(您自己建造的),而是將 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-base gstreamer1-gst-plugins-good gstreamer1-gst-plugins - bad gstreamer1-gst-libav"。要在macOS 上支援X11,請使用特殊的cmake 選項-DUSE_X11=ON
編譯UxPlay,並使用-vs ximagesink 從XQuartz 終端運行它;較舊的非視網膜Mac 在使用時需要較低的解析度X11: uxplay -s 800x600
。
安裝GStreamer 後,建置並安裝uxplay:開啟終端並切換到UxPlay 來源目錄(「UxPlay-master」用於zip 檔案下載,「UxPlay」用於「git clone」下載)並使用「cmake . ; make ; 建置/安裝” sudo make install "(與 Linux 相同)。
在檢查GStreamer 警告時運行UxPlay(在運行UxPlay 之前使用「export GST_DEBUG=2」執行此操作)顯示,預設(自UxPlay 1.64 起)使用時間戳進行視訊同步,許多視訊幀被丟棄(僅在macOS 上) ,可能是由於 GStreamer 警告中顯示的另一個錯誤(關於 videometa)。建議:使用新的 UxPlay「無時間戳」選項「 -vsync no
」 (可以在 uxplayrc 設定檔中新增一行「vsync no」)。
在安裝了 GStreamer 的 macOS 上,唯一可用的 videosink 似乎是 glimagesink(autovideosink 的預設選擇)和 osxvideosink。視窗標題不顯示Airplay 伺服器名稱,但該視窗對螢幕共用應用程式(例如Zoom)可見。唯一可用的音訊接收器似乎是 osxaudiosink。
無論是否選擇,請始終使用選項 -nc。這是針對 macOS 上 GStreamer 視訊接收器問題的解決方法:如果在鏡像視窗仍開啟時 GStreamer 管道被破壞,則會發生段錯誤。
對於 glimagesink,解析度設定「-s wxh」不會影響(小)初始 OpenGL 鏡像視窗大小,但可以使用滑鼠或觸控板擴展該視窗。相反,使用“-vs osxvideosink”創建的視窗最初很大,但寬高比錯誤(拉伸圖像);在這種情況下,當透過拖曳視窗的一側來變更視窗寬度時,縱橫比會發生變化;選項-vs "osxvideosink force-aspect-ratio=true"
可用於使視窗在首次開啟時具有正確的寬高比。
下載並安裝Bonjour SDK for Windows v3.0 。您可以在 Softpedia.com 上下載 SDK,無需任何註冊,或從 Apple 官方網站 https://developer.apple.com/download 取得(Apple 讓您註冊為開發人員,以便從他們的網站訪問它)。這應該會將 Bonjour SDK 安裝為C:Program FilesBonjour SDK
。
(這是針對 64 位元 Windows 的;32 位元 Windows 的建置應該是可能的,但尚未測試。)將使用類似 UNIX 的 MSYS2 建置環境:從官方網站 https://www 下載並安裝 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 已隨MSYS2 安裝) :
pacman -S mingw-w64-x86_64-libplist mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base
如果您正在嘗試不同的 Windows 建置系統,可以從官方 GStreamer 網站取得適用於 Windows 的 GStreamer 的 MSVC 版本,但僅對 MSYS2 上的 MinGW 64 位元建置進行了測試。
cd 到 UxPlay 來源目錄,然後「 mkdir build
」和「 cd build
」。建造過程假設 Bonjour SDK 安裝在C:Program FilesBonjour SDK
。如果它在其他地方,請設定環境變數 BONJOUR_SDK_HOME 指向它的位置。然後建構 UxPlay
cmake ..
ninja
假設其中任何一個都沒有錯誤,您將在目前(“build”)目錄中建立 uxplay 可執行檔uxplay.exe 。其他版本中提供的「sudo make install」和「sudo make uninstall」功能在 Windows 上不可用;相反,MSYS2 環境具有/mingw64/...
可用,您可以在C:/msys64/mingw64/bin
中安裝 uxplay.exe 可執行檔(以及C:/msys64/mingw64/share/...
中的線上說明頁和文件) ) 和
cmake --install . --prefix /mingw64
為了能夠查看線上說明頁,您需要使用「 pacman -S man
」安裝線上說明頁檢視器。
要執行uxplay.exe,您需要使用pacman -S mingw-w64-x86_64-gst-<plugin>
安裝一些 gstreamer 插件包,其中所需的具有由以下給出的<plugin>
您可能使用的其他可能的 MSYS2 gstreamer 外掛程式包列在 MSYS2 包中。
您還需要向 uxplay 可執行檔 uxplay.exe 授予透過 Windows 防火牆存取資料的權限。當您第一次執行 uxplay 時,系統可能會自動向您提供執行此操作的選擇,或者您可能需要使用Windows 設定-> 更新和安全性-> Windows 安全性-> 防火牆和網路保護-> 允許應用程式通過防火牆來執行此操作。如果您的病毒防護將 uxplay.exe 標記為「可疑」(但沒有真正的惡意軟體簽章),您可能需要給它一個例外。
現在透過執行「 uxplay
」(在 MSYS2 終端機視窗中)進行測試。如果您需要指定音訊接收器,Windows 上有兩個主要選擇:較舊的 DirectSound 插件“ -as directsoundsink
”,以及更現代的 Windows 音訊會話 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
、 glimagesink
、 gtksink
。
-vs "d3d11videosink fullscreen-toggle-mode=property fullscreen=true"
始終處於全螢幕模式,或者能夠使用 Alt-Enter 鍵切換到或退出全螢幕模式與選項-vs "d3d11videosink fullscreen-toggle-mode=alt-enter"
組合。為了方便起見,如果僅使用-vs d3d11videosink
(帶或不帶全螢幕選項“-fs”),則會新增這些選項。 (Windows 使用者可能希望將「 vs d3d11videosink
」(無首字母「 -
」)新增至 UxPlay 啟動選項檔案;請參閱「man uxplay」或「uxplay -h」。)可執行檔 uxplay.exe 也可以在沒有 MSYS2 環境的情況下在 Windows 終端機中使用C:msys64mingw64binuxplay
運行。
選項:
-
」字元)(由環境變數$UXPLAYRC
或~/.uxplayrc
或~/.config/uxplayrc
給出);以「 #
」開頭的行被視為註解並被忽略。命令列選項取代啟動檔案中的選項。-n 伺服器名稱(預設:UxPlay); server_name@ hostname將是為您的 iPad、iPhone 等提供 AirPlay 服務的名稱,其中hostname是執行 uxplay 的伺服器的名稱。現在,這也將是鏡像顯示 (X11) 視窗上方顯示的名稱。
-nh不要在 AirPlay 伺服器名稱末尾附加「@主機名稱」。
-h265啟動「ScreenMultiCodec」支援(AirPlay「功能」位元 42),以便在螢幕鏡像模式下除了 h264 視訊 (1080p) 之外還接受 h265 (4K/HEVC) 視訊。使用此選項時,將建立兩個「視訊管道」(一個用於 h264,一個用於 h265)。如果管道中的任何 GStreamer 插件特定於 h264 或 h265,則每個管道中將使用正確的版本。對於 4K 視頻,有線客戶端-伺服器乙太網路連接優於 Wifi,並且客戶端可能需要這種連接。如果請求解析度「-s wxh」且 h > 1080,則只有最新的 Apple 裝置(M1/M2 Mac 或 iPad 以及某些 iPhone)可以傳送 h265 影片。 「-h265」選項將預設解析度(「-s」選項)從 1920x1080 變更為 3840x2160,並將預設最大幀速率(「-fps」選項)保留為 30fps。
-pin [nnnn] :(自 v1.67 起)當新用戶端第一次連線時使用 Apple 風格(一次性)「pin」驗證:終端機上顯示四位數的 pin 程式碼,且用戶端螢幕顯示登入提示,需要輸入此資訊。當「-pin」單獨使用時,每次認證都會選擇一個新的隨機pin碼;如果使用“-pin nnnn”(例如“-pin 3939”),這將設定一個不變的固定代碼。身份驗證將伺服器新增至客戶端的「受信任伺服器」清單中,並且只要用戶端和伺服器公鑰保持不變,用戶端就不需要重新進行身份驗證。 (預設情況下,從 v1.68 開始,伺服器公鑰是從 MAC 位址產生的,可以使用 -m 選項變更該位址;有關金鑰產生的替代方法,請參閱 -key 選項)。 (如果您希望 UxPlay 伺服器使用 pin 驗證協議,請在 UxPlay 啟動檔案中新增一行「pin」)。
-reg [檔名] :(自 v1.68 起)。如果使用“-pin”,則此選項在 $HOME/.uxplay.register (或可選地,在filename中)維護經過 pin 驗證的“受信任客戶端”的暫存器。如果沒有此選項,跳過 PIN 驗證的返回用戶端將受到信任且不會被檢查。如果 UxPlay 在更公開的環境中使用,此選項可能會很有用,以記錄用戶端詳細資訊;暫存器是文本,每個客戶端一行,包含客戶端的公鑰(base-64 格式)、裝置 ID 和裝置名稱;註解掉(使用「#」)或刪除行會取消註冊對應的用戶端(請參閱選項 -restrict、-block、-allow 以了解更多控制客戶端存取的方法)。 (如果您想使用此功能,請在啟動檔案中新增一行「reg」。)
-vsync [x] (在鏡像模式下:)此選項(現在是預設值)使用時間戳將伺服器上的音訊與視訊同步,可選音訊延遲(十進位)毫秒( x =“20.5”表示0.0205 秒延遲:允許小於一秒的正延遲或負延遲。
-vsync no (在鏡像模式下:)這會關閉基於時間戳的音訊視訊同步,恢復 UxPlay-1.64 之前的預設行為。標準桌面系統似乎在不使用時間戳的情況下運作良好:此模式適合“即時串流”,例如使用 UxPlay 作為 mac 電腦的第二個顯示器,或監控網路攝影機;有了它,視頻幀不會丟失。
-async [x] (在純音訊 (ALAC) 模式下:)此選項使用時間戳將伺服器上的音訊與客戶端上的視訊同步,並具有可選的音訊延遲(十進位)毫秒( x =“20.5 」表示0.0205秒延遲:允許小於一秒的正或負延遲。)因為客戶端添加了視頻延遲來考慮延遲,所以異步模式下的伺服器添加了等效的音頻延遲,這意味著音頻發生變化,例如暫停或軌道變更不會立即生效。原則上,可以透過使用-al
音訊延遲設定來更改伺服器向客戶端報告的延遲(預設為 0.25 秒)來緩解此問題,但目前更改此設定似乎沒有任何效果。
-異步沒有。這仍然是純音訊模式下的預設行為,但此選項可用作關閉「uxplayrc」設定檔中設定的-async
選項的命令列選項。
-db low [: high ]將 AirPlay 音量控制衰減(增益)從 -30dB:0dB 重新調整為low :0dB 或low : high 。下限low必須為負值(衰減);上限高點可以是任一符號。 (GStreamer 將音量增強限制為高,使其不能超過 +20dB)。重新縮放是「平坦」的,因此對於 -db -50:10,Airplay 衰減 -7dB 的變化會轉換為 -7 x (60/30) = -14dB 衰減,並且最大音量 (AirPlay 0dB)是10dB 增強, Airplay -30dB 將變成-50dB。請注意,最小 AirPlay 值(準確地說是 -30dB)被轉換為「靜音」。
-taper提供「錐形」Airplay 音量控制設定檔(與shairport-sync 中稱為「dasl-tapering」的設定檔相符):每次音量滑桿的長度(或靜音上方的步數,其中16 步=完整)音量)減少 50%,感知音量減半(衰減 10dB)。 (這是在低音量時修改的,如果聲音較大,則使用“非錐形”音量。)
-s wxh例如 -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),透過添加未使用像素的空邊界框(這會在過掃描的全螢幕顯示中丟失,並且不會丟失)來降低圖像分辨率。建議:除非有特殊原因,否則不要使用此選項。
-fs使用全螢幕模式,但僅適用於 X11、Wayland、VAAPI 和 D3D11 (Windows)。
-p可讓您選擇 UxPlay 使用的網路連接埠(如果伺服器位於防火牆後面,則需要開啟這些連接埠)。 -p 本身設定「舊」埠 TCP 7100、7000、7001、UDP 6000、6001、7011。 -p n1,n2,n3(逗號分隔值)分別設定每個連接埠; -p n1,n2 設定連接埠 n1,n2,n2+1。 -p tcp n 或 -p udp n 僅設定 TCP 或 UDP 連接埠。連接埠必須在 [1024-65535] 範圍內。
如果不使用 -p 選項,則會動態(隨機)選擇端口,如果防火牆正在運行,這將不起作用。
-avdec強制使用 Gstreamer 元素 avdec_h264(libav h264 解碼器)進行軟體 h264 解碼。此選項應防止 autovideosink 選擇硬體加速的 videosink 插件,例如 vaapisink。
-vp解析器選擇 GStreamer 管道的 h264 解析器元素,預設為 h264parse。使用引號“...”可以新增選項。
-vd解碼器選擇 GStreamer 管道的 h264 解碼器元素,而不是為您選擇的預設值「decodebin」。軟體解碼由avdec_h264完成;各種硬體解碼器包括:vaapih264dec、nvdec、nvh264dec、v4l2h264dec(這些需要有適當的硬體可用)。使用引號“...”允許將某些參數包含在解碼器名稱中。
-vc轉換器選擇GStreamer管道的videoconverter元素,而不是預設值「videoconvert」。當使用 GPU 進行 Video4Linux2 硬體解碼時, -vc v4l2convert
也將使用 GPU 進行視訊轉換。使用引號“...”允許轉換器名稱包含一些參數。
-vs videosink選擇 GStreamer 視訊接收器,而不是為您選擇的預設值「autovideosink」。一些videosink 選項包括:ximagesink、xvimagesink、vaapisink(適用於英特爾顯示卡)、gtksink、glimagesink、waylandsink、osxvideosink(適用於macOS)、kmssink(適用於沒有X11 的系統,如Raspberry Pi OS lite)或fpsssink(適用於沒有X11 的系統,如Raspberry Pi OS lite)或顯示串流媒體幀速率)幀率)。使用引號“...”允許視訊接收器名稱中包含一些參數。例如,vaapisink外掛程式支援全螢幕模式,透過-vs "vaapisink fullscreen=true"
取得;這也適用於waylandsink
。此類選項的語法特定於給定插件(請參閱 GStreamer 文件),並且某些 videosink 選擇可能不適用於您的系統。
-vs 0抑制串流影片的顯示。在鏡像模式下,客戶端的螢幕仍以每秒 1 幀的降低速率進行鏡像,但不會渲染或顯示。如果伺服器是「無頭」(沒有連接螢幕來顯示視訊),並且僅用於渲染音頻,則應始終使用此選項,這將是鏡像模式下的AAC 有損壓縮音頻,具有未渲染的視訊和優質ALAC僅為 Airplay 音訊模式的 Apple 無損音訊。
-v4l2 Video4Linux2 在 GPU 中進行硬體 h264 視訊解碼的視訊設定。相當於-vd v4l2h264dec -vc v4l2convert
。
-bt709解決舊版 Video4Linux2 外掛無法識別 Apple 使用數位電視 bt709 顏色標準的不常見(但允許)「全範圍顏色」變體的解決方法。 GStreamer-1.20.4 及其向後移植不再需要它。
-rpi相當於「-v4l2」(對 Raspberry Pi 型號 5 無效,並在 UxPlay 1.67 中刪除)
-rpigl相當於「-rpi -vs glimagesink」。 (自 UxPlay 1.67 起已刪除)
-rpifb相當於「-rpi -vs kmssink」(自 UxPlay 1.67 起已刪除)
-rpiwl相當於「-rpi -vs waylandsink」。 (自 UxPlay 1.67 起已刪除)
-asaudiosink選擇 GStreameraudiosink,而不是讓 autoaudiosink 為您選擇它。一些音訊接收器選擇包括:pulsesink、alsasink、pipewiresink、osssink、oss4sink、jackaudiosink、osxaudiosink(適用於 macOS)、wasapisink、directsoundsink(適用於 Windows)。使用引號“...”可能允許一些可選參數(例如-as "alsasink device=..."
來指定非預設輸出裝置)。此類選項的語法特定於給定插件(請參閱 GStreamer 文件),並且某些音訊接收器選擇可能不適用於您的系統。
-as 0 (或只是-a )禁止播放串流音頻,但顯示串流視訊。
-al x指定純音訊 (ALAC) 中的音訊延遲x (十進位)秒,報告給客戶端。允許使用 [0.0, 10.0] 秒範圍內的值,並將轉換為整數微秒。預設值為 0.25 秒 (250000 usec)。 (但是,客戶端似乎忽略了報告的延遲,因此此選項似乎不起作用。)
-ca filename提供一個檔案(其中檔案名稱可以包含完整路徑),用於在純音訊 ALAC 模式下輸出「封面藝術」(來自 Apple Music等)。該文件在到達時會被最新的封面藝術覆蓋。如果不使用此選項,封面藝術(jpeg 格式)將被丟棄。與圖像檢視器一起使用,如果圖像發生變化,則該圖像檢視器會重新載入圖像,或定期(例如每秒一次)。要實現此目的,請在背景執行“ uxplay -ca [path/to/]filename &
”,然後在前台執行映像檢視器。例如,使用feh
作為檢視器:執行「 feh -R 1 [path/to/]filename
」(在 uxplay 置於後台的相同終端視窗中)。若要退出,請使用ctrl-C fg ctrl-C
終止影像檢視器,帶