Tích hợp đầy đủ tính năng CamRelay vào Frigate NVR
Biến chiếc điện thoại Android cũ thành camera cho Frigate NVR: CamRelay phát luồng RTSP có tiếng, go2rtc trong Frigate nhận lại để ghi hình, xem trực tiếp và đàm thoại hai chiều. Hướng dẫn từng bước, kèm file config.yml hoàn chỉnh.
On this page
Tích hợp đầy đủ tính năng CamRelay vào Frigate NVR
CamRelay đưa điện thoại Android vào Frigate qua một URL RTSP duy nhất. go2rtc, thành phần có sẵn trong Frigate, nhận luồng đó rồi phân phối cho bộ ghi, giao diện xem trực tiếp và kênh đàm thoại hai chiều.
CamRelay là ứng dụng của Banana Studio, biến điện thoại thành camera IP trong mạng LAN. Ứng dụng phát video H.264 hoặc H.265 kèm âm thanh Opus, G.711 hoặc AAC. Nó có giao diện web, hỗ trợ ONVIF và nhận tiếng nói ngược lại qua RTSP backchannel.
Luồng dữ liệu: điện thoại chạy CamRelay → go2rtc (trong Frigate) → ghi hình, xem trực tiếp có tiếng, đàm thoại hai chiều.
Cú pháp cấu hình dưới đây theo Frigate 0.16. Một số khóa có thể đổi ở phiên bản mới hơn, nên đối chiếu với tài liệu chính thức của Frigate.
Tính năng CamRelay trong Frigate
Bốn tính năng đầu đi vào Frigate qua go2rtc. Các tính năng còn lại chỉnh trong ứng dụng để luồng chạy ổn định 24/7.
| Tính năng CamRelay | Dùng trong Frigate | Cấu hình ở đâu |
|---|---|---|
| Luồng RTSP H.264/H.265, độ phân giải và FPS theo camera của máy | Ghi hình, nhận diện, xem trực tiếp | go2rtc, Bước 2.1 |
| Âm thanh G.711 (PCMU/PCMA), Opus hoặc AAC | Nghe khi xem trực tiếp, ghi hình có tiếng | Chọn codec trong app, Bước 2.2 |
| Đàm thoại hai chiều (RTSP backchannel) | Nút micro trong màn hình xem trực tiếp | WebRTC + HTTPS, Bước 2.3 |
| Lớp phủ ngày giờ, tên camera, IP, pin và nhiệt độ, tọa độ GPS, tốc độ | Hiện sẵn trên hình Frigate ghi lại | Trong app, Bước 1 |
| Tự khởi động khi bật máy, làm tối màn hình, ngắt khi quá nóng hoặc pin yếu | Giữ luồng không bị ngắt | Trong app, Bước 1 |
| Ghi MP4 trên điện thoại, quản lý file qua web | Bản ghi dự phòng ngoài Frigate | Trong app, Bước 1 |
| Giao diện web | Kiểm tra hình và tiếng, đổi cấu hình mà không dừng phát | Bước 1 |
Chuẩn bị
Bạn cần:
- Một máy chủ Frigate đã cài và đang chạy (xem hướng dẫn cài đặt Frigate), cùng mạng LAN với điện thoại.
- Một điện thoại Android cài CamRelay, cắm sạc liên tục và được đặt IP tĩnh trên router.
- Trên Android 17: cho phép CamRelay quyền truy cập mạng cục bộ (trong Android gọi là Thiết bị ở gần). Thiếu quyền này, Frigate không kết nối được tới điện thoại. Xem thêm bài viết về CamRelay 1.0.5.
Container Frigate phải mở các cổng sau để dùng đủ tính năng CamRelay:
| Cổng | Dùng cho |
|---|---|
| 8971 | Giao diện web HTTPS của Frigate, bắt buộc cho đàm thoại hai chiều |
| 8554 | Luồng RTSP phát lại của go2rtc |
| 8555 TCP và UDP | WebRTC: xem trực tiếp có tiếng và đàm thoại |
Bước 1: Cấu hình CamRelay
CamRelay hiển thị theo ngôn ngữ của điện thoại; tên mục dưới đây là tên khi điện thoại đặt tiếng Việt. Lưu ý: vào Cài đặt sẽ dừng luồng đang phát. Khi CamRelay đã chạy, bạn có thể đổi cấu hình qua giao diện web mà không phải dừng.
1.1 Cổng RTSP
Mục Cổng máy chủ cho biết Cổng phát RTSP (mặc định 1935) và Cổng giao diện web (mặc định 8888). Giữ nguyên mặc định là được.

