Best Vision Systems Sk-dvr-diy 8 Channel Dvr Software Download

How to manage cameras via DVR-IP, NetSurveillance, Sofia protocol (NETsurveillance ActiveX plugin XMeye SDK)

DVR-IP, NetSurveillance, Sofia

The NETSurveillance ActiveX plugin uses a TCP based protocol called just every bit the "Digital Video Recorder Interface Protocol" by the "Hangzhou male Mai Information Co".

There is very trivial software or documentation that supports it other than the tools provided by the manufacturers of these cameras, making many of the configuration options unavailable.

Control and response codes tin can be found here: https://gist.github.com/ekwoodrich/a6d7b8db8f82adf107c3c366e61fd36f

Connections to this protocol are performed on ports TCP 34567 and UDP 34568.

An example of a programme using this protocol is CMS. Come across also the article "Camera control software (watching video, downloading video to PC, task schedule)".

python-dvr

python-dvr is a Python library for configuring a broad range of IP cameras which use the NETsurveillance ActiveX plugin XMeye SDK.

DeviceManager.py

DeviceManager.py is a standalone Tkinter and console interface program, just like the original DeviceManager.exe, information technology can run on both systems - if no TK is available - information technology runs with a panel interface.

DeviceManager plan (from python-dvr) can work with the following groups of surveillance cameras:

  • XM
  • Dahua
  • Fros
  • Wans
  • Beward

Nearly probable, this is not the manufacturer, simply the type of camera detection system used on the LAN. That is, if your photographic camera has a dissimilar manufacturer, DeviceManager can still notice them.

To install and run DeviceManager, run the commands:

git clone https://github.com/NeiroNx/python-dvr cd python-dvr ./DeviceManager.py

A graphical interface will open, there it is enough to click the Поиск ("Search") button.

How to connect to DVR-IP, NetSurveillance, Sofia in command line

To connect on the command line, you can use an interactive Python session or create a small script.

In the python-dvr folder, create a camera.py file. The following lawmaking is used to connect:

Replace 192.168.0.167 with the IP of your camera, and the PASSWORD with the existent countersign from information technology.

from dvrip import DVRIPCam from time import slumber  host_ip = '192.168.0.167'  cam = DVRIPCam(host_ip, user='admin', countersign='Countersign') if cam.login(): 	print("Success! Continued to " + host_ip) else: 	impress("Failure. Could not connect.")

For example, this lawmaking will show the time on the photographic camera:

from dvrip import DVRIPCam from fourth dimension import sleep  host_ip = '192.168.0.167'  cam = DVRIPCam(host_ip, user='admin', password='Countersign') if cam.login(): 	print("Success! Continued to " + host_ip) else: 	print("Failure. Could not connect.")  print("Camera fourth dimension:", cam.get_time())

Run like this:

python3 photographic camera.py

It is articulate that the lines of code for connection will be repeated in each script, so we will not duplicate them - just recollect that they must exist earlier the office that you take called:

Bones use

Reboot the camera:

cam.reboot()

Waiting for the camera to beginning:

sleep(60)

Login again

cam.login()

Synchronize photographic camera fourth dimension with PC fourth dimension:

cam.set_time()

Disconnect:

cam.close()

Display special OSD text

info = cam.get_info("fVideo.OSDInfo") info["OSDInfo"][0]["Info"] = ["Examination:","Temp: 26 C","Hum: 21 %"] # three lines text info["OSDInfo"][0]["OSDInfoWidget"]["EncodeBlend"] = Truthful info["OSDInfo"][0]["OSDInfoWidget"]["PreviewBlend"] = Truthful info["OSDInfo"][0]["OSDInfoWidget"]["BackColor"]= '0x80000000' info["OSDInfo"][0]["OSDInfoWidget"]["FrontColor"]= '0xF0FFFF00' info["OSDInfo"][0]["OSDInfoWidget"]["RelativePos"] = [6144,6144,8192,8192] # OSD block position cam.set_info("fVideo.OSDInfo", info)

Camera settings

The code

params = cam.get_general_info()

returns general information about the photographic camera (time zones, formats, car reboot policy, security settings):

