前陣子看到 NiceCode 耐斯扣 NiceChord 好和弦釋出了自架 Jitsi 來上遠端音樂課的教學,勾起了我的好奇心:有沒有辦法,不修改設定檔;甚至,連自己架站都不用,就達成高音質、低延遲的目標呢?
有道是前人種樹,後人乘涼,一搜尋就跳出這篇文章,其中列出了許多重點:
How to video conference in high-quality stereo using Jitsi Meet
作者是做音樂教育的,偶爾寫寫程式,熱愛自由軟體……(咦?這似曾相識的感覺是怎麼回事? 🤣)
稍作研究之後發現前景看好啊!以下就先列操作步驟,真的很有興趣的人可以再看看技術細節。
操作步驟#
開啟高音質功能的關鍵,在於特調的 Jitsi 會議網址。
網址的基底是這樣的:
https://主機名/房間名#config.enableNoisyMicDetection=false&config.audioQuality.stereo=true&config.audioQuality.opusMaxAverageBitrate=128000
首先得找一個有口碑的公開 Jitsi 服務,把主機名填進去。在台灣的話,個人推薦數位政委唐鳳在國家高速網路中心架的公開 Jitsi 服務 - jitsi.pdis.dev。(低延遲的關鍵在此)
再來決定房間名,實務上可以取一個比較不會撞名的名字。這邊是示範用途,先用個簡單的 HelloWorld。
主機名、房間名都填入之後得到:
https://jitsi.pdis.dev/HelloWorld#config.enableNoisyMicDetection=false&config.audioQuality.stereo=true&config.audioQuality.opusMaxAverageBitrate=128000
接著把這串網址貼到瀏覽器,開房間~沒意外的話,這時候房間裡面只會有你自己,且系統會賦予你主持人的權限。
對隱私要求高的主持人,可以到選單 More actions > Security options 打開下面的選項:
- Enable lobby - 加入需經主持人同意
- Add password - 為房間設定密碼,知道密碼才能加入
最後,把剛剛的特調網址分享給其他參與者,即可開始上課。
注意!
網址的特調部分在進入房間後會被套用然後消失。要是在此時加入書籤,未來用這個書籤進房間,就會失去高音質的功能。如果要建立書籤,請記得確認書籤裡紀錄的網址有包含特調的部分。
技術細節#
Jitsi 裡面的 config.js
是拿來設定預設值的。若身為網站管理者,可以修改這個檔案,讓該站高音質功能預設為開啟(好和弦的做法);若是純粹的網站使用者,雖然改不了這個檔案,但是 Jitsi 有個機制,可以覆寫預設的設定值。
我們可以先看看 config.js
裡有哪些設定值,到 configWhitelist.js
確認一下想改的設定值是可以覆寫的。另外 ScreenObtainer.js
裡可以發現,只要開啟 stereo
(立體聲),以下功能都會自動關閉:
- Auto Gain Control
- 自動增益(自動調整麥克風大小聲)
- 對應設定值
disableAGC
- Acoustic Echo Cancellation
- 回音消除
- 對應設定值
disableAEC
- Noise Suppression
- 降噪
- 對應設定值
disableNS
所以只要開啟 stereo
就有 disableAP
(disables all audio processing) 的效果。
值得一提的是,原本主流之一的 Chromium 系列瀏覽器從 2017 年就存在其 WebRTC 對立體聲支援不好的問題,但是這個 bug 已於 2021 年 4 月上旬修好,讓高音質解決方案的通用性提升了不少。
HD audio 的一系列功能則是 2021 年 4 月中旬被實作出來(jitsi-meet、lib-jitsi-meet),走 P2P 時對高音質的支援似乎也有改善,這應該不是巧合──巧合的是,剛做出來不久台灣的疫情就爆發了。 🥲
在寫文章的當下,這些修正都還算新。要保險的話,用之前可以檢查一下該站的 config.js
,確認版本有跟上。像 jitsi.pdis.dev 的 config.js
一看版本就夠新。
在國外需要找公開 Jitsi 主機的話可以試著到 Community-run instances 查詢。
到主機或機房的網路延遲可以用 ping 來測試
# NCHC
ping jitsi.pdis.dev
# Linode Tokyo 2
ping speedtest.tokyo2.linode.com
不知為何到 Linode Tokyo 2 的 IPv6 路由似乎一直以來都沒 IPv4 的漂亮,延遲多了 100 ms 左右,如果要在這自架 Jitsi 感覺拔掉 AAAA record 比較好。