1.2 Hình ảnh
- Ở Chọn camera, chọn camera sẽ dùng (camera sau thường cho hình đẹp hơn).
- Mở phần cài đặt riêng của camera đó, chọn Độ phân giải, Tốc độ khung hình (FPS) và Bitrate video. Danh sách độ phân giải và FPS tùy theo camera của máy.
- Ở Cài đặt video chung → Codec video, chọn H.264 để trình duyệt xem trực tiếp được.
- Để Khoảng cách khung hình chính (GOP) ở 1s (mặc định) để xem trực tiếp mở nhanh.


Với giám sát, 1080p ở 15 FPS là đủ và nhẹ cho máy chủ Frigate. H.265 tiết kiệm băng thông nhưng Frigate phải chuyển mã khi xem trên trình duyệt (xem Bước 2.2).
1.3 Âm thanh
Ở Cài đặt âm thanh, bật công tắc Bật âm thanh. Codec âm thanh của luồng chọn ở mục Đàm thoại hai chiều → Codec âm thanh đàm thoại hai chiều. Mục này đặt codec cho cả tiếng phát ra lẫn đàm thoại:
- G.711 ULAW: khuyến nghị cho Frigate, chạy thẳng ở cả MSE và WebRTC (xem Bước 2.2).
- OPUS: mặc định từ Android 10, tiếng rõ hơn nhưng chỉ nghe được qua WebRTC.
- G.711 ALAW: chỉ dùng khi thiết bị nghe bắt buộc A-law.
- AAC: chỉ để phát, đàm thoại hai chiều cần chuyển mã.
Để Chế độ âm thanh đàm thoại hai chiều ở Đàm thoại: chế độ này có khử tiếng vọng nên đàm thoại không bị hú.

1.4 Lớp phủ, ghi hình và chạy 24/7
- Lớp phủ video: bật ngày giờ, tên camera (Tên camera, để trống thì dùng tên máy), địa chỉ IP, pin và nhiệt độ, tọa độ GPS hoặc đồng hồ tốc độ. Lớp phủ được vẽ thẳng vào video nên hiện cả trên bản ghi của Frigate. Mặc định tất cả đều tắt.
- Cài đặt ghi hình: bật công tắc Bật ghi hình nếu muốn có bản ghi dự phòng ngay trên điện thoại. File MP4 lưu ở
Movies/CamRelay, chia đoạn theo Độ dài mỗi đoạn ghi (phút). Khi vượt Dung lượng tối đa (MB), file cũ nhất tự bị xóa. - An toàn & tự động hóa: bật Tự phát khi khởi động máy để CamRelay tự phát lại sau khi máy khởi động lại. Trên Android 10 trở lên, ứng dụng cần thêm quyền hiển thị trên ứng dụng khác. An toàn nhiệt độ và An toàn pin tạm dừng phát khi máy quá nóng hoặc pin yếu, rồi tự phát lại khi trở về bình thường.
- Tối ưu hóa pin: để CamRelay ở trạng thái không bị tối ưu pin, tránh Android tắt ứng dụng khi chạy nền.



1.5 Bắt đầu phát và lấy URL
Quay lại màn hình chính và bấm nút phát. Thanh trên cùng hiện độ phân giải, FPS, bitrate và codec đang dùng. Góc dưới hiện ba địa chỉ, mỗi địa chỉ có nút sao chép:
rtsp://<ip-điện-thoại>:1935/: URL RTSP để đưa vào Frigate.http://<ip-điện-thoại>:8888: giao diện web của CamRelay.http://<ip-điện-thoại>:8889/onvif/device_service: dịch vụ ONVIF.

