在 Frigate NVR 中使用 CamRelay 的所有功能
把閒置的 Android 手機變成 Frigate NVR 的攝影機:CamRelay 串流含聲音的 RTSP, Frigate 內建的 go2rtc 接收後用於錄影、有聲即時影像和雙向對講。 逐步說明,並附上完整的 config.yml。
On this page
在 Frigate NVR 中使用 CamRelay 的所有功能
CamRelay 只要一個 RTSP 網址,就能把 Android 手機接入 Frigate。Frigate 內建的 go2rtc 會接收這個串流,再分享給錄影器、即時影像和雙向對講頻道。
CamRelay 是 Banana Studio 推出的 App,能把手機變成區域網路中的 IP 攝影機。它可以串流 H.264 或 H.265 影像,搭配 Opus、G.711 或 AAC 音訊;提供網頁介面、支援 ONVIF,也能透過 RTSP backchannel 接收觀看端傳回的聲音。
資料流程: 執行 CamRelay 的手機 → go2rtc(在 Frigate 內)→ 錄影、有聲即時影像、雙向對講。
以下設定以 Frigate 0.16 為準。後續版本可能會變更部分設定鍵,請一併參考 Frigate 官方文件。
CamRelay 在 Frigate 中的功能
前四項功能透過 go2rtc 進入 Frigate;其餘功能在 App 中設定,讓串流全天候穩定運作。
| CamRelay 功能 | 在 Frigate 中的用途 | 設定位置 |
|---|---|---|
| H.264/H.265 RTSP 串流,解析度與 FPS 依手機相機而定 | 錄影、偵測、即時影像 | go2rtc,步驟 2.1 |
| G.711(PCMU/PCMA)、Opus 或 AAC 音訊 | 即時影像與錄影中的聲音 | 在 App 中選擇編解碼器,步驟 2.2 |
| 雙向對講(RTSP backchannel) | 即時影像中的麥克風按鈕 | WebRTC + HTTPS,步驟 2.3 |
| 日期時間、相機名稱、IP、電池與溫度、GPS 座標與速度疊加資訊 | 直接燒錄在 Frigate 錄下的畫面上 | 在 App 中,步驟 1 |
| 開機自動啟動、調暗螢幕、過熱或電量低時暫停 | 避免串流中斷 | 在 App 中,步驟 1 |
| 在手機上錄製 MP4、透過瀏覽器管理檔案 | Frigate 以外的備份錄影 | 在 App 中,步驟 1 |
| 網頁介面 | 不必停止串流就能檢查畫面和聲音、變更設定 | 步驟 1 |
開始之前
你需要:
- 一台已安裝並正在執行的 Frigate 伺服器(請參閱 Frigate 安裝指南),且與手機位於同一個區域網路。
- 一支已安裝 CamRelay 的 Android 手機,持續接上充電器,並在路由器上設定固定 IP 位址。
- 在 Android 17 上:允許 CamRelay 存取區域網路(Android 將它列在鄰近裝置中)。沒有這項權限,Frigate 就無法連線到手機。詳情請參閱 CamRelay 1.0.5 文章。
Frigate 容器必須開放以下連接埠,才能使用 CamRelay 的所有功能:
| 連接埠 | 用途 |
|---|---|
| 8971 | Frigate 的 HTTPS 網頁介面,雙向對講必須使用 |
| 8554 | go2rtc 的 RTSP 轉播串流 |
| 8555 TCP 與 UDP | WebRTC:有聲即時影像與雙向對講 |
步驟 1:設定 CamRelay
CamRelay 會依照手機的語言顯示;以下的設定名稱是繁體中文介面的名稱。注意:開啟設定會停止串流。CamRelay 執行後,你可以透過網頁介面變更設定,不必停止串流。
1.1 RTSP 連接埠
伺服器連接埠區塊會顯示 RTSP 串流連接埠(預設 1935)和網頁介面連接埠(預設 8888)。使用預設值即可。

