寻找PYTHON可以连接IPCAM的方法

又是一个流水帐式的学习笔记,本次尝试用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