AudioRelay 為何在 Wi-Fi 上能跑出低延遲音訊——把原理拆開講
AudioRelay 讓 Android 手機與 PC 之間互相傳輸音訊,標榜 20~30ms 的低延遲表現。本文從協議選擇、緩衝策略、音訊編碼三個面向,拆解它如何在普通家用 Wi-Fi 上維持即時音訊橋接。
AudioRelay 是什麼——把手機變成無線揚聲器的橋接工具
AudioRelay 是一款讓 Android 手機與 PC 之間互相傳輸音訊的橋接工具。PC 端運行 AudioRelay 伺服器,手機端切換到「播放器」模式就能當成無線揚聲器,收聽電腦上所有正在播放的聲音——不管是 YouTube 影片、Steam 遊戲、還是音樂串流。反過來,手機端當「伺服器」時,手機的麥克風可以直接把語音送到 PC 的虛擬音效卡,Android 10 以上還能透過 Apps source 抓系統級音訊,把手機上任何 App 的聲音(比如 YouTube、手機遊戲)直接串到 PC 的大喇叭上播放。
說穿了就是一條 Wi-Fi 音訊橋。但問題來了——普通家用 Wi-Fi 上,視訊會議經常卡成馬賽克,AirPlay 傳音樂也偶爾斷斷續續,AudioRelay 標榜的 20~30ms 低延遲到底是怎麼跑出來的?這篇就從協議選擇、緩衝策略到音訊編碼三個面向,把它的設計原理拆開來講。完整的功能列表與常見問題可以在 audiorelay文檔 裡找到。
安裝
AudioRelay Android 端是一個 12.96M 的 APK 安裝包,包名 com.azefsw.audioconnect,最新版本 0.26.1。下載渠道有兩個:Google Play 商店搜尋 AudioRelay(開發者 azys),或者到官方網站 audiorelay.net/downloads 直接拿 APK——需要中文安裝指南的話可以看 audiorelay下載。Play 商店渠道更穩,社區帖子提到過早期版本曾出現 APK 下載中斷的問題,最新版已修復但 Play 商店自動更新的機制還是比手動裝 APK 省心。
版本要求上有個關鍵分界:Speaker 模式(接收 PC 音訊)和 Mic 模式(發送物理麥克風)只需要 Android 5.0 Lollipop,但 Apps source——也就是抓手機上任何 App 的系統音訊這項功能——硬性要求 Android 10 以上。這不是 AudioRelay 不想支援舊版本,而是 Android 10 才開放 MediaProjection API 給應用,舊版系統根本沒有系統級音訊捕獲的通路。
首次啟動時會依次申請麥克風權限、前台服務權限和通知權限。前台服務是 Android 8.0+ 的強制要求——AudioRelay 是長連線應用,沒用前台服務掛著的話系統會在幾分鐘內把進程殺掉,音訊就斷了。Android 10 以上首次切換到 Apps source 時還會彈出系統級的「螢幕錄製 / 音訊捕獲」確認框,這是 MediaProjection API 的標準流程,點「立即開始」就行。
安裝完還有一個繞不開的坑:電池優化白名單。小米、華為、OPPO、一加這些廠商幾乎都會在後台殺長時間運行的應用,AudioRelay 被系統殺掉就直接斷流。每個廠商的設定路徑不同(MIUI 是應用管理 → 省電策略 → 無限制,EMUI 是電池 → 啟動管理 → 允許後台活動),但目的都是一樣的——告訴系統這個應用不能殺。另外 PC 端防火牆要放行 TCP 和 UDP 59100 端口,安裝時忘了勾自動添加規則的話,手動在 Windows Defender 裡加兩條入站規則就行,或者直接在 AudioRelay 設定頁點「檢查防火牆」讓它自動修復。