Với camera đặt cố định, bấm biểu tượng mặt trăng (Làm tối màn hình) để phủ đen màn hình, giúp tiết kiệm pin và tránh lưu ảnh trên màn OLED. Chạm hai lần để sáng lại.
Các ví dụ dưới dùng URL rtsp://192.168.1.50:1935/; hãy thay bằng đúng URL mà CamRelay hiển thị. Phiên bản hiện tại của CamRelay chưa yêu cầu tài khoản cho RTSP, nên chỉ dùng trong mạng LAN tin cậy.
Sắp có: bản cập nhật tới của CamRelay sẽ cho phép đặt tên đăng nhập và mật khẩu để bảo vệ luồng RTSP. Khi đó, chỉ cần thêm thông tin đăng nhập vào URL trong go2rtc, ví dụ
rtsp://user:[email protected]:1935/.
Có thể kiểm tra nhanh từ máy chủ Frigate bằng ffprobe:
ffprobe -rtsp_transport tcp rtsp://192.168.1.50:1935/
Kết quả phải có một luồng video h264 và một luồng âm thanh (pcm_mulaw nếu chọn G.711 ULAW, opus nếu chọn OPUS).
Bước 2: Cấu hình go2rtc trong Frigate
go2rtc trong Frigate là nơi duy nhất kết nối tới điện thoại. Nó kéo luồng RTSP của CamRelay một lần, rồi phát lại cho ghi hình, nhận diện, xem trực tiếp (MSE, WebRTC) và đàm thoại hai chiều. Frigate chỉ đọc lại từ rtsp://127.0.0.1:8554/camrelay, nên điện thoại không phải phục vụ nhiều kết nối cùng lúc. Việc này giúp điện thoại mát và đỡ tốn pin hơn.
2.1 Khai báo luồng
Thêm khối go2rtc vào ~/frigate/config/config.yml:
go2rtc:
streams:
camrelay: # đặt trùng tên camera trong Frigate
- rtsp://192.168.1.50:1935/ # URL CamRelay hiển thị
webrtc:
candidates:
- 192.168.1.100:8555 # IP máy chủ Frigate
- stun:8555
- Chỉ cần một dòng RTSP. Với âm thanh G.711 hoặc Opus, go2rtc đưa thẳng video và âm thanh tới trình duyệt, không cần
ffmpeg:để chuyển mã. Dòng RTSP này cũng mang kênh đàm thoại hai chiều. webrtc.candidatesbắt buộc khi chạy Docker thường; thiếu nó thì WebRTC và micro không chạy trong mạng LAN. Cổng 8555 TCP/UDP đã mở ở phần Chuẩn bị.- Nếu tên luồng trùng tên camera, Frigate tự dùng luồng đó để xem trực tiếp. Nếu khác tên, phải khai báo
live.streamscho camera.
2.2 Codec và âm thanh
Đặt CamRelay ở video H.264. G.711 là lựa chọn âm thanh gọn nhất. Theo tài liệu Frigate, MSE (chế độ xem mặc định) phát AAC hoặc PCMA/PCMU, còn WebRTC (dùng khi đàm thoại) phát Opus hoặc PCMA/PCMU. Vì vậy chỉ G.711 chạy thẳng ở cả hai.
| Âm thanh CamRelay | MSE | WebRTC | Cần thêm trong go2rtc |
|---|---|---|---|
| G.711 ULAW / ALAW (PCMU/PCMA) | Có | Có | Không |
| OPUS | Không | Có | ffmpeg:camrelay#audio=aac nếu muốn nghe ở MSE |
| AAC | Có | Không | ffmpeg:camrelay#audio=opus cho WebRTC |
Opus cho tiếng rõ hơn G.711 (chuẩn thoại 8 kHz) nếu bạn chủ yếu xem qua WebRTC. Nếu buộc phải dùng H.265, thêm một dòng chuyển mã video và giữ nguyên dòng RTSP:
go2rtc:
streams:
camrelay:
- rtsp://192.168.1.50:1935/
- "ffmpeg:camrelay#video=h264#hardware" # bản H.264 cho trình duyệt
2.3 Đàm thoại hai chiều
CamRelay luôn sẵn sàng nhận âm thanh ngược qua RTSP backchannel khi đang phát; không có công tắc nào phải bật. go2rtc tự mở kênh này từ dòng RTSP ở 2.1, không cần khai báo thêm.
Để nói, mở Frigate qua HTTPS cổng 8971, vào màn hình xem trực tiếp của camera và bấm micro; Frigate tự chuyển sang WebRTC. Tiếng phát ra từ loa điện thoại, âm lượng chỉnh ở Âm lượng phát trong CamRelay.
Nếu một ứng dụng khác cũng cần đàm thoại thẳng với điện thoại, thêm #backchannel=0 vào cuối URL RTSP để go2rtc không giữ kênh này.
2.4 Đưa luồng vào camera Frigate
Thêm khối cameras bên dưới khối go2rtc. Camera đọc lại luồng từ go2rtc chứ không nối thẳng tới điện thoại:
cameras:
camrelay:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/camrelay # luồng go2rtc ở 2.1
input_args: preset-rtsp-restream
roles:
- record
- detect # Frigate bắt buộc phải có, không cần cấu hình thêm
record:
enabled: true
CamRelay phát một luồng duy nhất (không có luồng phụ), nên camera dùng luồng đó cho cả ghi hình và nhận diện.
Khởi động lại và kiểm tra:
docker compose restart frigate
docker logs -f frigate
Để kiểm tra riêng go2rtc, tạm thêm cổng 1984:1984 vào docker-compose rồi mở http://<ip-máy-chủ>:1984. Luồng camrelay phải có nguồn RTSP với video H264 và âm thanh PCMU/PCMA hoặc OPUS. CamRelay xuất hiện trên trang chủ Frigate là thành công.
Bước 3: File config.yml hoàn chỉnh
File dưới chỉ gồm phần cần cho CamRelay: luồng go2rtc, WebRTC, đăng nhập (để có HTTPS cho đàm thoại) và ghi hình có tiếng.
go2rtc:
streams:
camrelay:
- rtsp://192.168.1.50:1935/ # URL CamRelay hiển thị, H.264 + G.711 ULAW
webrtc:
candidates:
- 192.168.1.100:8555 # IP máy chủ Frigate
- 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 bắt buộc phải có
record:
enabled: true
live:
streams:
CamRelay: camrelay
version: 0.16-0
Xử lý sự cố thường gặp
Phần lớn lỗi khi đưa CamRelay vào Frigate nằm ở URL luồng, codec hoặc mạng.
| Triệu chứng | Nguyên nhân thường gặp | Cách khắc phục |
|---|---|---|
| Camera hiện "No frames received" | Sai URL hoặc cổng, CamRelay chưa bắt đầu phát, hoặc bị Android tắt khi chạy nền | Chép lại URL từ màn hình chính CamRelay; kiểm tra bằng ffprobe; mở http://<ip>:1984 (nếu mở cổng) để xem go2rtc đã nhận luồng chưa |
| Không kết nối được, dù cùng Wi-Fi | Điện thoại Android 17 chưa có quyền mạng cục bộ; router bật "client isolation"; mạng khách; VPN | Cho phép CamRelay quyền Thiết bị ở gần; tắt client/AP isolation; đưa máy chủ và điện thoại vào cùng mạng chính |
| Hình bị giật, xé hình | Mất gói UDP | Thêm #transport=tcp vào URL trong go2rtc |
| Xem trực tiếp không chạy trên trình duyệt | Luồng H.265 hoặc thiếu ứng viên WebRTC | Chọn H.264 trong CamRelay, hoặc chuyển mã bằng ffmpeg:...#video=h264; khai báo webrtc.candidates |
| Mất kết nối định kỳ | Wi-Fi chập chờn, Android tối ưu pin, điện thoại quá nóng | Đặt IP tĩnh, cắm sạc, tắt tối ưu pin cho CamRelay, bật Tự phát khi khởi động máy, dùng nút làm tối màn hình; theo dõi nhiệt độ ở góc trên màn hình CamRelay; xem log ở Settings → System → Logs của Frigate |
| Không có âm thanh khi xem | Công tắc Bật âm thanh đang tắt, hoặc xem bằng MSE khi CamRelay phát OPUS | Bật âm thanh trong CamRelay; chọn G.711 ULAW để nghe được ở cả MSE và WebRTC |
| Micro không chạy | Mở Frigate qua HTTP thay vì HTTPS, hoặc thiếu cổng 8555 | Mở Frigate qua https://<ip>:8971; mở cổng 8555 TCP/UDP và khai báo webrtc.candidates |
Khi hỏi trợ giúp trên GitHub Discussions của Frigate, hãy kèm file config, log khởi động và kết quả ffprobe của luồng CamRelay. Câu hỏi về CamRelay gửi qua mục Góp ý trong màn hình Giới thiệu của ứng dụng.
Xem thêm tin tức, hướng dẫn và các ứng dụng khác của Banana Studio tại xnano.net.
Nguồn: tài liệu Live View của Frigate cho phần go2rtc; hướng dẫn sử dụng CamRelay và trang ứng dụng trên Google Play cho phần CamRelay.
Related app
CamRelay - RTSP Live IP Camera
Biến điện thoại Android của bạn thành một chiếc máy ảnh mạng RTSP mạnh mẽ.
Related posts
Cách biến điện thoại Android cũ thành camera an ninh
Cho chiếc điện thoại Android cũ một cuộc đời mới làm camera an ninh: đặt đúng chỗ, luôn cắm sạc, để CamRelay tự chạy sau khi khởi động lại, và xem hoặc ghi hình từ bất kỳ trình duyệt nào trong mạng Wi-Fi của bạn.
Cách biến điện thoại Android thành camera trực tiếp
Biến bất kỳ điện thoại Android nào thành camera trực tiếp chỉ trong vài phút với CamRelay: cấp quyền, nhấn nút phát và xem hình trên bất kỳ trình duyệt web nào trong mạng Wi-Fi của bạn. Không cần tài khoản, không cần đám mây, không cần cài gì trên thiết bị xem.