python 基于onvif协议 修改摄像头分辨率亮度等操作(window版本

如题

在网上根本没发现这样的资料,硬啃官方文档完成的,弄了整整一天遇到了很多坑。

环境说明

python 3.7
onvif2-zeep 0.3.3
window 11
大华摄像头

环境说明

python就不说了基本
onvif2-zeep 注意!!它所有方法都基于pip下来的wsdl文件,但是!!python下来的文件有问题,不可以直接用,要调路径,根据报错指定路径就可以了(路径需要Linux格式

正式代码

先甩个demo再讲解

# 修改摄像头分辨率
def configCamVideo(ip):
    try:
        mycam = ONVIFCamera(ip, 80, 'admin', 'admin123')
        media2_service = mycam.create_media2_service()
        configurations = media2_service.GetVideoEncoderConfigurations()
        for configuration in configurations:
            if configuration['Name']=='VideoEncoder001':
                if configuration['Encoding'].lower() == 'h264' or configuration['Encoding'].lower() == 'h265':
                    width = configuration['Resolution']['Width']
                    height = configuration['Resolution']['Height']
                    configuration['Resolution']['Width']=704
                    configuration['Resolution']['Height']=576
                    configuration['RateControl']['FrameRateLimit']=1
                    configuration['RateControl']['BitrateLimit']=448
                    configuration['GovLength']=1
                    print(configuration)
                    response=media2_service.SetVideoEncoderConfiguration(configuration)
                    return True
    except Exception as e:
        print(e)
    return False

这个demo基本上可以拿过来直接用,但是需要注意一点
路径:C:\Users\admin\AppData\Local\Programs\Python\Python37\Lib\site-packages\wsdl
在这里插入图片描述
正确pip下来的应该有两个版本库,对应的方法为create_media_service和create_media2_service,这两个使用的库是不一样的!!!
更多具体请看官方文档:python-onvif api接口

该接口返回摄像头 亮度-对比度等信息,返回值如下:
在这里插入图片描述
在这里插入图片描述
文档中可以看出来,input即输入的地方需要一个VideoSourceToken参数!!但是翻了三遍文档和api都没找到,最后发现在
在这里插入图片描述
接口的token里面,即需要先请求这个token才能查询和设置亮度

修改亮度和其他显示属性demo:

mycam = ONVIFCamera("192.168.1.109", 80, 'admin', 'admin123')
media2_service = mycam.create_imaging_service()
mac = mycam.create_media_service()

token = mac.GetVideoSources()[0]['token']

configurations = media2_service.GetImagingSettings({"VideoSourceToken":token})

print(configurations)

data ={}
data['VideoSourceToken'] = token
data['ImagingSettings'] = configurations
data['ImagingSettings']['Contrast']=40.0
response = media2_service.SetImagingSettings(data)

以上

后话:这整个网络上的论坛是不是copy怪有点多?想找到一个有用的信息太麻烦了,以及完全没有说明其他办法怎么解决

Java通过ONVIF协议操作摄像头设备的相关官方文档包括: 1. ONVIF官方网站:https://www.onvif.org/ 在ONVIF官方网站上,可以找到ONVIF协议的最新版本和相关文档,包括设备管理、媒体管理、事件管理等模块的接口定义和使用说明。 2. ONVIF Device Test Tool(DTT)官方文档:https://www.onvif.org/profiles/profile-conformance/ ONVIF DTT是用于测试ONVIF协议兼容性的工具,它可以验证设备是否符合ONVIF协议标准,并提供详细的测试报告。官方文档中包含DTT的安装和使用说明,以及测试报告的解释说明。 3. Java ONVIF Library官方文档:https://github.com/milg0/onvif-java-lib/wiki Java ONVIF Library是一个基于Java语言实现的ONVIF协议库,它提供了对ONVIF设备的网络发现、设备信息获取、媒体流控制等功能。官方文档中包含库的安装和使用说明,以及各个接口的参数和用法说明。 4. OpenCV官方文档:https://opencv.org/ OpenCV是一个开源计算机视觉库,它提供了很多用于图像处理和分析的算法和工具。在使用ONVIF协议控制摄像头设备时,可能需要对获取到的视频流进行处理和分析,OpenCV提供了很多有用的功能和工具,官方文档中包含了使用说明和各个算法的参数和用法说明。 总之,要使用Java通过ONVIF协议操作摄像头设备,需要了解ONVIF协议的相关接口和使用方式,以及使用Java ONVIF Library等工具进行开发和测试。同时,对图像处理和分析技术的了解也是必要的。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值