協議層:為什麼全用 UDP——把丟包當設計而非故障
我們從最底層的網路協議開始拆。關於這個協議選擇的更細緻討論可以在 audiorelay官網 上看到,這裡我從技術層面再拆一次。AudioRelay 所有音訊數據傳輸都走 UDP 協議,TCP 只用於一開始的控制握手和裝置發現。這個選擇聽起來反直覺——教科書上說 TCP 保證數據可靠到達,UDP 不負責任會丟包——但對即時音訊場景來說,UDP 才是正確的選擇。
想像一下高速上的護欄。TCP 的策略是:遇到一輛車拋錨擋住車道,立刻整條路封閉,等清障車來拖走才能恢復通車。這確保了每一輛車都能安全到達,但代價是整條路堵動彈不得。UDP 的策略是:看到前面有障礙就直接繞過,保證後面的車流不中斷。個別車子繞過去了(丟了一幀音訊),但整體車流保持暢通。
音訊傳輸就是這樣:一幀 20ms 的音訊丟了,人耳幾乎聽不出差別;但如果等 TCP 重傳那幀——TCP 的超時重傳機制在 Wi-Fi 上動輒 200ms 以上——聽起來就是明顯的卡頓和延遲累積。AudioRelay 選擇 UDP,就是把「丟包」當成網路的正常現象而非故障,乾脆不在協議層做重傳,讓應用層自己處理。
那裝置發現呢?AudioRelay 用 mDNS(多播 DNS,走 UDP 5353 端口)做零配置自動發現——PC 端和手機端在同一區域網路上互相廣播,不用手填 IP 就能找到對方。發現之後的音訊數據才切到 59100 端口傳輸。這個設計讓連線體驗很像藍牙配對——打開 App 就能看到附近的裝置列表,點一下就連上。
緩衝策略:小緩衝換低延遲,接受抖動代價
協議選完 UDP 之後,下一個決策是緩衝區大小。AudioRelay 採用的是固定小緩衝策略——只保留 2-3 個音訊幀的緩衝空間(大約 40-60ms),絕不做大緩衝來吸收網路抖動。
這和視訊會議應用的策略正好相反。Zoom、Teams 這類應用會設置一個比較大的 jitter buffer(抖動緩衝)——可能到 200ms 以上——專門用來吸收網路延遲的波動。網路抖一下的時候,大緩衝能撐住音訊不中斷,聽起來很穩,但代價是延遲下限被拉高了——就算網路完全順暢,也有一個 200ms 的固定延遲在那裡。
AudioRelay 的邏輯是:我寧可在網路抖動大的時候偶爾斷音(丟幾幀),也要把延遲壓到最低。對它的核心場景來說——看視訊要音畫同步、玩遊戲要低延遲、多設備同時播放要聲音對齊——低延遲比絕對穩定更重要。如果只是想把 PC 音樂串到另一個房間的喇叭上當背景音樂,延遲高點無所謂,但這本來就不是 AudioRelay 的目標場景。
音訊編碼:Opus 的即時模式,64-96kbps 甜蜜點
接下來是編碼層。AudioRelay 用的是 Opus 編碼器,這點不意外——WebRTC(瀏覽器即時通訊標準)也用 Opus,Discord、WhatsApp 語音全用 Opus,它本身就是為低延遲即時場景設計的。Opus 的編解碼延遲本身就非常小(10-20ms 量級),不像某些高保真編碼器為了壓縮率會引入上百毫秒的編碼延遲。
但 AudioRelay 取了一個比較特殊的位元率區間——64 到 96kbps。這個區間是 Opus 針對語音優化的甜蜜點,語音清晰度很高,但拿來播放音樂也夠聽——在普通智慧手機的喇叭上很難分辨 96kbps Opus 和 320kbps MP3 的差別。這個選擇在音質和頻寬之間取了一個實用的平衡:每路音訊只需要不到 100kbps 的頻寬,5GHz Wi-Fi 輕鬆扛 5-10 路同時傳輸。
Premium 的「鑰匙」效應——巧妙的定價設計
說到多設備連線,AudioRelay 有一個很有意思的機制值得單獨講。AudioRelay Premium 支援多台裝置同時連到同一台 PC 上各自獨立播放音訊——相當於 DIY 多房間音響系統。但它的解鎖邏輯很巧妙:只要有一台買了 Premium 的裝置連過這個伺服器,伺服器就會保持多設備解鎖狀態,即使後來那台 Premium 裝置斷開也不會失效——直到 PC 端 AudioRelay 重啟為止。
這意味著你只需要買一台 Lifetime Premium(最便宜 £13),每次先讓這台裝置連上當「鑰匙」,其他任何設備——不管買沒買 Premium——都能免費享受多設備連線。重啟一次解鎖一次。這個設計既保證了付費用戶的價值感,又沒把免費用戶逼得太死——只要有一個朋友買了 Premium,整個家庭都能一起用。

這套設計的代價與邊界
講了這麼多優勢,這套設計也不是沒有代價。我把它的邊界整理一下:
第一,網路抖動容忍度低。 小緩衝 + UDP 的組合在網路品質好的時候非常順暢,但 Wi-Fi 擁擠、隔牆、微波爐干擾的時候,丟包率一高就會有明顯的斷音感。用 USB Tethering 可以繞過 Wi-Fi 的問題——手機 USB 插 PC、開啟 USB 網路共享,音訊走 USB 線傳輸,延遲幾乎為零且完全穩定,這是追求極限體驗的用戶必備知識。
第二,只能在區域網路內使用。 AudioRelay 不做 NAT 穿透,也沒有中繼伺服器。兩台裝置必須在同一個子網段,或者用 USB Tethering 繞路。想跨網路(比如手機在外網、PC 在家裡)需要自己搭 VPN。
第三,Premium 解鎖有重置機制。 伺服器重啟後多設備解鎖失效,需要 Premium 裝置重新連一次。雖然麻煩但不算大問題——誰會頻繁重開 AudioRelay PC 端呢?
結語
AudioRelay 的設計思路很清晰:它不追求萬能,只做 PC ↔ Android 之間的低延遲音訊橋接,然後把所有設計決策都圍繞這個核心目標展開。UDP 而不是 TCP、小緩衝而不是大緩衝、Opus 而不是高保真編碼——每一個選擇都是在「什麼場景要絕對穩定、什麼場景要最低延遲」之間做取捨。
對需要低延遲音訊橋接的場景(看視訊、玩遊戲、多設備同步),AudioRelay 是目前最輕量且效果最好的方案。但如果你需要的是跨網路傳輸、高保真音樂串流、或者手機當獨立音樂播放器——這些都不是它的設計目標,找其他工具更合適。
最後提一個實用小技巧:如果你經常用 AudioRelay 把手機上的 YouTube 聲音串到 PC 大音箱上,記得在 AudioRelay Android 設定裡打開「獨佔音訊」選項,這樣手機自己的喇叭就不會跟 PC 同時出聲了,避免混響。或者更簡單粗暴——把手機音量直接拉到 0。MediaProjection 是系統級捕獲,不受音量控制影響。
本文为个人基于网络公开资料整理编写,非官方内容,仅供学习交流参考;软件版权归原作者所有,请支持正版;使用过程中遇到问题请查阅官方渠道,本文不承担任何责任。


