由于海康威视sdk只支持x86架构处理器,所以官方的.so无论无何也连接不上,于是在咨询技术售后后,我们选择http的方式发送指令控制摄像头在预设点移动。折腾了一天,又是cookie啊,又是联系客服要isapi啊,后来终于折腾好了,下面是代码。
https://github.com/Linkcy97/hikvision-http-control
import requests
from requests.auth import HTTPDigestAuth
import time
ip = '10.168.1.166'
admin = 'admin'
password = 'actl9239'
def preset_point(point):
"""预设点位"""
session = requests.Session()
url = 'http://%s/ISAPI/PTZCtrl/channels/1/presets/%d/goto' % (ip, point)
session.put(url, auth=HTTPDigestAuth(admin, password))
def pan_tilt_move(pan_speed=0, tilt_speed=0, second=1):
"""控制摄像头旋转
:param pan_speed:水平旋转:大于0右转,小于0左转
:param tilt_speed:垂直旋转:大于0上升,小于0下降
:param second:旋转的持续时间
"""
session = requests.Session()
url = 'http://%s/ISAPI/PTZCtrl/channels/1/continuous/' % ip
param = "<PTZData><pan>%s</pan><tilt>%s</tilt></PTZData>" % (pan_speed, tilt_speed)
param1 = "<PTZData><pan>0</pan><tilt>0</tilt></PTZData>"
session.put(url, data=param, auth=HTTPDigestAuth(admin, password))
time.sleep(second)
session.put(url, data=param1, auth=HTTPDigestAuth(admin, password))
def change_wdr(mode='close', level=0):
"""设置宽动态等级
:param mode:宽动态打开还是关闭 open or close
:param level:宽动态等级 0-100
"""
session = requests.Session()
url = 'http://%s/ISAPI/Image/channels/1/WDR' % ip
param = "<WDR><mode>%s</mode><WDRLevel>%d</WDRLevel></WDR>" % (mode, level)
session.put(url, data=param, auth=HTTPDigestAuth(admin, password))
def change_color(brightness=50, contrast=50, saturation=50):
"""
改变摄像头拍照参数
:param brightness: 亮度 0-100
:param contrast: 对比度 0-100
:param saturation: 锐度 0-100
:return:
"""
session = requests.Session()
url = 'http://%s/ISAPI/Image/channels/1/color' % ip
param = "<Color>" \
"<brightnessLevel>%d</brightnessLevel>" \
"<contrastLevel>%d</contrastLevel>" \
"<saturationLevel>%d</saturationLevel>" \
"</Color>" % (brightness, contrast, saturation)
session.put(url, data=param, auth=HTTPDigestAuth(admin, password))
def change_hlc(enabled='false'):
"""
摄像头强光抑制
:param enabled:开启true 关闭false
:return:
"""
session = requests.Session()
url = 'http://%s/ISAPI/Image/channels/1/HLC' % ip
param = '<HLC><enabled>%s</enabled></HLC>' % enabled
session.put(url, data=param, auth=HTTPDigestAuth(admin, password))
def change_scenario(mode='custom1'):
"""
设置摄像头场景
:param mode:场景模式 可选值:indoor outdoor day night morning nightfall street lowIllumination custom1 custom2
:return:
"""
session = requests.Session()
url = 'http://%s/ISAPI/Image/channels/1/mountingScenario' % ip
param = '<MountingScenario><mode>%s</mode></MountingScenario>' % mode
session.put(url, data=param, auth=HTTPDigestAuth(admin, password))
def change_zoom(zoom,second=1.0):
"""
摄像头变焦
:param zoom:倍数 大于0放大 小于0缩小
:param second:持续时间
:return:
"""
session = requests.Session()
url = 'http://%s/ISAPI/PTZCtrl/channels/1/continuous' % ip
param = '<PTZData><zoom>%d</zoom></PTZData>' % zoom
param1 = '<PTZData><zoom>0</zoom></PTZData>'
session.put(url, data=param, auth=HTTPDigestAuth(admin, password))
time.sleep(second)
session.put(url, data=param1, auth=HTTPDigestAuth(admin, password))
if __name__ == '__main__':
pass
就可以控制摄像头在预设点之间移动。其他的控制方法可以在海康威视控制界面 按
f12 去查看。
** 2022.7.4更新 基本功能已经完善**
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)