{     "AppBindFlag": {         "BeBinded": false     },     "AutoMaintain": {         "AutoDeleteFilesDays": 0,         "AutoRebootDay": "Tuesday",         "AutoRebootHour": 3     },     "DSTState": {         "InNormalState": true     },     "Full general": {         "AutoLogout": 0,         "FontSize": 24,         "IranCalendarEnable": 0,         "LocalNo": 0,         "MachineName": "LocalHost",         "OverWrite": "OverWrite",         "ScreenAutoShutdown": ten,         "ScreenSaveTime": 0,         "VideoOutPut": "Machine"     },     "Location": {         "DSTEnd": {             "Day": one,             "Hour": 1,             "Minute": 1,             "Month": x,             "Week": 0,             "Year": 2021         },         "DSTRule": "Off",         "DSTStart": {             "Day": one,             "60 minutes": 1,             "Minute": 1,             "Calendar month": v,             "Week": 0,             "Year": 2021         },         "DateFormat": "YYMMDD",         "DateSeparator": "-",         "IranCalendar": 0,         "Language": "Russian",         "TimeFormat": "24",         "VideoFormat": "PAL",         "Week": null,         "WorkDay": 62     },     "OneKeyMaskVideo": aught,     "PwdSafety": {         "PwdReset": [             {                 "QuestionAnswer": "",                 "QuestionIndex": 0             },             {                 "QuestionAnswer": "",                 "QuestionIndex": 0             },             {                 "QuestionAnswer": "",                 "QuestionIndex": 0             },             {                 "QuestionAnswer": "",                 "QuestionIndex": 0             }         ],         "SecurityEmail": "",         "TipPageHide": fake     },     "ResumePtzState": zero,     "TimingSleep": null }

And this code:

params = cam.get_system_info()

returns hardware settings, camera serial number, current software version and firmware type:

{     "AlarmInChannel": 2,     "AlarmOutChannel": one,     "AudioInChannel": 1,     "BuildTime": "2020-01-08 11:05:18",     "CombineSwitch": 0,     "DeviceModel": "HI3516EV300_85H50AI",     "DeviceRunTime": "0x0001f532",     "DigChannel": 0,     "EncryptVersion": "Unknown",     "ExtraChannel": 0,     "HardWare": "HI3516EV300_85H50AI",     "HardWareVersion": "Unknown",     "SerialNo": "a166379674a3b447",     "SoftWareVersion": "V5.00.R02.000529B2.10010.040600.0020000",     "TalkInChannel": 1,     "TalkOutChannel": 1,     "UpdataTime": "",     "UpdataType": "0x00000000",     "VideoInChannel": i,     "VideoOutChannel": 1 }

This function:

params = cam.get_system_capabilities()

returns camera software capabilities (alarms and detections, communication protocols and hardware features):

{     "AlarmFunction": {         "AlarmConfig": true,         "BlindDetect": true,         "HumanDection": true,         "HumanPedDetection": true,         "LossDetect": truthful,         "MotionDetect": truthful,         "NetAbort": true,         "NetAlarm": truthful,         "NetIpConflict": true,         "NewVideoAnalyze": imitation,         "PEAInHumanPed": true,         "StorageFailure": truthful,         "StorageLowSpace": true,         "StorageNotExist": true,         "VideoAnalyze": imitation     },     "CommFunction": {         "CommRS232": truthful,         "CommRS485": truthful     },     "EncodeFunction": {         "DoubleStream": true,         "SmartH264": true,         "SmartH264V2": false,         "SnapStream": true     },     "NetServerFunction": {         "IPAdaptive": true,         "Net3G": faux,         "Net4GSignalLevel": faux,         "NetAlarmCenter": true,         "NetDAS": false,         "NetDDNS": simulated,         "NetDHCP": true,         "NetDNS": truthful,         "NetEmail": truthful,         "NetFTP": true,         "NetIPFilter": true,         "NetMutlicast": false,         "NetNTP": true,         "NetNat": truthful,         "NetPMS": true,         "NetPMSV2": true,         "NetPPPoE": fake,         "NetRTSP": true,         "NetSPVMN": false,         "NetUPNP": truthful,         "NetWifi": false,         "OnvifPwdCheckout": true,         "RTMP": false,         "WifiModeSwitch": false,         "WifiRouteSignalLevel": true     },     "OtherFunction": {         "NOHDDRECORD": imitation,         "NoSupportSafetyQuestion": false,         "NotSupportAutoAndIntelligent": imitation,         "SupportAdminContactInfo": true,         "SupportAlarmRemoteCall": false,         "SupportAlarmVoiceTipInterval": truthful,         "SupportAlarmVoiceTips": truthful,         "SupportAlarmVoiceTipsType": true,         "SupportAppBindFlag": true,         "SupportBT": true,         "SupportBallTelescopic": false,         "SupportBoxCameraBulb": false,         "SupportCamareStyle": true,         "SupportCameraWhiteLight": imitation,         "SupportCfgCloudupgrade": true,         "SupportChangeLanguageNoReboot": true,         "SupportCloseVoiceTip": faux,         "SupportCloudUpgrade": true,         "SupportCommDataUpload": true,         "SupportCorridorMode": false,         "SupportCustomizeLpRect": false,         "SupportDNChangeByImage": faux,         "SupportDimenCode": truthful,         "SupportDoubleLightBoxCamera": false,         "SupportDoubleLightBulb": false,         "SupportElectronicPTZ": false,         "SupportFTPTest": true,         "SupportFaceDetectV2": false,         "SupportFaceRecognition": imitation,         "SupportMailTest": truthful,         "SupportMusicBulb433Pair": false,         "SupportMusicLightBulb": imitation,         "SupportNetWorkMode": simulated,         "SupportOSDInfo": faux,         "SupportOneKeyMaskVideo": imitation,         "SupportPCSetDoubleLight": truthful,         "SupportPTZDirectionControl": simulated,         "SupportPTZTour": false,         "SupportPWDSafety": truthful,         "SupportParkingGuide": false,         "SupportPtz360Spin": false,         "SupportRPSVideo": simulated,         "SupportSetBrightness": simulated,         "SupportSetDetectTrackWatchPoint": fake,         "SupportSetHardwareAbility": imitation,         "SupportSetPTZPresetAttribute": simulated,         "SupportSetVolume": true,         "SupportShowH265X": true,         "SupportSnapCfg": false,         "SupportSnapV2Stream": true,         "SupportSnapshotConfigV2": false,         "SupportSoftPhotosensitive": true,         "SupportStatusLed": fake,         "SupportTextPassword": true,         "SupportTimeZone": true,         "SupportTimingSleep": fake,         "SupportWebRTCModule": fake,         "SupportWriteLog": truthful,         "SuppportChangeOnvifPort": true     },     "PreviewFunction": {         "Talk": true,         "Tour": false     },     "TipShow": {         "NoBeepTipShow": truthful     } }

