調校 MediaMTX 抗閃爍:加大寫入佇列、強制 RTSP 走 TCP
實況偶發「閃一下」,查 journalctl 為應用層問題(非網路): - reader is too slow → 加 writeQueueSize: 1024(預設 512)吸收瞬時卡頓 - UDP decode errors → rtspTransports: [tcp] 杜絕 UDP 掉包花屏 .103 線上設定已同步並重啟驗證;另補上 init 產生的 CLAUDE.md Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
27
CLAUDE.md
Normal file
27
CLAUDE.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## 這是什麼
|
||||
|
||||
純研究/文件記錄 repo,主題是 TP-Link **TL-IPC42EW-4** 網路攝影機(`192.168.42.150`)。沒有應用程式原始碼、沒有建置/測試/lint 流程——內容是 Markdown 文件加一份 MediaMTX 設定檔。
|
||||
|
||||
檔案:
|
||||
- `TL-IPC42EW-4-研究報告.md` — 裝置身分、開放埠、RTSP/Web 探測結果(事實來源)
|
||||
- `串流轉發.md` — 用 MediaMTX 突破單一 RTSP 連線限制的方案說明
|
||||
- `mediamtx.yml` — 上述方案實際用的設定檔
|
||||
- `README.md` — 兩份文件的索引與摘要
|
||||
|
||||
## 必須跨多檔一致的關鍵事實
|
||||
|
||||
這幾項貫穿三份文件,改一處就要同步其餘:
|
||||
|
||||
- **RTSP 匿名可看**:`/stream1`(H.265 1080p) 與 `/stream2`(H.264 704×576) 兩條碼流皆**無需帳密**。
|
||||
- **併發限制**:直連 RTSP 實測只剩 1 個空檔,多連線會撞 `406 Not Acceptable`;這是「剩餘空檔」非確定的硬上限(見研究報告的判定方法)。MediaMTX 用 `sourceOnDemand` 只佔 1 條來源連線再對外複製。
|
||||
- **已部署實況**:MediaMTX v1.19.1 跑在 **CT103 / `192.168.42.103`**(Ubuntu 24.04,systemd 服務名 `mediamtx`,設定檔 `/usr/local/etc/mediamtx.yml`,內容須與本 repo 的 `mediamtx.yml` 一致)。
|
||||
- **對外路徑命名**:`cam`(主碼流) / `cam-sub`(子碼流)。⚠️ 此命名須符合 .103 線上實況——近期 commit 曾在 `cam`↔`ipc150` 間改動,改名時務必同步 `mediamtx.yml`、`串流轉發.md`、README 三處及 .103 上的設定檔。
|
||||
|
||||
## 慣例
|
||||
|
||||
- 一律用繁體中文撰寫文件。
|
||||
- 文件區分「已實測驗證」與「規格查證/推測」——研究報告刻意標註哪些是 ffplay 實測、哪些是廠商資料,新增內容請延續這個區分,不要把未驗證的當成事實。
|
||||
@@ -1,5 +1,10 @@
|
||||
# MediaMTX 設定:把攝影機唯一的 RTSP 串流轉發給多個觀看端
|
||||
# 用法:mediamtx ./mediamtx.yml
|
||||
|
||||
# 全域:避免觀看端瞬時吃不下 1080p H.265 時直接丟幀造成的閃爍
|
||||
writeQueueSize: 1024 # 預設 512,加大寫入佇列吸收瞬時卡頓
|
||||
rtspTransports: [tcp] # 強制 RTSP 走 TCP,杜絕 UDP 掉包導致的 H.265 花屏/閃爍
|
||||
|
||||
paths:
|
||||
# 主碼流 H.265 1080p → 對外路徑 /cam
|
||||
cam:
|
||||
|
||||
9
串流轉發.md
9
串流轉發.md
@@ -75,6 +75,15 @@ MediaMTX v1.19.1 已實際架在 `192.168.42.103`(Ubuntu 24.04,systemd 服
|
||||
|
||||
⚠️ 此 MediaMTX 為全開放(HTTP API 9997 與認證皆關閉),任何能連到 .103 的人都能觀看/推流。對外或不信任網段請開啟認證。
|
||||
|
||||
### 抗閃爍調校(2026-06-22)
|
||||
|
||||
實況曾偶發「閃一下」,查 `journalctl -u mediamtx` 為應用層而非網路問題,已在 [`mediamtx.yml`](./mediamtx.yml) 加兩個全域設定(.103 已同步並重啟驗證):
|
||||
|
||||
- `writeQueueSize: 1024`(預設 512)— 觀看端瞬時吃不下 1080p H.265 時,原本佇列塞爆會直接丟幀(log: `reader is too slow, discarding N frames` → `i/o timeout` 斷線);加大佇列吸收瞬時卡頓。
|
||||
- `rtspTransports: [tcp]` — 強制 RTSP 只走 TCP,杜絕 UDP 掉包造成的 H.265 花屏(log: UDP session `decode errors` 後秒斷)。只影響 RTSP,HLS/WebRTC 不受影響。
|
||||
|
||||
弱端(手機/wifi)建議直接看子碼流 `cam-sub`(H.264 704×576),碼率低不會塞。
|
||||
|
||||
## 選哪個
|
||||
|
||||
- 只是想多人/多端看 → **MediaMTX**,三行設定搞定,支援 RTSP/HLS/WebRTC 全包。
|
||||
|
||||
Reference in New Issue
Block a user