若要將iPhone/iPad的螢幕無線投影(鏡像)到其他螢幕,很多人會使用內建的「AirPlay」功能來投放吧。AirPlay是Apple公司研發的專有無線協定,Apple自家裝置都有內建,讓你可以把iPhone影片投放到Apple TV觀看。
不過這樣要依賴特定程式才能看呢,於是有開發者將AirPlay的協定重新實作,製作出了跨平台的「UxPlay」軟體!完全開源免費,UxPlay支援Linux、Windows、macOS、FreeBSD、Raspberry Pi系統,可以將任意電腦變成AirPlay接收端(receiver)。有樹莓派的用戶更能土砲一個AirPlay音箱。
跟類似軟體 Shairport Sync比起來,UxPlay多了投影螢幕的功能。
開啟Wifi,您就能將iPhone的畫面透過UxPlay投影到電腦上了。
UxPlay也能用來播放純音訊串流,用電腦無線播放手機的音樂,例如Apple Music。
另外,搭配OBS Studio的畫面擷取功能,即可像Scrcpy擷取Android螢幕那樣,在Linux電腦實現iOS螢幕錄影。
1. 安裝UxPlay#
詳細文件參考 Github說明
許多Linux發行版已提供UxPlay套件,連樹莓派也有。但是macOS和Windows版需要自行編譯。
Linux#
- Ubuntu/Debian從官方套件庫安裝:
sudo apt install uxplay
Arch Linux從AUR安裝UxPlay:
yay -S uxplay
- UxPlay安裝後,需要開放以下防火牆通訊埠。用UFW指令的話就是:
sudo ufw allow 5353
sudo ufw allow 7100
sudo ufw allow 7000
sudo ufw allow 7001
sudo ufw allow 6000
sudo ufw allow 6001
sudo ufw allow 7011
sudo ufw reload
- Linux還需要啟用Avahi服務
sudo systemctl enable --now avahi-daemon.service
Windows#
此處以Windows 11為例。
至 Apple Developers官網,登入Apple ID,下載並安裝
Bonjour SDK for Windows v3.0
下載 MSYS2,安裝後應該會自動開啟終端機,把它關掉。
在Windows程式列表,開啟「MSYS2 MINGW64」終端機
安裝以下依賴套件
pacman -Syu
pacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc
pacman -S mingw-w64-x86_64-libplist mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base
- 複製Git儲存庫,編譯安裝。
uxplay.exe
應會安裝到Windows的C:\msys64\mingw64\bin\
資料夾。
git clone https://github.com/FDH2/UxPlay
cd UxPlay
mkdir build
cd build
cmake ..
ninja
cmake --install . --prefix /mingw64
允許UxPlay通過防火牆:在Windows搜尋欄鍵入「Windows防火牆設定」,點選「允許應用程式通過防火牆」,新增應用程式,路徑填
C:\msys64\mingw64\bin\uxplay.exe
日後要啟動uxplay,請用「MSYS2 MINGW64」終端機啟動:
cd "C:\msys64\mingw64\bin"
./uxplay.exe <參數>
或者找到C:\msys64\mingw64\bin\uxplay.exe
檔案,點二下開啟也行。
macOS#
雖然macOS Monterey以後已經有類似AirPlay伺服器的功能,但是UxPlay的優勢在於讓舊版本macOS也能享有此功能。
此處以macOS Ventura為例。
- 開啟終端機,安裝Xcode command-line tools
sudo xcode-select --install
安裝 Homebrew
安裝以下依賴套件
brew install cmake git libplist openssl@3
UxPlay作者建議手動安裝GStreamer發表的套件,不要用Homebrew的。至 官網下載
1.22.10 runtime installer
和1.22.10 development installer
二個pkg檔。接著在Finder按Shift安裝套件。複製UxPlay儲存庫,編譯安裝
git clone https://github.com/FDH2/UxPlay
cd UxPlay
cmake .
make
sudo make install
值得一提的是Mac電腦可以充當AirPlay的伺服端與客戶端,使用伺服端的模式下,Mac等同多出第二個螢幕。
2. 投放螢幕到UxPlay#
確保iPhone和電腦位於同一個Wifi網路下,並且訊號要好。如果你需要低延遲,那就將iPhone插上電腦,用USB分享給電腦上網。
於電腦執行以下指令,FPS上限60,螢幕解析度1920x1080,更新率60。
uxplay -p -fps 60 -s 1920x1080@60
如果你是Windows需要全螢幕,請加入以下參數就能按Alt與Enter切換:
uxplay -p -fps 60 -s 1920x1080@60 -vs "d3d11videosink fullscreen-toggle-mode=alt-enter"
開啟iPhone的控制中心,點選投放,會在列表看到uxplay+電腦名稱的裝置
這樣電腦就會跳出iPhone畫面的視窗了,iPhone螢幕旋轉畫面會跟著轉,按F11切換全螢幕模式。
只要網路穩定,大螢幕觀看影片、玩遊戲都不是問題,音訊會一併傳過來。
不過含有DRM內容的影片(如Netflix)可能就無法透過AirPlay播放。
3. AirPlay串流音樂#
上面提到Uxplay可以不播放畫面,只串流純音樂。
- 啟動UxPlay:
uxplay
在iPhone播放音樂,再選取AirPlay的播放對象。
這裡的AirPlay協定最高支援到ALAC 44Hz/16bit,無法串流真正的無損音質。
4. 將UxPlay設定為常駐系統服務#
以樹莓派的Debian系統為例,Linux透過Systemd Unit新增開機服務,開機後自動啟動,可被同一Wifi下的iOS裝置探索。
- 新增使用者服務
vim ~/.config/systemd/user/uxplay.service
- 填入以下內容,設定全螢幕啟動。(註解:如果你的樹莓派沒接螢幕,請改用純音訊模式的引數)
[Unit]
Description=UxPlay service
After=syslog.target network.target
[Service]
ExecStart=/usr/bin/uxplay -p -fs -fps 60 -s 1920x1080@60
[Install]
WantedBy=default.target
- 設定開機自動啟動UxPlay服務
systemctl --user daemon-reload
systemctl enable --now uxplay
5. 使用OBS Studio錄製iPhone畫面#
有時候跑一些大型遊戲,又在iPhone上進行錄影的話會給手機帶來很大負擔,這個時候可以透過OBS Studio擷取UxPlay的視窗,降低手機負擔。
安裝 OBS Studio
開啟OBS Studio,點選「新增畫面擷取」,選取UxPlay的視窗即可。
6. 用藍芽反向控制iPhone#
專有軟體「ApowerMirror」有一個功能是反控投放螢幕的iPhone,我想說iOS什麼時候開放這麼高的權限了?原來它是用軟體模擬出一個藍芽滑鼠再與iOS配對呀!
理論上,Linux用 taoso/btk或 UniControlHub做一個假的藍芽滑鼠出來,再與iPhone配對,即可遠端控制iPhone輸入。
如果不行,大不了再準備一支實體藍芽滑鼠就好。