====== HTTP API for Q603-RPS ====== For HE4K-01 / HE4K-R4 / MVE-150 / MVE-100R / SME-01 / DME-02/03/04 use [[:http_api_lua|Z3-TI-http_api]] For the HE1080/HE2160 use [[:http_api|Z3-Camera_Solutions-http_api]] ===== Configuration API Syntax ===== ==== Reading Configuration ==== To read configuration variable, simply perform an HTTP GET to the URL [[http://server_address/cgi-bin/control.cgi|http://server_address/cgi-bin/control.cgi]] with the body as given below.\\ \\ The reponse will be in JSON format, giving the value of each variable.\\ To read global configuration variables, GET with this body: ctrl=sys&chn=null To read encoder channel configuration variables for channel 1, GET with this body: ctrl=enc&chn=1 Python example code for reading configuration: import requests, json, sys server_url='http://192.168.0.120/cgi-bin/control.cgi' global_cfg = requests.get(server_url, params='ctrl=sys&chn=null') print global_cfg.json() enc_cfg = requests.get(server_url, params='ctrl=enc&chn=1' ) print enc_cfg.json() Sample output: >>> print global_cfg.json() {u'ipmtu': 1500, u'vid_port': u'microhdmi', u'macaddr': u'40:cd:3a:04:f0:c3', u'logo_enable': u'off', u'wifi_exists': True, u'processor_id': u'QCS605', u'ddns_password': u'', u'model_enable': u'off', u'enc_current_preset': u'encoder', u'default_gw': u'192.168.0.1', u'disp_std': u'auto', u'session_id': u'---', u'ddns_provider': u'freedns', u'ptp_role': u'auto', u'timezone': u'CST6CDT,M3.2.0,M11.1.0', u'MODEL': u'Z3-Q603-HD', u'opstate': u'RUNNING', u'hwversion': u'Z3-Q603-HD', u'ddns_enable': u'off', u'disp_input': u'primary', u'board_id': u'0xFF10', u'termserve_remote_enable': u'on', u'hwserial': u'30010110194010011', u'console_enable': u'on', u'enable_ptp': u'false', u'camera2_if_type': u'Unused', u'local_netmask': u'255.255.255.0', u'ret': u'0', u'logo_width': 319, u'MIC_analog_gain_db': 5, u'camera1_if_type': u'Sony_LVDS', u'opmode': u'encoder', u'syspassword': u'', u'local_dnsip2': u'0.0.0.0', u'ddns_hostname': u'', u'use_dhcp': u'0', u'enc_vivpss_mode_enable': u'off', u'pe3': u'', u'z3_termsrv': u'enabled', u'MICL_analog_gain_db': -20, u'preview_auto_start': u'1', u'pe7': u'', u'logo_height': 156, u'sensor_serial': u'30010310194010011\n', u'ddns_username': u'', u'eth_speed': u'AUTO', u'nfs_enable': u'off', u'nfs_server': u'192.168.1.6', u'z3_avmux': u'enabled', u'nmea_enable': u'off', u'z3_sntp': u'enabled', u'eth_duplex': u'AUTO', u'z3_fec_enc': u'enabled', u'z3_webproxy': u'enabled', u'enc_adv_setting': u'off', u'do_autostart': 1, u'enc_channels': u'1', u'pe8': u'', u'local_dnsip': u'192.168.0.1', u'local_ip': u'192.168.0.14', u'pe4': u'', u'pe5': u'', u'pe6': u'', u'diff_serve': 0, u'pe0': u'encoder', u'pe1': u'', u'pe2': u'', u'nfs_server_root': u'/c/media', u'enable_snmp': u'false', u'fpgafileglob': u'', u'enable_sntp': u'true', u'sysdevicename': u'Z3-Q603-HD', u'sntp_servers': u'pool.ntp.org', u'zfinder_enable': u'on', u'model_name': u'Z3-Encoder', u'hw50serial': u'50010110194010011', u'visca_present': u'true'} print enc_cfg.json() {u'vmulticastdest': u'225.1.2.3', u'tslowlat': u'on', u'klvmuxmethod': u'sync', u'srt_destAddr': u'192.168.0.6', u'vcrop_height': 1080, u'zixifecblock': u'50', u'telopcharsize': u'32', u'source_status_str': u'+CAMERA 1920x1080p 60.00 fps\n', u'vratectrl': u'cbr', u'rotate_angle': 0, u'zixisession': u'test', u'asource': u'CAMERA', u'aport': u'8700', u'pmtpid': 31, u'authonoff': u'off', u'srt_encrypt': 0, u'vcodec': u'h265', u'klvmode': u'sdi', u'auxonoff': u'off', u'channel': 1, u'mounts': u'', u'vcrop_width': 1920, u'vcrop_x': 0, u'vcrop_y': 0, u'amulticastdest': u'225.1.2.3', u'vprofile': u'high', u'klvsrc': u'/dev/gv7601.0', u'auth_passwd': u'password', u'teloplocation': u'top_left', u'gps_overlay_device': u'/dev/ttyAMA0', u'ret': u'0', u'klvserialbaud': u'115200', u'rtsp_auth_password': u'admin', u'zixirateadjen': u'on', u'zixiauthen': u'off', u'vinterlacemode': u'combine', u'vgopsize': 60, u'mmulticastdest': u'225.1.2.3', u'vcrop_enable': u'off', u'klvenable': u'off', u'preset': u'actv_preset', u'mport': u'8800', u'auth_user': u'user', u'gps_overlay_enable': u'off', u'zixioverhead': u'15', u'tsrate': u'5000K', u'enc_status': u'RUNNING', u'pcrinterval': 50, u'aptspcr': 250, u'filesize': u'1024M', u'klvbrate': u'1000', u'acodec': u'fdk_aaclc', u'lowdelay_opt': u'off', u'apid': 120, u'zixilatency': u'500', u'rtsp_auth_enable': u'off', u'srt_mode': 0, u'klvpid': u'35', u'nfstrength': u'0', u'vbitrate': u'4M', u'rtsp_auth_username': u'admin', u'zixiuser': u'user', u'gps_overlay_location': u'top_right', u'vprotocol': u'rtsp', u'feconoff': u'off', u'vdelay': 1000, u'vsource': u'CAMERA', u'fprefix': u'MOV1_%C', u'telopenable': u'off', u'teloptext': u'Z3-Q603-HD', u'storage': u'/media/sda1', u'vquality': u'balanced', u'asamplerate': u'1', u'vgdr': u'off', u'rotate_enable': u'off', u'avmux_index': u'streaming', u'abitrate': u'128000', u'vpid': 221, u'feccol': 5, u'gps_overlay_char_size': u'32', u'vframeratediv': 1, u'pipenable': u'off', u'vres': u'follow_input', u'pcrpid': 521, u'aenable': u'off', u'apair': 0, u'piplocation': u'top_right', u'rtmp265_enable': u'off', u'srt_pass': u'password1234', u'vdest': u'192.168.0.6:8600', u'fecrow': 1} ---- ===== Encoder Channel Configuration ===== ==== aenable ==== Description: Enable audio channel Possible values: yes, no ==== acodec ==== Description: Audio encoder algorithm selection Possible values: dsp_aaclc, fdk_aaclc, fdk_aache, fdk_aache_v2 ==== abitrate ==== Description: Audio encode bitrate Possible values: Depends on codec; in units of bits per second ==== asamplerate ==== Description: Audio sample rate Possible values: 48000, 44100 ==== asource ==== Description: Select audio input Possible values: MICL (microphone, line input levels) MICL (unpowered microphone levels) HDMI (microHDMI input) HD-SDI (SDI input) ==== apid ==== Description: Audio PID for transport stream. Possible values: 32 to 8191 - must not conflict with other PID assignments. ==== aport ==== Description: Destination UDP port for RTP audio ==== aptspcr ==== Description: For transport stream modes only – intial PTS to PCR offset for audio, in milliseconds Possible values: 100 to 2000 ==== auth_passwd ==== Description: Password for RTMP authentication. ==== auth_user ==== Description: Username for RTMP authentication. ==== authonoff ==== Description: Enable or disable RTMP authentication. Default: off Possible values: on, off ==== channel ==== Description: Encoder channel number Possible values: 1, 2, 3 ==== feccol ==== Description: Column count for ProMPEG. Possible values: integer greater than 1 ==== feconoff ==== Description: Enable ProMPEG if supported. Possible values: on, off ==== fecrow ==== Description: Row count for ProMPEG. Possible values: integer greater than 1 ==== filesize ==== Description: Size of TSFILE or AUX file recording, in bytes. A "K" suffix indicates kilobytes (thousands of bytes/second). A "M" suffix indicates megabytes (millions of bytes/second). ==== fprefix ==== Description: Relative filename for TSFILE or AUX file recording. Note that "fprefix" does NOT include the absolute media path – the "storage" parameter is the proper place to specify the absolute media path. ==== storage ==== Absolute path to mounted media device (e.g. /media/sda1/) ==== avmux_index ==== For MP4 recording only. Possible values: normal, streaming normal means MOOV atom at the end of file. streaming means MOOF atoms interspersed throughout the file, which is more tolerant of errors and truncated files. streaming is recommended for most recording scenarios. Only select "normal" if you want conventional MOOV atom at the end of file, if some legacy tool or decoder requires it. ==== telopcharsize ==== OSD overlay text character size in pixels Possible values: 16, 32, or 64 ==== telopenable ==== Enable or disable telop (i.e. OSD overlay of text). Possible values: on, off ==== teloplocation ==== Where to overlay text in the encoded video Possible values: top_left top_right top_center bottom_left bottom_right bottom_center ==== teloptext ==== Text string for OSD overlay ==== vgopsize ==== Description: Distance between I frames (key frames) in GOP sequence Possible values: 1 through 240 ==== vbitrate ==== Description: Video bitrate in bits per second. Possible values: A "K" suffix indicates kilobits (thousands of bits/second). A "M" suffix indicates megabits (millions of bits/second). Note: In UDP transport stream case, the tsrate should be set higher than the vbitrate, with at least 15% margin. ==== vdelay ==== Description: Video maximum burst size in milliseconds. Possible values: 100 to 2000 ==== vdest ==== Description: Destination URL address for encoded bitstream. May be interpreted differently depending on "vprotocol" setting. For UDP and RTP transports: client_ip:client_port For RTMP transport: server_ip[:server_port]/application/streamname ==== vframeratediv ==== Description: Divide video input frame rate by this number to get encode frame rate.\\ The encoder will discard (frameratediv-1) out of (frameratediv) frames.\\ \\ Possible values: 1, 2, 3, 4, 5, 6 ==== vcodec ==== Description: Specifiec which codec to encode with. Possible values: h265, h264, mjpeg ==== vprofile ==== Description: H.264 profile (see [[https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Profiles|https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Profiles]]​ for full description) Possible values: baseline, main, high ==== vprotocol ==== Description: Protocol used to transport the encoded bitstream. Possible values: rtp, rtmp, udp, asi, tsfile, mts, tsrtp ==== vquality ==== Description: Set balance between low latency, and higher quality+bitrate compliance. Possible values: lowlat, balanced, high ==== vratectrl ==== Description: Rate control mode for encoder. Possible values: cbr, vbr vbr mode may be burstier than cbr. ==== vres ==== Description: Video resolution Possible values: follow_input preserve video source resolution, no resize WxH resize to width W and height H ==== vsource ==== Description: Video input from which encoder will source its video Possible values: Board-dependent ==== vinterlacemode ==== Description: Sets the interlaced mode for the video input Possible values: combined, separated (H265 only) ==== vmulticastdest ==== Description: video multicast destination for RTSP. Used by ONVIF StartMulticast/StopMulticast functions Possible values: valid multicast addresses ==== amulticastdest ==== Description: audio multicast destination for RTSP. Used by ONVIF StartMulticast/StopMulticast functions Possible values: valid multicast addresses ==== rtsp_auth_enable ==== Description: enables/disables rtsp authorization for stream Possible values: on, off ===== Transport Stream Parameters ===== The following parameters only apply to transport stream encoding (transport is set to udp, asi, tsfile, mts, or tsrtp). ==== vpid ==== Description: Video PID for transport stream. Possible values: 32 to 8191 – must not conflict with other PID assignments ==== apid ==== Description: Audio PID for transport stream. Possible values: 32 to 8191 – must not conflict with other PID assignments ==== pcrpid ==== Description: PCR PID for transport stream. Possible values: 32 to 8191 – must not conflict with other PID assignments ==== pmtpid ==== Description: PMT PID for transport stream. Possible values: 16 to 31 – must not conflict with other PID assignments ==== tsrate ==== Description: Transport stream total transport rate in bits per second. Possible values: The 'K' suffix indicates kilobits (thousands of bits/second). The 'M' suffix indicates megabits (millions of bits/second). Note: In UDP transport stream case, the tsrate should be set higher than the vbitrate, with at least 15% margin. ==== tslowlat ==== Description: Low latency transport stream mode (VBR). Possible values: off, on ==== auxonoff ==== Describe: Enable AUXillary file recording in UDP mode – allows simultaneous UDP streaming and TS file recording on the same channel. Only valid if transport is UDP and tslowlat is off The path to storage is set by the "storage" parameter. The filename is set by the "fprefix" parameter. The default value is "MOV1_%F_%T". The "%F" specifier inserts a date stamp, and the "%T" specifier inserts a time stamp. The recording file size is set by the "filesize" parameter. When the file reaches this size, a new file will be created. ==== klvbrate ==== Description: Bitrate to allocate in transport stream for KLV data. ==== klvenable ==== Description: Enable KLV capture from SDI, UART or debug file, if supported. Possible values: off, on ==== klvmode ==== Description: Type of KLV source device, whose path is specified in klvsrc Possible values: sdi, serial, file ==== klvserialbaud ==== Description: If klv_mode is serial, specify the baud rate Possible values: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 ==== klvmuxmethod ==== Description: Select synchronous or asynchronous transport stream KLV multiplexing, as specified in MISB ST 1402 Possible values: sync, async ==== klvpid ==== Description: PID for KLV data in transport stream ==== klvsrc ==== Description: Source device for KLV metadata ==== pcrinterval ==== Description: Interval between PCR packets in milliseconds. Possible values: 30 - 100 ===== Global Configuration ===== ---- ===== Action Syntax ===== ===== Generic Actions (POST) ===== Python example code for starting/stopping all channels: import requests, json import sys, getopt actionname='StartChannel' server_url='http://192.168.0.120' control_cgi_url = server_url + '/cgi-bin/control.cgi' payload = 'ctrl=sys&chn=null' sysctrl = requests.get(control_cgi_url, params=payload) j = sysctrl.json() print j enc_channels_string = j['enc_channels'] opmode = j['opmode'] enc_channels = enc_channels_string.split( ',' ) print 'enc_channels', enc_channels, 'opmode', opmode channel_list = enc_channels for channel in channel_list : # Remove leading C if channel[0:0] == 'C': channel = channel[1:] print actionname, ' ', opmode, 'channel', channel payload = 'action='+actionname+'&'+ 'chn=' +channel+'&' + 'loadfromdb=true'; headers={'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'} r = requests.post(control_cgi_url, data=payload, headers=headers) print r.text The "loadfromdb=true" parameter will load the current settings from the database. If you omit the loadfromdb parameter, *none* of the database settings will be used – any parameters you do not supply, will be set to default values. For example, this is what a StartChannel request from the web server looks like: action=StartChannel&chn=1&vsource=CAMERA&vres=follow_input&vcodec=h265&vgdr=off&vprofile=high&vratectrl=cbr&vbitrate=4M&vframeratediv=1 &vgopsize=60&vprotocol=rtsp&vdest=192.168.0.6%3A8600&storage=&fprefix=MOV1_%25C&vpid=221&vdelay=1000&pcrpid=521&pcrinterval=50&pmtpid=31 &tsrate=5000K&tslowlat=on&feconoff=off&fecrow=1&feccol=5&zixioverhead=15&zixilatency=500&zixifecblock=50&zixirateadjen=on&zixiauthen=off &zixisession=test&zixiuser=user&aenable=off&asource=HDMI&apair=0&acodec=fdk_aaclc&abitrate=128000&asamplerate=1&aport=8700&apid=120 &aptspcr=250&klvenable=off&klvmuxmethod=sync&klvmode=sdi&klvsrc=%2Fdev%2Fgv7601.0&klvpid=35&klvbrate=1000&klvserialbaud=115200 &authonoff=off&auth_user=user&auth_passwd=password&auxonoff=off&filesize=1024M&telopenable=off &teloptext=Z3-Q603-HD&teloplocation=top_left&telopcharsize=32&gps_overlay_enable=off &gps_overlay_device=%2Fdev%2FttyAMA0&gps_overlay_location=top_right&gps_overlay_char_size=32&pipenable=off&piplocation=top_right &vquality=balanced&vinterlacemode=combine&vmulticastdest=225.1.2.3&amulticastdest=225.1.2.3&rtsp_auth_enable=off&rtsp_auth_username=admin &rtsp_auth_password=admin&lowdelay_opt=off&vcrop_enable=off&vcrop_width=1920&vcrop_height=1080&vcrop_x=0&vcrop_y=0 &rotate_enable=off&rotate_angle=0&rtmp265_enable=off&avmux_index=streaming&srt_pass=password1234&srt_encrypt=0&srt_mode=0&srt_destAddr=192.168.0.6 ==== StartChannel ==== \\ Transition the encoder channel into the running state. Once you start the channel, it will not transmit data until the\\ video input is detected. ==== StopChannel ==== Transition the encoder channel into the stopped state. ==== SetAdv ==== Control advanced settings display on WebUI. === enc_adv_setting === Possible values: off, on ==== SaveUser ==== Save current settings to non-volatile memory, so they will be used on the next startup. ==== FactoryReset ==== Erase configuration database. Optional arguments: reset_ip (default value:0): 1=clear IP settings, 0=keep IP settings This command erases the config database. To generate the factory settings, you must reboot the system, either using the "RestartBoard" action or power-cycling the system. ==== RestartBoard ==== Reboot the board ==== SetDebugLevel ==== Set logging level. The setting is persistent. === sysdebuglevel === Possible values: 0=None, 1=Error, 2=Information, 3=Diagnostics, 4=Codeflow, 5=Dataflow Note: Dataflow debug is for debug only, and not recommend for normal system operation. ==== SetTermSrvEnable ==== === termserve_remote_enable === Possible values: off, on ==== SetZFinderEnable ==== === zfinder_enable === Possible values: off, on ==== SetDDNSEnable ==== Dynamic DNS settings. === ddns_enable === === ddns_provider === === ddns_username === === ddns_password === === ddns_hostname === ==== PtzContinuousMove ==== Pan to the left at half speed action=PtzContinuousMove&data={"PanTilt":{"x":-0.5,"y":0},"idx":0} Pan to the right at half speed action=PtzContinuousMove&data={"PanTilt":{"x":0.5,"y":0},"idx":0} Tilt down at max speed action=PtzContinuousMove&data={"PanTilt":{"x":0,"y":1},"idx":0} ==== PtzStop ==== Stop pan and tilt action=PtzStop&data={"mode":1,"idx":0} ==== CameraControl ==== Send control commands to camera. Only one command can be sent at a time; the list below are the only supported VISCA commands through the HTTP API. To use VISCA commands that are not listed, usage of the TCP socket can be used to send those VISCA commands. API Format: action=CameraControl&interface=Visca&command=visca_command&cam_index=1 interface possible values: Visca, Tamarisk, Tau2, Boson, Genlock (default: Visca) **example:** Commands without value assignments action=CameraControl&command=dzoom_off&cam_index=1 Commands with value assignments action=CameraControl&command=set_monitor_mode 1080p-59.94&cam_index=1 The Visca commands use the same syntax as the serial menu "V" command, as shown below For the most current list of VISCA commands supported press "V" from the Serial/SSH session of the Serial Menu. auto_icr_disable auto_icr_enable cam_control_inquiry cam_custom_recall cam_custom_reset cam_custom_set chroma_get_suppress chroma_suppress Set Chroma Suppression (0=none, 1 to 3=chroma supression strength) clear_if color_gain Set Color gain (0=60%, 14=200%) color_get_gain color_get_hue color_hue Set Color hue (0=-14 degrees, 14=+14 degrees) debug_rx dzoom_combine_mode dzoom_direct D-Zoom Position (0x00 to 0xeb) * Enabled during Separate mode dzoom_off dzoom_on dzoom_separate_mode dzoom_stop dzoom_super_res dzoom_tele_var p = 0 (Low) .. 7 (High) * Enabled during Separate Mode dzoom_wide_var p = 0 (Low) .. 7 (High) * Enabled during Separate Mode dzoom_x1_max eflip_off eflip_on ext1_func_inquiry ext2_func_inquiry ext3_func_inquiry focus_auto focus_direct focus pos Min. 0x1000 Over Inf 0x2000 10m 0x3000 5m 0x4000 3.3m 0x5000 2.5m 0x6000 2m 0x7000 1.7m 0x8000 1.5m 0x9000 1m 0xa000 50cm 0xb000 30cm 0xc000 15cm 0xd000 6cm 0xe000 1cm focus_get_mode focus_get_pos focus_manual focus_near_limit focus near limit Min. 0x1000 Over Inf 0x2000 10m 0x3000 5m 0x4000 3.3m 0x5000 2.5m 0x6000 2m 0x7000 1.7m 0x8000 1.5m 0x9000 1m 0xa000 50cm 0xb000 30cm 0xc000 15cm 0xd000 6cm 0xe000 1cm focus_stop focus_tele_std focus_tele_var p = 0 (Low) .. 7 (High) focus_toggle focus_wide_std focus_wide_var p (0 (Low) .. 7 (High)) get_low_delay_mode Get low delay mode: 0 - normal, 1 - low delay get_monitor_mode get_monitor_mode: Get video mode of camera output help high_sensitivity_off high_sensitivity_on icr_mode modes: auto on off threshold [0-255] lens_control_inquiry lens_get_temp lr_reverse_off lr_reverse_on other_inquiry power_inquiry power_off power_on register_read Read internal register. register_write Write internal register. * Note: To make register changes effective, run power_off and power_on set_address set_low_delay_mode Set low delay mode: 0 - normal, 1 - low delay set_monitor_mode Set monitor mode. List of modes: 1080p-25 720p-50 720p-59.94 2160p-25 2160p-29.97 1080p-29.97 1080p-59.94 1080p-50 slow_shutter modes: on off limit [0-255] trace enable (0=off, 1=on) version_inquiry wb_auto_mode wb_autotrace_mode wb_get_bgain wb_get_mode wb_get_mode_name wb_get_rgain wb_indoor_mode wb_manual_bgain_direct Set Manual WB BGain (0..255) * Enabled during Manual WB mode wb_manual_bgain_reset wb_manual_mode wb_manual_rgain_direct Set Manual WB RGain (0..255) * Enabled during Manual WB mode wb_manual_rgain_reset wb_onepush_mode wb_onepush_trigger wb_outdoor_auto_mode wb_outdoor_mode wb_sodium_lamp_auto_mode wb_sodium_lamp_fixed_mode wb_sodium_lamp_outdoor_mode zoom_direct pos Min. 0x0000 Max. 0x4000 (In Separate mode) Max. 0x4000 (In Combine mode and DZoom=Off) Max. 0x59C0 (In Combine mode, DZoom=Super Resolution Zoom, and monitoring mode QFHD) Max. 0x6000h (In Combine mode, DZoom=Super Resolution Zoom, and monitoring mode FHD or less) Max. 0x7AC0h (In Combine mode and DZoom=On) zoom_get_pos zoom_stop zoom_tele_std zoom_tele_var p = 0 (Low) .. 7 (High) zoom_wide_std zoom_wide_var p (0 (Low) .. 7 (High)) With dual VISCA camera supported added we need to tell the API which camera we want to talk to. this is done with cam_index The values accepted are either 1 or 2 ==== SaveCamera ==== Save camera-related settings below. === zoom_direct_value === Description: Set camera zoom Possible values: 0 (wide) to 0x7ac0 (full zoom) === white_balance_mode === Possible values: auto. indoor, outdoor, onepush, autotrace, manual, outdoor_auto, sodium_lamp_auto, sodium_lamp_fixed, sodium_lamp_outdoor === color_gain === Possible values: Range from 0 (60%) to 14 (200%) === color_hue === Possible values: Range from 0 (60%) to 14 (200%) === chroma_suppress === Possible values: 0=none, 1, 2, 3 === wb_manual_rgain_direct === Possible values: 0 to 255 === wb_manual_bgain_direct === Possible values: 0 to 255 === optical_zoom_only === Possible values: 0, 1 === focus_direct_value === Description: Set manual camera focus distance Possible values: 0x1000 to 0xf000 === manual_focus === Description: Set focus mode Possible values: auto, manual ==== SetIp ==== ---- Control networking settings of the Z3 device such as local IPv4 IP address, netmask, etc. Additionally control Encoder Auto-Start after boot-up and enable/disable showing of advanced WebUI settings. \\ == Parameters: == ---- **//do_autostart//** Control automatic stream start after bootup. Possible values: 1 = do autostart 0 = do not autostart. **//enc_adv_setting//** Control appearance of advanced settings on WebUI. Possible values: off, on. **//ipmtu//** Control Ethernet IP Maximum Transmission Unit (MTU) size in bytes. Possible values: 576 to 1500. **//eth_speed//** Control Gigabit Ethernet auto-negotiation allowed speeds. Possible values: AUTO, AUTO-100, 1000, 100, 10. **//eth_duplex//** Control Ethernet auto-negotiation allowed duplex. Possible values: AUTO, FULL, HALF. **//local_ip//** IPv4 address. **//local_netmask//** IPv4 netmask. **//default_gw//** IPv4 default gateway. **//local_dnsip//** DNS server primary. **//local_dnsip2//** DNS server secondary. **//use_dhcp//** Controls use of DHCP or static IP. Possible values: 1 (DHCP enabled), 0 (DHCP disabled, use static IP). **//local_hostname//** Network hostname. \\ == Returns: == ---- JSON formatted table with values below **//ret//** Custom return code of the HTTP POST request. 0 on success, 1 on failure. **//status//** String describing the failure when **ret** is 1. "OK" on success. \\ ---- ==== SetDisplay ==== Controls composite output (passthru video from camera) === disp_std === Set display standard for composite output Possible values; auto, ntsc, pal ==== UpdateTerm ==== Control serial port terminal server for VISCA === term_mode === Possible values: client, server === term_protocol === Possible values: clearchannel, telnet === term_localport === Local TCP port (for server mode) === term_servaddr === Remote IP address (for client mode only) === term_servport === Remote TCP port (for client mode only) === term_baudrate === Possible values: 9600, 19200, 38400, 57600, 115200 === term_devicefile === ==== Overlay ==== Add/Update overlay === chn === ​Encoder channel to add overlay to. === rgn_idx === ​Index to map overlay to. === ​type === Type of overlay to be used possible values: text or png. === source === In the case of text overlay this would be the source text for png overlay this is the path to the png on the encoder. Images must be uploaded to board to be used. === location === This is the location of the overlay. Possible values: 'top_left', 'top_right', 'top_center', 'bottom_left', 'bottom_right', 'bottom_center', 'x,y' (negative numbers not supported for x or y) === char_size === For text overlay this is the character size. Possible values: 16,32,64 === layer === This will set the layer for the overly higher numbers will overlay over lower numbers if overlapping. === alpha === Sets the transparency of the text. Possible values: 0-255 ==== OverlayStop ==== === chn === ​Encoder channel to remove overlay from. === rgn_idx === ​Index of overly for this channel. ==== ​Dynamic ==== === chn === ​Encoder channel to apply dynamic command to. var Variable to modify dynamically. Possible values: vratediv, vrate, gop, telop_text, pip_enable, pip_location, startmulticast, stopmulticast === val === Value to set dynamic variable to. ==== ​SetSNTP ==== === enable === Enable/Disable SNTP. === servers === NTP server or list of NTP servers. === timezone === Linux TZ database value for Timezone. ==== ​SetOnvif ==== === onvif_enable === Enable/Disable ONVIF. === onvif_persistent === Enable/Disable ONVIF persistent audio channel. === fixed_profile_max === Maximum ONVIF profiles to allow (1 or 2). ==== GetStatus ==== return the encoder status **input** : channel_number **Output ** : The encoder status can be **running / couldn't deduct input on camera / idle / Stopped. ** The encoder status values are stored in this path /tmp/enc_1_status. ==== ClearHistory ==== delete the decoder history **input** : channel number **output** : Delete the channel number from the DECODER_HISTORY_TABLE of the database ==== AddHistory ==== Insert decoder history in the database **Input** : channel number and URL **Output** : Add the information in the DECODER_HISTORY_TABLE in the database ==== SetAudio ==== Set the analog mic decibal value **Input : ** analog gain decibal value (Range -97 to 30) Output : update the value in the AUDIO_INPUT_TABLE in the database ==== LoadUser ==== === enc_current_preset === Output : update state settings in the database ==== LoadUser ==== === enc_current_preset === Output : update state setting table in the database ==== SavePresets ==== check whether the mode is decoder or encoder using get_opmode() === enc_current_preset === save the encoder preseting value in the PRESET_TABLE === dec_current_preset === save the decoder preseting value in the PRESET_TABLE Output : Update state setting table in the database ==== DeletePreset ==== delete each row of the preseting value of encoder or decoder based on the get_opmode from the PRESET_TABLE ==== ErasePresets ==== moving the preset value from the existing table to a new table and erasing the existing table ==== ExportPresets ==== create a z3export.db and copy the presetting value of encoder or decoder based on the get_opmode of the PRESET_TABLE ==== StopMTS ==== ==== StartMTS ==== ==== AddChannel ==== === newchn === Add new channel tab. Check the channel number is valid or not, for e.g. the channel number can be max (1 to 4) and if so then we check whether the preset values are available for this channel number, then we will be reading from the PRESET_TABLE of the database. If not, then we will adding the default values for this channel. ==== DeleteChannel ==== delete the channel tab and update the PRESET_TABLE of the database. ==== DecoderStatus ==== ==== TempStatus ==== Read the current temperature status of cpu and lense. Initially it checks in the /tmp/ folder with cur_temp file exists or not. If exist then it reads from the file else it reads from the ioctl call. ==== DisplayStatus ==== ==== camera_inquiry ==== === cam_index === Input : read the camera index ( value can be 1 or 2) Output : provide the camera information. if camera index is 1 then check whether camera type is (Visca/tau/boson) If camera index is 2 then check whether camera type is (Visca/tau/boson/tamarisk/CameraLink_CVBS/sdi) ==== SetDevName ==== === sysdevicename === Input : Read the device name Output: update new device name in the STATE_TABLE in the database ==== SetNFS ==== === nfs_enable === enable/disable nfs === nfs_server === provide the nfs server ip address. Default is 192.168.1.6 === nfs_server_root === provide the server root path / location. Output: update nfs information in the STATE_TABLE in the database === SetSNMP === === enable === enable/disable SNMP ==== SetFpga ==== === fpgafileglob === read fpga value, the values can be (boson/cvbs/tamarisk/tau2) Output : update fpga value in the STATE_TABLE of the database ==== SetRTSP ==== === rtspd_port === === rtspd_timeout === Input : read rtsp port and timeout value required for the rtsp settings Output : update rtsp value in the STATE_TABLE of the database ==== SetOnvifVMD ==== === vmd_enable === enable/disable video motion detection === vmd_sens === sensitivity value required for vmd ( value will between 1 to 100) === vmd_zone_modify === enable/diable video motion and too darkness zone === vmd_vcrop_width === crop width for VMD and too_darkness === vmd_vcrop_height === crop height for VMD and too_darkness === vmd_vcrop_x === crop startx for VMD and too_darkness === vmd_vcrop_y === crop starty for VMD and too_darkness === td_enable === enable/disable too darkness === td_thresh === threshold value for too darkness ( value will between 1 to 100) === vmd_td_channel === channel number (1 / 2) Output : update rtsp value in the STATE_TABLE and ONVIF_VMD_TD_TABLE of the database ==== SetDSCP ==== ==== SetNMEAEnable ==== ==== UpdatePtz ==== data: row information Output : update ptz value in the ONVIF_Ptzs table of the database ==== UpdatePtzPreset ==== data: row data values like profiletoken, token,name,pan,tilt and zoom Output : Insert the row value in the PTZ_Preset table of the database ==== UpdatePtzTourSpots ==== data: row data values like ProfileToken,PresetTourToken,RowIndex,PresetDetailToken,PresetDetailHome,StayTime,pan,tilt,zoom,pspeed,tspeed and zspeed Output : Insert the row value in the ONVIF_PtzTourSpots table of the database ==== PtzAbsoluteMove ==== speed: Absolute move speed Output: Updates the PTZ speed value for absolute move ==== PtzSetPreset ==== data: PTZ preset token value Output: Sets the PTZ preset value for current user ==== PtzClearPreset ==== data: PTZ preset token value Output: Clear the PTZ preset value for current user ==== PtzGotoPreset ==== data: PTZ preset token value Output: clear the existing preset and sets the given PTZ preset value ==== PtzNewTourSpot ==== profile_token: token value tour_token: token value Output: Send the visca command to add the new tour spot ==== PtzRemoveTourSpot ==== profile_token: token value tour_token: token value row_index: row index value Output: Send the visca command to remove the existing tour spot ==== PtzStartTour ==== data: data to be passed in Visca command ptzStartTour Output: Send the visca command ptzStartTour to start the new ptz tour ==== PtzPosition ==== data: ptx vector of Pan ot Tilt Output:Updates the PTZ value ==== PtzQuery ==== data: Query Index\\ Output: Quey the PanAngle or TiltAngle ==== InsQuery ==== data: Query Ins\\ Output: Returns the YawAngle, PitchAngle or RollAngle === PtzAuxiliary === data: data to be passed in Visca command PtzAuxiliary\\ Output: Send the visca command PtzAuxiliary ==== PtzPreset ==== data: if data value 0) remove the preset, 1) set the preset and 2) Goto the preset\\ Output: Removes or updates the ptz preset raw ==== user_add ==== username: name of the user user level: user levels 0-7 to define the roles password: user credentials Output: Add the new user in ONVIF_users table of database ==== user_remove ==== data: Name of the user Output: User will be removed in ONVIF_users table of database ==== user_update_level ==== data: Name of the user Output: User level will be removed in ONVIF_users table of database ==== user_update_password ==== data: Name of the user Output: User password will be removed in ONVIF_users table of database ==== SetLoginLimit ==== === maxlogin === mximum number of login limit. The limit is in range of ( greater than 2 and less than 100 ) === login_window === Login window period, the value are considered as seconds. Max login attempts can be reached (Greater than 59 and less than or equal to 32768) === lockout_interval === Locout interval value are mentioned in seconds value, which is used when maximum number of login limit is reached. The valuare ranges are ( -1 to 32768) === login_timeout: === Login timeout output: Updates the system login logout limits in the STATE table of the database Output: User password will be removed in ONVIF_users table of database ==== update_require_web_login ==== === require: === is password required or not. === Output: === Update the state of the required web login value which is (1 / 0 ) in the STATE_TABLE of the database ==== Logout ==== === Authorization: === Json data wich contains nonce and name of the user Output: Remove digest entry for the user ==== Login ==== Output: Forces the login ==== SaveCameraLx ==== Saving the CameraLx settings value and update in the CAMERA_LX_TABLE in the database === name === read the value of exposure mode, shuter speed , exposure component settings, whitebalance, ISO, Color Temp, NtscPalSelection, MovieSteadyMode used in the camera settings ==== SaveCameraTau ==== saves the camera TAU settings === tab_index === reads the color pallete value from this path /tmp/currentlut*.txt and also reads the active color table === Output === Save the camera TAU settings in the CAMERA_TAU_TABLE in the database ==== SaveCameraDRSTamarisk ==== saves the camera DRS Tamarisk settings === arg === reads the color pallete value === Output === Save the camera DRS tamarisk settings in the CAMERA_DRS_TAMARISK_TABLE in the database ==== SaveCameraBoson ==== saves the camera boson settings === arg === reads the color pallete value === Output === Save the camera DRS tamarisk settings in the CAMERA_BOSON_TABLE in the database ==== SaveCameraLink ==== saves the camera Link settings === arg === reads the pixel format and color table value === Output === Save the camera DRS tamarisk settings in the CAMERALINK_TABLE in the database ==== EjectStorage ==== chn: Encoder channel number dec: Device name as in storage Output: un mounts the device to eject in safe ==== fmt_media ==== mnt_point: storage media device node path which needs to be formated file_system: File system type to be used with mkfs Output: Formats the given media in FAT filesystem format and mount it ==== SetViVpssMode ==== enc_vivpss_mode_enable : Enable or disable the VPSS mode Output: Update the VPSS enable or Disable in STATE table of the database ==== SetWifiAP ==== ssid: Wifif SSID psk: Wifi password wifi_client_local_ip: Local IP addres ragne for WIFI network wifi_client_local_local_netmask: Subnet mask to be used with Wifi network wifi_client_default_gw: Default Gateway to be used with Wifi Network wifi_client_use_dhcp: DHCP server to be used with Wifi network for DNS resolutions Output: Updates the wifi network Access Point settings in State table of database ==== DisconnectWifiAP ==== Output: Disconnects the Wifi Network ==== SetAPConfig ==== passwd: The PSK password to connect with WIFI network passwden: Enable or disable the password to connect with WIFI Output: Update the Wifi AccessPoint setting in STATE table of database ==== GetWifiPass ==== ssid: Wifi Access point name or emptry string if there is a single wifi network Output: Returns the PSK password, which was set earlier using SetAPConfig ==== SetConsole ==== console_enable: "on" to enable or "None" to disable the console device for the log prints Output: Enable or disable the console device for log prints ==== SetViewport ==== Chn: Decoder Channel number viewport: viewport settings Output: Updates the viewport settings for the given decoder instance in DECODER_TABLE of database ==== GetCameraTab ==== Get the camera tab index the values are (1 / 2) and camera type. The camera types are (Visca / tau / boson / tamrisk) if camera index is 2 , then the camera type (Visca / SDI) === tab_index === Read the camera tab index. Based on the camera index and camera type the corresponding html file will be read. The html files are located in the /opt/webgui/*.html The html files are visca.html / flexio.html ==== SetVideoGroup ==== Set the video group configuration, and update in the database and change the active settings dynamically. === group === Is the camera index, the values are ( 4K. DME-20, HE2160-RPS ) and so on. === nr_enable === enable/disable noise reduction. === crop_enable === enable/disable crop region. ===\\ crop_x === crop rectangle x value ===\\ crop_y === crop rectangle y value === crop_width === crop rectangle width value === crop_height === crop rectangle height value\\ Output : Update the value in the VIDEO_GROUP_TABLE in the database. ==== GetCameraLink ==== Read the value of color table using the system call and pixel format from the fpga. ==== SetCameraLink ==== Set the value of color table and pixel format and update in the CAMERALINK_TABLE of the database. ==== ==== ==== RemoveJobs ==== Remove / delete the jobs from the schedule. === purgelist === Read the job index and job name === rowcnt === Number of rows of the schedule job. === Output === Delete the jobs in the /opt/config/z3schedules/root/ in the system and also update in the SCHEDULE_TABLE in the database. ==== SaveJobs ==== Read the values from the schedule tab and save the jobs === data === The data contains multiple values, such as enable/disable of schedule Name of the job Function are (Start-Encoder / Stop-Encoder / Snapshot / PTZ Preset / PTZ Tour / Reboot) Channel (Ch1 / Ch2 / Ch3 / Ch4) Options about the time, which can be (Every Minute / hours / day / Week/ Month/ Yearly / custom ) === rowcnt === Number of rows of the schedule job. === Output === Save the jobs in the /opt/config/z3schedules/root/ in the system and also update in the SCHEDULE_TABLE in the database. ==== GetVideoInputs ==== ===== Encoder Actions (POST) ===== ==== SetEncoder ==== Write encoder settings to active preset. See Python example code for Seting Configuration below ==== EncoderStatus ==== Requests an update to encoder_status_str variable. To read the result, you need to POST the “stats” control as shown\ in the Python example code below. ==== StreamStatus ==== Requests an update to stream_status_str variable. To read the result, you need to POST the “stats” control as shown\ in the Python example code below. ==== AStreamStatus ==== Requests an update to astream_status_str variable. To read the result, you need to POST the “stats” control as shown\ in the Python example code below. ==== SourceStatus ==== Requests an update to source_status_str variable. To read the result, you need to POST the “stats” control as shown\ in the Python example code below. ---- ===== Setting Encoder Configuration ===== To set the encode configuration per channel the **SetEncoder** action is used with a post. All variables should be present or they will be replaced with a defualt that may not be valid for your application. More than one channel can be set per command. It is recommended you first read the current settings from the encoder then modify them and send the new settings back as in the Python example below: import requests, json, sys server_url='http://192.168.0.120/cgi-bin/control.cgi' channel = 1 enc_cfg = requests.get(server_url, params='ctrl=enc&chn={}'.format(channel)) print enc_cfg.json() enc_cfg_json=enc_cfg.json() enc_cfg_json['vframeratediv'] = 2 #set frame rate divider to 2 new_cfg = {} new_cfg['action'] = 'SetEncoder' for key, value in enc_cfg_json.iteritems(): print "key = {} value = {}".format(key,value) new_idx = "enc_{}_{}".format(channel,key) print "setting {} to {}".format(new_idx,value) new_cfg[new_idx] = value print new_cfg requests.post(server_url, data=new_cfg) ===== snapshot.cgi Control ===== http:///snapshot.cgi?size=3840x2160&quality=100 http:///snapshot.cgi?chn=1&size=1280x720&quality=80 valid options are: * *size** =[any supported valid resolution]** chn** =[1,2]** quality** =[0-100] supported resolutions are: 4K Models Only 3840×2160 \\ 2560×1440 4K and HD Models 1920×1080 \\ 1440×1080 \\ 1280×1024 \\ 1280×720 \\ 1024×768 \\ 960×720 \\ 1024×576 \\ 800×600 \\ 720×576 \\ 704×576 \\ 720×480 \\ 640×512 \\ 640×480 \\ 640×360 \\ 352×576 \\ 420×380 \\ 352×288 \\ 352×240 \\ 336×256 \\ 320×240 \\ 320×180 ** ===== Reading Statistics ===== **Python example of updating and reading encoder statistics: ** import requests, json, sys server_url='http://192.168.0.120/cgi-bin/control.cgi' requests.post(server_url, {'action': 'EncoderStatus'} ) requests.post(server_url, {'action': 'StreamStatus'} ) requests.post(server_url, {'action': 'AStreamStatus'} ) requests.post(server_url, {'action': 'SourceStatus'} ) requests.post(server_url, {'action': 'TempStatus'} ) print requests.get(server_url, params='ctrl=stats&chn=null').json() **Example output: ** {u'status': u'OK', u'astream_status_str': u'\tChannel 6 Codec fdk_aaclc Samplerate 48000 Input MICL Frames 32287820 OK', u'temp_status_str': u' LENS 29 CPU 78.700 FPGA 89.8 OK', u'ret': u'0', u'encoder_status_str': u' *** Encode Bitstream Received Statistics *** CH | Bitrate (Kbps) | Actual Bitrate | FPS | Actual FPS | Key-frame FPS | Width | Height ------------------------------------------------------------------------------------------------------------ 1 | 4000.00 | 4092.18 | 60.0 | 59.8 | 1.0 | 1920 | 1080 | OK', u'source_status_str': u' CAMERA 1920x1080p 60.00 fps\n', u'stream_status_str': u'Channel 1 URL rtsp Frames 12883581 OK'} ===== Authentication ===== By default, no authentication is required to access the HTTP API. To enable authentication, go to the "System" tab "Device Management" section. Click on the "Set Password" button. The username will be "admin" The authentication method is HTTP Digest authentication. HTTP Basic authentication is not supported. === Python example code of HTTP Digest authentication === import requests,json, sys from requests.auth import HTTPDigestAuth auth=HTTPDigestAuth('admin','mypassword') print requests.get(server_url, params='ctrl=stats&chn=null', auth=auth).json() ==== DeletePreset ==== ==== ErasePresets ==== ==== ExportPresets ==== ==== StopMTS ==== ==== StartMTS ==== ==== AddChannel ==== ==== DeleteChannel ==== ==== DecoderStatus ==== ==== TempStatus ==== ==== DisplayStatus ==== ==== camera_inquiry ==== ==== SetDevName ==== ==== SetNFS ==== ==== SetSNMP ==== ==== SetFpga ==== ==== SetRTSP ==== ==== SetOnvifVMD ==== ==== SetDSCP ==== ==== SetNMEAEnable ==== ==== UpdatePtz ==== ==== UpdatePtzPreset ==== ==== UpdatePtzTourSpots ==== ==== PtzAbsoluteMove ==== ==== PtzSetPreset ==== ==== PtzClearPreset ==== ==== PtzGotoPreset ==== ==== PtzNewTourSpot ==== ==== PtzRemoveTourSpot ==== ==== PtzStartTour ==== ==== PtzPosition ==== ==== PtzQuery ==== ==== InsQuery ==== ==== PtzAuxiliary ==== ==== PtzPreset ==== ==== user_add ==== ==== user_remove ==== ==== user_update_level ==== ==== user_update_password ==== ==== SetLoginLimit ==== ==== update_require_web_login ==== ==== Logout ==== ==== Login ==== ==== SaveCameraLx ==== ==== SaveCameraTau ==== ==== SaveCameraDRSTamarisk ==== ==== SaveCameraBoson ==== ==== SaveCameraLink ==== ==== EjectStorage ==== ==== fmt_media ==== ==== SetViVpssMode ==== ==== SetWifiAP ==== ==== DisconnectWifiAP ==== ==== SetAPConfig ==== ==== GetWifiPass ==== ==== SetConsole ==== ==== SetViewport ==== ==== GetCameraTab ==== ==== SetVideoGroup ==== ==== GetCameraLink ==== ==== SetCameraLink ==== ==== RemoveJobs ==== ==== SaveJobs ==== ==== GetVideoInputs ==== ===== Encoder Actions (POST) ===== ==== SetEncoder ==== Write encoder settings to active preset. See Python example code for Seting Configuration below ==== EncoderStatus ==== Requests an update to encoder_status_str variable. To read the result, you need to POST the “stats” control as shown\ in the Python example code below. ==== StreamStatus ==== Requests an update to stream_status_str variable. To read the result, you need to POST the “stats” control as shown\ in the Python example code below. ==== AStreamStatus ==== Requests an update to astream_status_str variable. To read the result, you need to POST the “stats” control as shown\ in the Python example code below. ==== SourceStatus ==== Requests an update to source_status_str variable. To read the result, you need to POST the “stats” control as shown\ in the Python example code below. ---- ===== Setting Encoder Configuration ===== To set the encode configuration per channel the **SetEncoder** action is used with a post. All variables should be present or they will be replaced with a defualt that may not be valid for your application. More than one channel can be set per command. It is recommended you first read the current settings from the encoder then modify them and send the new settings back as in the Python example below: import requests, json, sys server_url='http://192.168.0.120/cgi-bin/control.cgi' channel = 1 enc_cfg = requests.get(server_url, params='ctrl=enc&chn={}'.format(channel)) print enc_cfg.json() enc_cfg_json=enc_cfg.json() enc_cfg_json['vframeratediv'] = 2 #set frame rate divider to 2 new_cfg = {} new_cfg['action'] = 'SetEncoder' for key, value in enc_cfg_json.iteritems(): print "key = {} value = {}".format(key,value) new_idx = "enc_{}_{}".format(channel,key) print "setting {} to {}".format(new_idx,value) new_cfg[new_idx] = value print new_cfg requests.post(server_url, data=new_cfg) ===== snapshot.cgi Control ===== http:///snapshot.cgi?size=3840x2160&quality=100 http:///snapshot.cgi?chn=1&size=1280x720&quality=80 valid options are: * *size** =[any supported valid resolution]** chn** =[1,2]** quality** =[0-100] supported resolutions are: 4K Models Only 3840×2160 \\ 2560×1440 4K and HD Models 1920×1080 \\ 1440×1080 \\ 1280×1024 \\ 1280×720 \\ 1024×768 \\ 960×720 \\ 1024×576 \\ 800×600 \\ 720×576 \\ 704×576 \\ 720×480 \\ 640×512 \\ 640×480 \\ 640×360 \\ 352×576 \\ 420×380 \\ 352×288 \\ 352×240 \\ 336×256 \\ 320×240 \\ 320×180 ** ===== Reading Statistics ===== **Python example of updating and reading encoder statistics: ** import requests, json, sys server_url='http://192.168.0.120/cgi-bin/control.cgi' requests.post(server_url, {'action': 'EncoderStatus'} ) requests.post(server_url, {'action': 'StreamStatus'} ) requests.post(server_url, {'action': 'AStreamStatus'} ) requests.post(server_url, {'action': 'SourceStatus'} ) requests.post(server_url, {'action': 'TempStatus'} ) print requests.get(server_url, params='ctrl=stats&chn=null').json() **Example output: ** {u'status': u'OK', u'astream_status_str': u'\tChannel 6 Codec fdk_aaclc Samplerate 48000 Input MICL Frames 32287820 +OK', u'temp_status_str': u'+LENS 29 +CPU 78.700 +FPGA 89.8 +OK', u'ret': u'0', u'encoder_status_str': u' *** Encode Bitstream Received Statistics *** CH | Bitrate (Kbps) | Actual Bitrate | FPS | Actual FPS | Key-frame FPS | Width | Height ------------------------------------------------------------------------------------------------------------ 1 | 4000.00 | 4092.18 | 60.0 | 59.8 | 1.0 | 1920 | 1080 | +OK', u'source_status_str': u'+CAMERA 1920x1080p 60.00 fps\n', u'stream_status_str': u'Channel 1 URL rtsp Frames 12883581 +OK'} ===== Authentication ===== By default, no authentication is required to access the HTTP API. To enable authentication, go to the "System" tab "Device Management" section. Click on the "Set Password" button. The username will be "admin" The authentication method is HTTP Digest authentication. HTTP Basic authentication is not supported. === Python example code of HTTP Digest authentication === import requests,json, sys from requests.auth import HTTPDigestAuth auth=HTTPDigestAuth('admin','mypassword') print requests.get(server_url, params='ctrl=stats&chn=null', auth=auth).json()