User Tools

Site Tools


http_qcom |

Table of Contents

HTTP API for Q603-RPS

For HE4K-01 / HE4K-R4 / MVE-150 / MVE-100R / SME-01 / DME-02/03/04 use Z3-TI-http_api

For the HE1080/HE2160 use 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

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​ 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

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.

Read the value of color table using the system call and pixel format

from the fpga.

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://<ENCODER_IP>/snapshot.cgi?size=3840x2160&quality=100

http://<ENCODER_IP>/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://<ENCODER_IP>/snapshot.cgi?size=3840x2160&quality=100

http://<ENCODER_IP>/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()
http_qcom.txt · Last modified: 2023/05/11 21:17 by johnw