1.2 影像
- 在選擇相機中,選擇要使用的相機(後置相機的畫質通常較好)。
- 開啟該相機的個別設定,選擇解析度、影格率 (FPS) 和視訊位元率。可選的解析度與影格率依手機相機而定。
- 在全域視訊設定 → 視訊編解碼器中選擇 H.264,瀏覽器才能播放即時影像。
- 將關鍵影格間隔 (GOP) 保持在 1s(預設值),即時影像才能快速開啟。


監控用途使用 1080p、15 FPS 就足夠,Frigate 伺服器的負擔也較輕。H.265 可以節省頻寬,但 Frigate 必須轉碼才能在瀏覽器中播放(請參閱步驟 2.2)。
1.3 音訊
在音訊設定中開啟啟用音訊。串流的音訊編解碼器在雙向對講 → 雙向對講音訊編解碼器中選擇。這一個設定同時套用於送出的聲音和雙向對講:
- G.711 ULAW:建議用於 Frigate,在 MSE 和 WebRTC 中都能直接播放(請參閱步驟 2.2)。
- OPUS:Android 10 起的預設值,聲音較清晰,但只能透過 WebRTC 播放。
- G.711 ALAW:只有在收聽裝置要求 A-law 時才使用。
- AAC:僅供播放,雙向對講需要轉碼。
將雙向對講音訊模式保持為語音通訊:此模式具備回音消除,雙向對講時不會產生嘯叫。

1.4 疊加資訊、錄影與全天候運作
- 視訊重疊資訊:可顯示日期時間、相機名稱(相機名稱,留空則使用裝置名稱)、IP 位址、電池與溫度、GPS 座標或速度表。疊加資訊直接繪製在影像中,因此也會出現在 Frigate 的錄影裡。預設全部關閉。
- 錄影設定:如果想在手機上保留備份,請開啟啟用錄影。MP4 檔案會存放在
Movies/CamRelay,並依錄影分段時間(分鐘)分段。達到最大儲存空間 (MB) 時,會刪除最舊的檔案。 - 安全與自動化:開啟裝置開機時自動啟動,手機重新啟動後 CamRelay 就會自動恢復串流。在 Android 10 以上版本,App 還需要「顯示在其他應用程式上層」的權限。溫度安全保護和電池安全保護會在手機過熱或電量不足時暫停串流,並在恢復正常後繼續。
- 電池最佳化:請確認 CamRelay 的電池最佳化已關閉,以免 Android 在背景停止它。



1.5 開始串流並取得網址
回到主畫面,點選播放按鈕。頂端的列會顯示目前使用的解析度、FPS、位元率和編解碼器。下方角落會顯示三個位址,各附有一個複製按鈕:
rtsp://<phone-ip>:1935/:給 Frigate 使用的 RTSP 網址。http://<phone-ip>:8888:CamRelay 的網頁介面。http://<phone-ip>:8889/onvif/device_service:ONVIF 服務。

