
又是一個流水帳式的學習筆記,本次嘗試用Python連線IPCAM,讀取IPCAM的實時畫面
使用的IPCAM是2018年介紹過的VSTARCAM.
需找是否有公開串流
據我所知可以連線NVR錄影的IPCAM都要有ONVIF協議,我未知到VSTARCAM這款是否有,
ONVIF協議是包括設定大部分的IPCAM設定,就像一個IPCAM的萬能遙控器協議
我使用Onvif Device Manager這個軟件,確實找到了Vstarcam
在尋找帳號和密碼花了些時間,發現VSTARCAM的登入用戶帳號是admin (不可更改,風險漏洞),默認密碼888888在首次手機APP登錄後會提醒更改
輸入帳號密碼後,Onvif Device Manager 就登錄到IPCAM的後臺,可以看到絕大部分的設定,包括實時串流:
在視頻下方有rstp的串流網址,就果斷copy起來:
拿到VLC驗證,確實可以播放,聲音也沒有問題。
20230105更新:
手機上有Onvier這個App,比起Onvif Device Manager更加便捷:
Python OpenCV串接
網上一搜Python IPCAM有很多結果,我也是拿來主義,將rstp link更換成上面copy好的,以爲馬上就能用,但是怎麼弄也報錯
(-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'
在STACKOVERFLOW上看了很多帖子,什麼ffmpeg環境,threading,cv2.resize,全部試過了,還是發現沒有解決沒有size的問題
決定再找找是否URL有問題
透過Onvif Device Manager找到IPCAM的http端口,估計是登錄到網頁界面,
果然沒錯,登入後看到實時影像,右鍵在新窗口打開圖像,發現了一個新的串流url,是http
竟然把賬戶密碼明文用http模式傳輸,一抓包就赤裸裸了
http://192.168.1.95:24394/videostream.cgi?user=admin&pwd=xxxxxx
但是這個URL放到python,就能完美串接,獲得實時圖像
但是這個URL又有一個問題,就是VSTARCAM的HTTP端口是每次開機都隨機的,如果要獲得他的HTTP端口,可能要利用ONVIF先去抓取他,再UPDATE URL才能實現每次自動化捉取。
Further Study
- 安全性風險:Onvif的Replay Attack? Onvif和rtsp的Brutal Force Attack? VSTARCAM手機APP和伺服器有否設計漏洞?
- Python + OpenCV的運算壓力、加載AI的可行性?
- 存取SD卡的方法、雲端上傳的方法?