Camera video settings/modes

params = cam.get_info("Photographic camera")

Volition return approximately the post-obit information:

{'ClearFog': [{'enable': 0, 'level': 50}], 'DistortionCorrect': {'Lenstype': 0, 'Version': 0}, 'FishLensParam': [{'CenterOffsetX': 300, 'CenterOffsetY': 300, 'ImageHeight': 720, 'ImageWidth': 1280, 'LensType': 0, 'PCMac': '000000000000', 'Radius': 300, 'Version': ane, 'ViewAngle': 0, 'ViewMode': 0, 'Zoom': 100}], 'FishViCut': [{'ImgHeight': 0, 'ImgWidth': 0, 'Xoffset': 0, 'Yoffset': 0}], 'Param': [{'AeSensitivity': five, 'ApertureMode': '0x00000000', 'BLCMode': '0x00000000', 'DayNightColor': '0x00000000', 'Day_nfLevel': three, 'DncThr': thirty, 'ElecLevel': l, 'EsShutter': '0x00000002', 'ExposureParam': {'LeastTime': '0x00000100', 'Level': 0, 'MostTime': '0x00010000'}, 'GainParam': {'AutoGain': 1, 'Proceeds': 50}, 'IRCUTMode': 0, 'IrcutSwap': 0, 'Night_nfLevel': 3, 'PictureFlip': '0x00000000', 'PictureMirror': '0x00000000', 'RejectFlicker': '0x00000000', 'WhiteBalance': '0x00000000'}], 'ParamEx': [{'AutomaticAdjustment': 3, 'BroadTrends': {'AutoGain': 0, 'Gain': 50}, 'CorridorMode': 0, 'ExposureTime': '0x100', 'LightRestrainLevel': 16, 'LowLuxMode': 0, 'PreventOverExpo': 0, 'SoftPhotosensitivecontrol': 0, 'Style': 'type1'}], 'WhiteLight': {'MoveTrigLight': {'Duration': threescore, 'Level': 3}, 'WorkMode': 'Auto', 'WorkPeriod': {'EHour': 6, 'EMinute': 0, 'Enable': 1, 'SHour': 18, 'SMinute': 0}}}

To get the current encoding settings

enc_info = cam.get_info("Simplify.Encode")

The last command will render approximately the following information:

[{'ExtraFormat': {'AudioEnable': False, 'Video': {'BitRate': 552, 'BitRateControl': 'VBR', 'Compression': 'H.265', 'FPS': 20, 'GOP': ii, 'Quality': iii, 'Resolution': 'D1'}, 'VideoEnable': True}, 'MainFormat': {'AudioEnable': Simulated, 'Video': {'BitRate': 2662, 'BitRateControl': 'VBR', 'Compression': 'H.265', 'FPS': 25, 'GOP': 2, 'Quality': iv, 'Resolution': '1080P'}, 'VideoEnable': Truthful}}]

Bitrate modify

