2.2 KiB
2.2 KiB
用轉發伺服器突破「單一 RTSP 連線」限制
為什麼需要
TL-IPC42EW-4 同時只接受極少的 RTSP 連線(實測只剩 1 個空檔)。多個觀看端直連會撞 406 Not Acceptable。
解法:架一台轉發(restream / proxy)伺服器。它只用那 1 條 RTSP 去拉流一次,再對外複製成任意數量的 RTSP / HLS / WebRTC,給無限個觀看端。
攝影機 ──(1 條 RTSP)──> 轉發伺服器 ──┬─> 觀看端 A (VLC/RTSP)
├─> 觀看端 B (瀏覽器/HLS)
├─> 觀看端 C (手機/WebRTC)
└─> ... 不限數量
方案一:MediaMTX(推薦,單一執行檔、免寫程式)
安裝(macOS)
brew install mediamtx
# 或到 https://github.com/bluenviron/mediamtx/releases 下載對應平台的 binary
啟動
用本 repo 附的 mediamtx.yml:
mediamtx ./mediamtx.yml
觀看(把 <本機IP> 換成跑 MediaMTX 那台的 IP)
| 協定 | 網址 | 用途 |
|---|---|---|
| RTSP | rtsp://<本機IP>:8554/cam |
VLC、ffplay、NVR |
| HLS | http://<本機IP>:8888/cam |
瀏覽器直接看(延遲較高) |
| WebRTC | http://<本機IP>:8889/cam |
瀏覽器低延遲 |
/cam = 主碼流(H.265 1080p),/cam-sub = 子碼流(H.264 704×576)。
sourceOnDemand: yes 的好處:沒人看時 MediaMTX 不連攝影機,會把那唯一的連線槽還回去;有人看才連,且多人看也只佔 1 條。
註:HLS 不支援 H.265,瀏覽器用 HLS 看請改走
/cam-sub(H.264);WebRTC 視瀏覽器而定。VLC/ffplay 走 RTSP 則 H.265 沒問題。
方案二:ffmpeg 直接轉推(已有 RTMP/HLS 伺服器時)
# 拉一次,轉推到你既有的 RTMP 伺服器(如 nginx-rtmp)
ffmpeg -rtsp_transport tcp -i rtsp://192.168.42.150:554/stream1 \
-c copy -f flv rtmp://<你的伺服器>/live/cam
-c copy 不轉碼、不吃 CPU。要產生 HLS 切片也可 -f hls output.m3u8。
選哪個
- 只是想多人/多端看 → MediaMTX,三行設定搞定,支援 RTSP/HLS/WebRTC 全包。
- 已經有 RTMP/HLS 基礎設施、想接進去 → ffmpeg
-c copy轉推。