介绍
如何使用python接入onvif相机。
说明
使用的是python的onvif库 python-onvif-zeep,但版本很就未更新导致存在一些问题。
不支持media2,导致无法获取h265(hevc)编码类型
event事件的支持存在问题。
不支持media2
需要更新wsdl文件到最新版本,并修改python-onvif-zeep代码,增加对media2的支持
1 | def getmedia(self): |
event事件
开源库的sample写法存在问题,修改如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15# event 订阅事件
self.events_service = self.mycam.create_events_service()
print(self.events_service.GetEventProperties())
pullpoint = self.mycam.create_pullpoint_service()
try:
pullmess = pullpoint.PullMessages({"Timeout": datetime.timedelta(seconds=5), "MessageLimit": 10})
print(pullmess.CurrentTime)
print(pullmess.TerminationTime)
for msg in pullmess.NotificationMessage:
print(msg)
except Exception as e:
print(e)
finally:
passTopicExpressionType 格式无法解析
Message 在标准定义中是个##any格式,估无法解析具体字段。但目前大部分主流ipc都使用tt:Message来实现,需要修改b-2.xsd
最后
以上bug修改,都合入新的python库
python-onvif2-zeep