Google推出的Chromecast產品,是不錯的影音投放工具,而且很多電視盒和音箱都有內建Chromecast功能。投放的工具有了,接著就是軟體支援度了,Linux電腦端要投放內容到Chromecast,有以下軟體可以辦到:
- Chromium系瀏覽器內建的 投放功能
- VLC
- Gnomecast
- pychromecast
- mkchromecast
- go-chromecast
- catt
其中Chromium的操作最為簡單,畢竟是自家人研發的,只要準備瀏覽器就能像Google Meet那樣分享電腦螢幕到Chromecast,部份網站還能直接投放影片。
不過如果我們想要稍稍擺脫Google的控制,並想要多一點自訂性操作的話,那就使用第三方開發者製作的Chromecast投放工具吧。Chromecast雖然是專有協定,但厲害的開發者做出了能跟Chromecast溝通的程式。在眾多選項中我選擇功能最多的「mkchromecast」。
mkchromecast能夠投放本機影音檔案到Chromecast,支援自訂位元率(音質最高可達24-bit/96kHz),並搭配PulseAudio的多重輸出功能來快速切換音訊。
最後就是把Linux螢幕投放到Chromecast最吸引我了。
1. 測試環境#
- KDE Plasma 6 X11
- PipeWire 1.0.7 (相容Pulse Audio)
- Chromecast第3代
請確保已用手機的Google Home APP設定好Chromecast並連上Wifi。
如果不想用手機,那麼用這個指令稿也可以從Linux直接設定Chromecast: Set up a Chromecast from a Linux PC
2. 安裝mkchromecast#
mkchromecast支援Linux和macOS,程式是用Python寫的,安裝方式參考 作者說明
Arch Linux從AUR安裝:
yay -S mkchromecast-git
Ubuntu 下載PulseAudio版的deb檔安裝:
sudo apt install ./mkchromecast-pulseaudio_0.3.8.1-1_all.deb
3. 搜尋Chromecast裝置#
讓Chromecast和Linux電腦處於同一個Wifi下。
可能要暫時關閉Linux防火牆
sudo ufw disable
使用指令
mkchromecast -t
啟動,點選系統匣的按鈕掃描附近裝置確認Chromecast裝置有出現在終端機列表
不要關閉這個終端機,開第二個終端機。然後看下面的mkchromecast使用例。
mkchromecast在投放的時候會自動選取第一個找到的裝置,若有多個裝置請加上IP引數(--host 192.168.1.101
)或名稱(--name 名稱
)。
4. 投放音訊到Chromecast#
影音傳輸到Chromecast之前會經過ffmpeg轉碼,因此Linux端的音效軟體(EasyEffects)和畫質放大工具(Anime4K)會失效。
使用範例如下,指定編碼為flac,位元率、取樣率,並設定鍵盤控制音量,並傳入檔案"/home/user/sample.flac"
mkchromecast -c flac -b 128 --sample-rate 96000 --control -i "/home/user/sample.flac"
播放音訊的時候按u、d調整音量,p暫停。
5. 將PulseAudio與Chromecast連線#
本功能跟上述投放音訊的差別在於,mkchromcast會製造一個PulseAudio的sink,讓你可以用pavucontrol切換音訊輸出源,從而靈活切換播放的音樂。
比如,同時開著Chromium和Spotify,再透過pavucontrol面板切換,就不需要頻繁打指令來播放音樂了。
先裝
pavucontrol
套件。接著,啟動mkchromecast,不要加任何引數
mkchromecast
- 在pavucontrol面板就會看到一個新sink,音訊播放的時候切換過去,音樂就會跟著傳到Chromecast。
6. 投放影片到Chromecast#
附上影片路徑並指定畫質,還可以加上字幕檔:
mkchromecast --resolution 1280x720 -i "/home/user/sample.mp4" --subtitles "/home/user/sample.mp4.srt"
mkchromecast尚可透過yt-dlp抓Youtube影片:
mkchromecast "https://www.youtube.com/watch?v=JIBGYK8pxEY"
7. 投放螢幕到Chromecast#
目前此功能僅支援X11工作階段。
投放目前螢幕到Chromecast:
mkchromecast --video --screencast --resolution 1920x1080
延遲蠻高的說,或許只能當簡報使用。
至於瀏覽器投放,有一個 Cast with mkchromecast的擴充功能,但設定得安裝MPV的Python套件,很麻煩,還不如用Chromium內建投放功能。