NewBitrate = 7000 enc_info[0]['MainFormat']['Video']['BitRate'] = NewBitrate cam.set_info("Simplify.Encode", enc_info)

Getting color parameters of a video aqueduct

colors = cam.get_info("AVEnc.VideoColor.[0]")

The last command will return approximately the following data:

[{'Enable': True, 'TimeSection': '0 00:00:00-24:00:00', 'VideoColorParam': {'Acutance': 3848, 'Brightness': l, 'Contrast': l, 'Gain': 0, 'Hue': 50, 'Saturation': fifty, 'Whitebalance': 128}}, {'Enable': Fake, 'TimeSection': '0 00:00:00-24:00:00', 'VideoColorParam': {'Acutance': 3848, 'Brightness': 50, 'Contrast': 50, 'Gain': 0, 'Hue': l, 'Saturation': l, 'Whitebalance': 128}}]

Change IR cut

cam.set_info("Camera.Param.[0]", { "IrcutSwap" : 0 })

Alter WDR settings

WDR_mode = True cam.set_info("Camera.ParamEx.[0]", { "BroadTrends" : { "AutoGain" : int(WDR_mode) } })

Getting network settings

cyberspace = cam.get_info("NetWork.NetCommon")

Enabling Adaptive IP Mode

cam.set_info("NetWork.IPAdaptive", { "IPAdaptive": True })

Gear up photographic camera hostname

cam.set_info("NetWork.NetCommon.HostName", "IVG-85HG50PYA-Due south")

Selecting DHCP mode (enabled in this example)

dhcpst = cam.get_info("NetWork.NetDHCP") dhcpst[0]['Enable'] = True cam.set_info("NetWork.NetDHCP", dhcpst)

Add User and Change Password

User "test2" with countersign "123123"

cam.addUser("test2","123123")

Password change

cam.changePasswd("321321",cam.sofia_hash("123123"),"test2")

Delete user "test2"

if cam.delUser("test2"):     print("User deleted") else:     print("Tin can non delete it")

Arrangement user cannot be deleted

if cam.delUser("admin"):     print("You exercise information technology! How?") else:     impress("It system reserved user")

Taking a JPEG snapshot

with open up("snap.jpg", "wb") as f:     f.write(cam.snapshot())

Receiving audio/video stream

Only the video is recorded to the file (using a unproblematic lambda):

with open("datastream.h265", "wb") every bit f:     cam.start_monitor(lambda frame, meta, user: f.write(frame))

Data stream recording with boosted filtering (capturing the commencement 100 frames):

class State:     def __init__(self):         self.counter = 0      def count(cocky):         return self.counter      def inc(cocky):         self.counter += 1  with open("datastream.h265", "wb") every bit f:     state = State()     def receiver(frame, meta, state):         if 'frame' in meta:             f.write(frame)             state.inc()             print(country.count())             if land.count() == 100:                 cam.stop_monitor()      cam.start_monitor(receiver, country)

Camera Title Setting

An piece of cake way to change the title of a motion-picture show:

cam.channel_title(["Backyard"])

Use Unicode font from host to generate bitmap for header from PIL import Image, ImageDraw, ImageFont

w_disp   = 128 h_disp   =  64 fontsize =  32 text     =  "Туалет"  imageRGB = Image.new('RGB', (w_disp, h_disp)) draw  = ImageDraw.Depict(imageRGB) font  = ImageFont.truetype("/Library/Fonts/Arial Unicode.ttf", fontsize) w, h  = draw.textsize(text, font=font) depict.text(((w_disp - w)/2, (h_disp - h)/two), text, font=font) image1bit = imageRGB.convert("i") information = image1bit.tobytes() cam.channel_bitmap(w_disp, h_disp, data)

Utilise your own logo in the moving picture

img = Image.open('vixand.png') width, pinnacle = img.size data = img.catechumen("ane").tobytes() cam.channel_bitmap(width, height, data)

Bear witness current temperature, speed, GPS coordinates, etc.

Use the same method to draw text to a bitmap and send it to the photographic camera, but consider placing the internal bitmap storage in RAM:

mount -t tmpfs -o size=100k tmpfs /mnt/mtd/tmpfs ln -sf /mnt/mtd/tmpfs/0.dot /mnt/mtd/Config/Dot/0.dot

Camera firmware update

Optional: get information about update options

impress(cam.get_upgrade_info())

Performing an update

cam.upgrade("General_HZXM_IPC_HI3516CV300_50H20L_AE_S38_V4.03.R12.Nat.OnvifS.HIK.20181126_ALL.bin")        

DOWNLOAD HERE

Posted by: allanwhosolisel.blogspot.com

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel