警告:目前這個專案處於早期階段。版本Version 0.1很多東西還沒做完,bug很多,雖看起來粗糙但已經具備基本可用的功能。
Google Chromecast電視棒也有替代品?是的,NymphCast就是一款開源的螢幕投影/投屏解決方案。
用途有:
- 手機投放音樂(支援一對多控制)
- 手機投放影片(支援一對多控制)
- 使用媒體伺服器點播影片
- 螢幕保護程式(圖片輪播、智慧相框)
- 使用AngelScript撰寫的APP播放音樂
按照我用Chromecast 3代的經驗…NymphCast僅能媲美其一半功能。首先我會簡介NymphCast的架構,再來看要如何安裝NymphCast。
1. NymphCast架構簡介#
如果你真的很討厭Google的話就可以考慮使用NymphCast,因為Chromecast使用閉源協定,你必須使用Google認證的裝置連接,還必須登入Google帳號才能投放影片,幾乎無第三方軟體介入的可能。
於是,Maya Posch開發的NymphCast給了我們額外的選擇,特色是開放原始碼、免帳號、保護隱私的投放功能,不被單一廠商的硬體綁住。
但,與其說NymphCast是Chromecast替代品,倒不如說是模仿Chromecast的一套軟體。NymphCast等同Chromecast、Miracast以外的第三種協定,全新的生態系。
所以,NymphCast不相容Chromecast硬體,也不支援Chromecast的APP進行投放。目前NymphCast的APP支援度為0,只有作者自己做的參考實作客戶端能投放影片、音樂。
NymphCast比較適合擁有樹莓派(Raspberry Pi開發板)的用戶嘗試。過去已經有人嘗試把樹莓派變Chromecast了,像是 Raspicast + Omxplayer。而NymphCast試圖成為一個更完整的解決方案,提供伺服端、客戶端、媒體伺服器、APP擴充功能。
我們來看NymphCast運作原理:參照下圖,樹莓派好比Chromecast本體,在上面安裝NymphCast伺服器(Server)後,將它插到電視或者音響,再用手機NymphCast客戶端(Client)投放影片。影片可以從手機選取,或者從Media Server瀏覽。
影片解碼能力要看伺服器端的ffmpeg解碼效果,開發板應該播得動4K影片。或者你可以用Linux電腦主機當NymphCast伺服器。
順帶一提,「NymphCast」這個軟體名字有人覺得不好聽,因為英語裡面Nymph有「性成癮」(Nymphomaniac)的意思。但開發者應該沒有這個意思,可能是單純喜歡貓咪大戰爭才取這個名字的,又或者是取nymph「若蟲」的含意,表示這個軟體處於早期階段。
2. 安裝NymphCast#
GUI和Media Server的功能還沒做完,這裡跳過不解釋。
首先在要伺服端的硬體安裝NymphCast server,按照 Github作者指示編譯。
比如我要設定影片模式,這樣可以投放音樂和影片。Debian先安裝依賴套件
sudo apt install make git g++ libsdl2-image-dev libsdl2-dev libpoco-dev libswscale-dev libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev libpostproc-dev libswresample-dev pkg-config libfreetype6-dev libfreeimage-dev rapidjson-dev libcurl4-gnutls-dev
- 再編譯NymphCast。中間設定的時候選取video,設定投放為影片模式。
git clone https://github.com/MayaPosch/NymphCast.git
cd NymphCast
sudo ./install_linux.sh
- 安裝後要開放防火牆
sudo ufw allow 4004
sudo ufw reload
- NymphCast的指令稿會幫你設定一個systmed unit,還有匯入預設設定檔。設定檔位於
/usr/local/etc/nymphcast/nymphcast_config.ini
,裡面設定NymphCast行為
# 是否全螢幕,0為否,1為是
fullscreen=1
# 關閉影片輸出,如果填1的話會變成音樂模式
disable_video=0
# 是否開啟螢幕保護模式
enable_screensaver=0
# 串流緩衝大小 (KB)
buffer_size=20971520
# 是否啟用LCDProc客戶端
enable_lcdproc=0
- NymphCast Server是看後面的設定檔名字決定服務,例如我這裡
/etc/systemd/user/nymphcast.service
設定的是影片模式。
[Unit]
Description=NymphCast audio/video casting server
[Service]
ExecStart=/usr/local/bin/nymphcast_server -c /usr/local/etc/nymphcast/nymphcast_config.ini -a /usr/local/share/nymphcast/apps/ -w /usr/local/share/nymphcast/wallpapers/
Restart=always
RestartSec=5
[Install]
WantedBy=default.target
- 啟動Systemd服務。
sudo systemctl enable --now nymphcast.service
# 或者手動以nymphcast_server指令啟動
nymphcast_server -c /usr/local/etc/nymphcast/nymphcast_config.ini -a /usr/local/share/nymphcast/apps/ -w /usr/local/share/nymphcast/wallpapers/
- 接著安裝NymphCast客戶端。電腦版要 自行編譯,Android手機在 Google Play下載APK。
3. 投放方式#
讓電腦和手機處於同一個Wifi下。
在手機APP上應該會看到伺服器的名字。如果有多個會並列顯示
可以把多個伺服器分在一組,實現二台裝置同時播送。但這功能好像有bug,無法真的加入同一個群組,導致我得手動切換。
確認有連上線後,從下面的清單選取要播放的檔案(他會掃描手機全部的媒體),再按底部的播放按鈕。
伺服端就會出現影片畫面了,你可從手機端控制進度和音量。影片目前僅支援PGS內嵌字幕,如果lag嚴重請檢查網路速度,或者把串流緩衝調高。
若播放的是音樂,則只會出現頻譜。
如果想使用NymphCast的螢幕保護程式模式:將伺服端服務停止,將設定檔的enable_screensaver
設定為1,再將要輪播展示的圖片放到/usr/local/share/nymphcast/wallpapers/
,之後重啟服務。
圖片就會每15秒進行輪播
目前還不能投影手機螢幕,得搭配另外方案。既然樹莓派能裝任何東西,那就有很多方案可以用,比方說 Scrcpy、 ScreenStream等等。