如果攝影機固定在同一個位置,點選月亮圖示(調暗螢幕)即可讓螢幕全黑,既省電又能避免 OLED 螢幕烙印。點兩下即可喚醒。
以下範例使用 rtsp://192.168.1.50:1935/,請換成 CamRelay 顯示的網址。目前版本的 CamRelay 尚未要求 RTSP 登入,請只在你信任的網路中使用。
即將推出: 下一次 CamRelay 更新將可設定使用者名稱和密碼來保護 RTSP 串流。屆時只要把它們加到 go2rtc 的網址中即可,例如
rtsp://user:[email protected]:1935/。
你可以在 Frigate 伺服器上用 ffprobe 檢查串流:
ffprobe -rtsp_transport tcp rtsp://192.168.1.50:1935/
輸出應列出一個 h264 視訊串流和一個音訊串流(G.711 ULAW 為 pcm_mulaw,OPUS 為 opus)。
步驟 2:在 Frigate 中設定 go2rtc
只有 Frigate 內的 go2rtc 會連線到手機。它只拉取一次 CamRelay 的 RTSP 串流,再分享給錄影、偵測、即時影像(MSE、WebRTC)和雙向對講。Frigate 本身從 rtsp://127.0.0.1:8554/camrelay 讀取,因此手機不必同時處理多個連線,既能降低發熱,也更省電。
2.1 新增串流
在 ~/frigate/config/config.yml 中新增 go2rtc 區塊:
go2rtc:
streams:
camrelay: # 與 Frigate 攝影機同名
- rtsp://192.168.1.50:1935/ # CamRelay 顯示的網址
webrtc:
candidates:
- 192.168.1.100:8555 # Frigate 伺服器 IP
- stun:8555
- 一行 RTSP 就夠了。使用 G.711 或 Opus 音訊時,go2rtc 會將影像和聲音直接傳給瀏覽器,不需要
ffmpeg:轉碼。同一行 RTSP 也承載雙向對講頻道。 - 以一般 Docker 執行時必須設定
webrtc.candidates;少了它,WebRTC 和麥克風在區域網路中都無法運作。連接埠 8555 TCP/UDP 已在「開始之前」開放。 - 串流名稱與攝影機名稱相同時,Frigate 會自動用它來顯示即時影像;否則請為攝影機設定
live.streams。
2.2 編解碼器與音訊
將 CamRelay 的影像設為 H.264。音訊選 G.711 最簡單。根據 Frigate 文件,MSE(預設的即時影像)可播放 AAC 或 PCMA/PCMU,WebRTC(用於雙向對講)可播放 Opus 或 PCMA/PCMU。只有 G.711 在兩者中都能直接使用。
| CamRelay 音訊 | MSE | WebRTC | go2rtc 額外設定行 |
|---|---|---|---|
| G.711 ULAW / ALAW (PCMU/PCMA) | 是 | 是 | 無 |
| OPUS | 否 | 是 | ffmpeg:camrelay#audio=aac,才能在 MSE 中聽到 |
| AAC | 是 | 否 | ffmpeg:camrelay#audio=opus,供 WebRTC 使用 |
如果你主要透過 WebRTC 觀看,Opus 的聲音比 G.711(8 kHz 電話音質)更清晰。如果一定要使用 H.265,請加入一行影像轉碼,並保留 RTSP 那一行:
go2rtc:
streams:
camrelay:
- rtsp://192.168.1.50:1935/
- "ffmpeg:camrelay#video=h264#hardware" # 給瀏覽器用的 H.264 副本
2.3 雙向對講
串流期間,CamRelay 隨時都能透過 RTSP backchannel 接收音訊,不需要開啟任何開關。go2rtc 會從 2.1 的 RTSP 設定行開啟這個頻道,無須額外設定。
要說話時,請透過連接埠 8971 以 HTTPS 開啟 Frigate,進入攝影機的即時影像並按下麥克風;Frigate 會自動切換到 WebRTC。你的聲音會從手機喇叭播出,音量依 CamRelay 中的播放音量設定。
如果還有其他 App 需要直接與手機對講,請在 RTSP 網址結尾加上 #backchannel=0,讓 go2rtc 不佔用這個頻道。
2.4 將攝影機加入 Frigate
在 go2rtc 區塊下方新增 cameras 區塊。攝影機會從 go2rtc 讀取串流,而不是直接連線到手機:
cameras:
camrelay:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/camrelay # 2.1 的 go2rtc 串流
input_args: preset-rtsp-restream
roles:
- record
- detect # Frigate 必須設定,不需其他設定
record:
enabled: true
CamRelay 只送出單一串流(沒有子串流),因此攝影機會同時用它來錄影和偵測。
重新啟動並檢查:
docker compose restart frigate
docker logs -f frigate
若要單獨檢查 go2rtc,可暫時在 docker-compose 中加入連接埠 1984:1984,然後開啟 http://<server-ip>:1984。camrelay 串流應有一個 RTSP 來源,包含 H264 影像和 PCMU/PCMA 或 OPUS 音訊。當 CamRelay 出現在 Frigate 首頁上,就大功告成了。
步驟 3:完整的 config.yml
以下檔案只包含 CamRelay 所需的內容:go2rtc 串流、WebRTC、登入(為了雙向對講所需的 HTTPS)和有聲錄影。
go2rtc:
streams:
camrelay:
- rtsp://192.168.1.50:1935/ # CamRelay 顯示的網址,H.264 + G.711 ULAW
webrtc:
candidates:
- 192.168.1.100:8555 # Frigate 伺服器 IP
- stun:8555
auth:
enabled: true
cameras:
camrelay:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/camrelay
input_args: preset-rtsp-restream
roles: [record, detect] # detect:Frigate 必須設定
record:
enabled: true
live:
streams:
CamRelay: camrelay
version: 0.16-0
疑難排解
將 CamRelay 加入 Frigate 時遇到的問題,大多出在串流網址、編解碼器或網路。
| 症狀 | 常見原因 | 解決方法 |
|---|---|---|
| 攝影機顯示「No frames received」 | 網址或連接埠錯誤、CamRelay 未在串流,或 Android 在背景停止了它 | 從 CamRelay 主畫面重新複製網址;用 ffprobe 檢查;開啟 http://<ip>:1984(若已開放)確認 go2rtc 是否收到串流 |
| 即使在同一個 Wi-Fi 也無法連線 | Android 17 手機未允許存取區域網路;路由器開啟「用戶端隔離」;訪客網路;VPN | 允許 CamRelay 使用鄰近裝置;關閉用戶端/AP 隔離;讓伺服器和手機位於同一個主網路 |
| 畫面卡頓或破圖 | UDP 封包遺失 | 在 go2rtc 的網址加上 #transport=tcp |
| 瀏覽器無法播放即時影像 | H.265 串流,或缺少 WebRTC candidates | 在 CamRelay 中選擇 H.264,或用 ffmpeg:...#video=h264 轉碼;設定 webrtc.candidates |
| 連線不時中斷 | Wi-Fi 不穩定、Android 電池最佳化、手機過熱 | 使用固定 IP、讓手機持續充電、關閉 CamRelay 的電池最佳化、開啟裝置開機時自動啟動、使用調暗螢幕按鈕;留意 CamRelay 畫面頂端的溫度;在 Frigate 的 Settings → System → Logs 查看記錄 |
| 即時影像沒有聲音 | 啟用音訊已關閉,或以 MSE 觀看而 CamRelay 送出 OPUS | 在 CamRelay 中開啟音訊;選擇 G.711 ULAW,即可在 MSE 和 WebRTC 中都聽到聲音 |
| 麥克風無法使用 | 以 HTTP 而非 HTTPS 開啟 Frigate,或未開放連接埠 8555 | 以 https://<ip>:8971 開啟 Frigate;開放連接埠 8555 TCP/UDP 並設定 webrtc.candidates |
在 Frigate 的 GitHub Discussions 尋求協助時,請附上設定檔、啟動記錄,以及 CamRelay 串流的 ffprobe 輸出。CamRelay 相關問題,請在 App 的關於畫面點選意見回饋。
更多 Banana Studio 的最新消息、指南和 App,請造訪 xnano.net。
資料來源:go2rtc 部分參考 Frigate Live View 文件;CamRelay 部分參考 CamRelay 使用者指南 與 Google Play 商店頁面。
Related app
CamRelay - RTSP 即時 IP 攝影機
將您的 Android 手機變成強大的 RTSP 網路攝影機。
Related posts
如何把舊 Android 手機變成監視攝影機
讓舊 Android 手機重獲新生,變成監視攝影機:擺在合適的位置、保持供電、讓 CamRelay 在重新開機後自動啟動,就能從同一個 Wi-Fi 下的任何瀏覽器觀看或錄下攝影機畫面。
如何把 Android 手機變成即時攝影機
用 CamRelay,幾分鐘就能把任何 Android 手機變成即時攝影機:允許權限、點一下播放按鈕,就能在同一個 Wi-Fi 下的任何網頁瀏覽器觀看串流。不需要帳號、不需要雲端,觀看的裝置也不必安裝任何東西。