ONVIF 通訊協定說明
-
定義:ONVIF (Open Network Video Interface Forum) 是一個開放標準,定義網路攝影機、NVR、VMS 之間的互通協定。
-
目的:解決不同品牌設備之間的相容問題,讓 IPCAM、NVR、VMS 能透過統一的 SOAP / XML-based Web Services API 溝通。
-
常見 Profile:
-
Profile S:IP 攝影機基本串流(RTSP、影像、音訊、事件)。
-
Profile G:錄影、儲存與回放控制。
-
Profile T:支援 H.265/H.264 影像壓縮,含 metadata。
-
Profile M:AI / Metadata 傳輸(人臉、車牌等辨識)。
-
應用於串流視訊的流程
-
設備發現 (Device Discovery)
-
使用 WS-Discovery (UDP multicast)。
-
可透過
onvif
工具或 SDK 掃描區域網路上的 ONVIF 設備。
-
-
能力查詢 (GetCapabilities)
-
確認設備支援的 Profile(S/T/G/M)。
-
-
媒體設定 (Media Service)
-
呼叫
GetProfiles()
取得 Profile token。 -
呼叫
GetStreamUri()
取得 RTSP URL,例如:
-
-
串流播放
-
使用 VLC、FFmpeg、GStreamer、OpenCV 直接拉 RTSP 串流。
-
Python 範例(使用 onvif-zeep
+ OpenCV)
要不要我再給你一個 FFmpeg 或 GStreamer 指令範例,用於命令列直接串流播放/錄影?
Linux (FFmpeg ) Video Play URL
============================
以下指令可直接套用。把 USER:PASS@IP:554/PATH
換成你的攝影機 RTSP 位址。
播放(監看)
說明:TCP 穩定;-stimeout
=5,000,000µs 逾時。
原碼錄影(不重編,最省 CPU)
說明:-c copy
不轉碼;RTSP→MP4 可能索引不穩,改用 MKV/TS。
轉碼並壓到固定碼率(H.264)
轉 HLS(HTTP 播放)
說明:-g 50
≈50fps 的 1 秒 GOP;依實際 FPS 調整。
轉推 RTMP(例如 YouTube/自架 nginx-rtmp)
低延遲監看參數組
週期性截圖
斷線自動重連(錄影)
備註
-
IF-5301 多為 H.265/H.264。若拉 H.265 串流且播放器不支援,改
-c:v libx264
轉碼。 -
有聲音就保留
-c:a aac
;沒麥克風可加-an
關閉音訊。 -
ONVIF
GetStreamUri()
拿到的 URL 直接套上述指令即可。
沒有留言:
張貼留言