top
V.I.O. Stream API Protocol Reference

Introduction

Version 0.96 November 11 2013

The VIO Stream API protocol is a web-based interface allowing for camera control over TCP/IP and HTTP/1.1. The API is accessed via the following URL on the camera:

http://camera_ip_addr/api/service

Services:

system

Status

This command will return the general system status.

/api/system

<system>
    <status>Running</status>
    <version>v1.5039</version>
    <serialnumber>ETP-1234-00001</serialnumber>
    <ipaddress>172.16.197.197</ipaddress>
    <time>1373912804</time>
    <utc>-7</utc>
    <user>none</user>
    <password>none</password>
</system>

Note that each item may be retrieved individually instead of as a group. For instance /api/system/time will retrieve only the time.

set subnet mask
/api/system/subnet=255.255.255.252
Sets the subnet for the IP over USB interface. This should be changed 
before the IP address. Once the IP address changes, the change takes effect.
set IP address
/api/system/ipaddress=172.16.197.197
Sets the IP address for the USB interface. Once this command is sent 
the IP address will change and the camera needs to be re-booted.
set time
/api/system?time=1373912804
Sets the system time in EPOCH.

set utc (timezone)

/api/system?utc=-8
Sets the Universal time code (UTC/GMT) for local time 

set user

/api/system?user=foo

set password

/api/system?password=bar

Note that after setting a username and password, all subsequent requests must utilize HTTP basic authentication

reset to defaults

/api/system/defaults
Resets the system settings to the default manufacturers configuration

save settings

/api/system/settingssave

Saves the new setting configuration to memory so that these settings 
will be used until either they are changed by command or the reset to 
defaults is used. If settings are changed and not saved, the 
previously saved settings will be reverted to at next power up.

mount camera as mass storage device

/api/system/msd

Note that mounting as a mass storage device will cause a loss of RNDIS (IP over USB) connectivity to the camera

setup sensor/quality/record resolution/sensor resolution

/api/system?resolution=1080p30-high-record1080-streamNO

The following resolution, quality level, and frame rate combinations are supported.

1080p30 options

1080p30-high-record1080p-streamNO
1080p30-med-record1080p-streamNO
1080p30-low-record1080p-stream1080p
1080p30-low-record1080p-stream480p
1080p30-low-record1080p-stream240p
1080p30-high-record480p-stream480p
1080p30-med-record480p-stream480p
1080p30-low-record480p-stream480p
1080p30-high-record240p-stream240p
1080p30-med-record240p-stream240p
1080p30-low-record240p-stream240p

1080p25 options

1080p25-high-record1080p-streamNO
1080p25-med-record1080p-streamNO
1080p25-low-record1080p-stream1080p
1080p25-low-record1080p-stream480p
1080p25-low-record1080p-stream240p
1080p25-high-record480p-stream480p
1080p25-med-record480p-stream480p
1080p25-low-record480p-stream480p
1080p25-high-record240p-stream240p
1080p25-med-record240p-stream240p
1080p25-low-record240p-stream240p

1080p24 options

1080p24-high-record1080p-streamNO
1080p24-med-record1080p-streamNO
1080p24-low-record1080p-stream1080p
1080p24-low-record1080p-stream480p
1080p24-low-record1080p-stream240p
1080p24-high-record480p-stream480p
1080p24-med-record480p-stream480p
1080p24-low-record480p-stream480p
1080p24-high-record240p-stream240p
1080p24-med-record240p-stream240p
1080p24-low-record240p-stream240p

720p60 options

720p60-high-record720p
720p60-med-record720p
720p60-low-record720p
720p60-high-record480p
720p60-med-record480p
720p60-low-record480p
720p60-high-record240p
720p60-med-record240p
720p60-low-record240p

720p50 options

720p50-high-record720p
720p50-med-record720p
720p50-low-record720p
720p50-high-record480p
720p50-med-record480p
720p50-low-record480p
720p50-high-record240p
720p50-med-record240p
720p50-low-record240p

720p30 options

720p30-high-record720p-stream720p
720p30-med-record720p-stream720p
720p30-low-record720p-stream720p
720p30-med-record720p-stream480p
720p30-low-record720p-stream480p
720p30-med-record720p-stream240p
720p30-low-record720p-stream240p
720p30-high-record480p-stream480p
720p30-med-record480p-stream480p
720p30-low-record480p-stream480p
720p30-high-record240p-stream240p
720p30-med-record240p-stream240p
720p30-low-record240p-stream240p

720p25 options

720p25-high-record720p-stream720p
720p25-med-record720p-stream720p
720p25-low-record720p-stream720p
720p25-med-record720p-stream480p
720p25-low-record720p-stream480p
720p25-med-record720p-stream240p
720p25-low-record720p-stream240p
720p25-high-record480p-stream480p
720p25-med-record480p-stream480p
720p25-low-record480p-stream480p
720p25-high-record240p-stream240p
720p25-med-record240p-stream240p
720p25-low-record240p-stream240p

720p24 options

720p24-high-record720p-stream720p
720p24-med-record720p-stream720p
720p24-low-record720p-stream720p
720p24-med-record720p-stream480p
720p24-low-record720p-stream480p
720p24-med-record720p-stream240p
720p24-low-record720p-stream240p
720p24-high-record480p-stream480p
720p24-med-record480p-stream480p
720p24-low-record480p-stream480p
720p24-high-record240p-stream240p
720p24-med-record240p-stream240p
720p24-low-record240p-stream240p

power

Status

/api/power

<power>
    <status>Running</status>
    <level>100</level>
    <timeout>0</timeout>
</power>

set timeout (inactivity power off timeout)

/api/power/timeout=1800

Power off after 30 minutes (1800 seconds). Setting the timeout to zero disables the power off timeout.

turn system power off (but keep camera and API running to enable power on)

/api/power/stop

turn system power on

/api/power/start

sensor

Status

/api/sensor

<sensor>
    <status>Running</status>
    <resolution>1080p</resolution>
    <fps>30</fps>
    <sharpener>0</sharpener>
    <noisefilter>0</noisefilter>
    <exposuretime>70</exposuretime>
    <exposurezone>spot</exposurezone>
</sensor>

Note that each item may be retrieved individually instead of as a group. For instance /api/sensor/fps will retrieve only the frames per second.

sharpener

/api/sensor?sharpener=1

You should generally have the sharpener turned on unless you plan to do sharpening in video post-production. Setting the sharpener to 0 will disable the sharpener.

noisefilter

/api/sensor?noisefilter=1

You should generally have the noise filter turned on unless you plan to do noise filtering in video post-production. Setting the noise filter to 0 will disable the noise filter.

exposuretime

/api/sensor?exposuretime=70

Increase exposure time to brighten / decrease to darken images (suggested range 40-90). The full range is from 10 to 255.

exposurezone

/api/sensor?exposurezone=fullframe

or

/api/sensor?exposurezone=spot

Spot uses the middle of the sensor for exposure calculations, while fullframe uses the entire frame

record

Status

/api/record

<record>
    <status>Stopped</status>
    <type>clip</type>
    <resolution>1080p</resolution>
    <quality>6000000</quality>
    <looptime>10</looptime>
    <loopforwardtime>10</loopforwardtime>
    <filetype>mov</filetype>
    <files>
        <file>
            <name>V0000000.mov</name>
            <lastmodified>946685322</lastmodified>
            <size>2007662</size>
        </file>
        <file>
            <name>V0000001.mov</name>
            <lastmodified>946685330</lastmodified>
            <size>2143798</size>
        </file>
    </files>
</record>

Note that each item may be retrieved individually instead of as a group. For instance /api/files will retrieve the list of files on the micro SDHC card.

start recording

/api/record/start

stop recording

/api/record/stop

set recording mode

/api/record?type=clip

or

/api/record?type=loop

or

/api/record?type=loopforward

"clip" mode will record as you expect. "loop" mode will record clips of length "looptime" seconds, and keep only clips during which "tag" is called (it may also keep clips the before and after the tag, if the tag was at the beginning or a the end of the loop). "loopforward" will record loops of "looptime" and then delete them, unless tag is called, in which case it will save the previous loop and keep recording the current file until recording is stopped.

set filetype

/api/record/filetype=mp4

or

/api/record/filetype=mov

set looptime

/api/record?looptime=30

specify looptime in seconds (30 seconds in this example)

set loopforwardtime

/api/record?loopforwardtime=30

specify looptime in seconds (30 seconds in this example)

download a recorded video

/api/record/file/V0000001.mov

delete a recorded video

/api/record/file/V0000001.mov/delete

stream

Status

/api/stream

<stream>
    <status>Stopped</status>
    <resolution>1080p</resolution>
    <quality>6000000</quality>
    <url>rtsp://172.16.197.197:8554/stream</url>
</stream>

Note that each item may be retrieved individually instead of as a group. For instance /api/url will retrieve only the url for the stream.

start streaming

/api/stream/start

stop streaming

/api/stream/stop

mjpeg

Status

/api/mjpeg

<mjpeg>
    <status>Stopped</status>
    <resolution>1080p</resolution>
    <quality>75</quality>
</mjpeg>

Note that each item may be retrieved individually instead of as a group. For instance /api/mjpeg/quality will retrieve only the mjpeg quality setting.

get single image from camera

/api/mjpeg/capture.jpg

start mjpeg server

/api/mjpeg/start

stop mjpeg server

/api/mjpeg/stop

set jpeg compression level (1-99)

/api/mjpeg?quality=75

still

Status

/api/still

<still>
    <status>Stopped</status>
    <resolution>1080p</resolution>
    <quality>75</quality>
    <files>
        <file>
            <name>P0000000.jpg</name>
            <lastmodified>946685292</lastmodified>
            <size>142842</size>
        </file>
    </files>
</still>

Note that each item may be retrieved individually instead of as a group. For instance /api/still/quality will retrieve only the still quality setting.

get single image from camera and save it sd card

/api/still/capture.jpg

save image to sd card

/api/still/save

set jpeg compression level (1-99)

/api/still?quality=75

overlay

Status

/api/overlay

<overlay>
    <enable>0</enable>
    <loc_x>50</loc_x>
    <loc_y>720</loc_y>
    <height>48</height>
    <color>blue</color>
</overlay>

Note that each item may be retrieved individually instead of as a group. For instance /api/overlay/height will retrieve only the height of the time and date overlay in pixels.

start

/api/overlay/start

Note that it is not recommended to use the overlay in "dual encoding" scenarios (simultaneous recording and streaming) due to performance limitations.

stop

/api/overlay/stop

x position

/api/overlay?loc_x=50

Specifies the x offset for the time and date overlay from the upper left in pixels.

y position

/api/overlay?loc_y=720

Specifies the y offset for the time and date overlay from the upper left in pixels.

height

/api/overlay?h=48

Specifies the height of the time and date overlay font (e.g. 24, 48, 96) in pixels.

color

/api/overlay?color=blue

or

/api/overlay?color=AF0F1F

Specifies the color of the time and date overlay characters (e.g. red, white, green, blue, black)

wifiap

Status

/api/wifiap

<wifiap>
    <status>stopped</status>
    <autorun>0</autorun>
    <ssid>Stream</ssid>
    <password>extremetech</password>
    <channel>11</channel>
    <enctype>wpa2</enctype>
    <ipaddress>none</ipaddress>
    <subnet>none</subnet>
</wifiap>

Note that each item may be retrieved individually instead of as a group. For instance /api/wifiap/ipaddress will retrieve only the ip address.

start

/api/wifiap/start

stop

/api/wifiap/stop

restart

/api/wifiap/restart

Restart after any settings change for changes to take effect

set ssid

/api/wifiap?ssid=Stream

set password

/api/wifiap?password=extremetech

set encryption type

/api/wifiap?enctype=wpa2

wpa2, wep, and none are supported

set autostart on

/api/wifiap?autostart=1

set autostart off

/api/wifiap?autostart=0

wificlient

Status

/api/wificlient

<wificlient>
    <status>Off</status>
    <autorun>0</autorun>
    <ssid>foo</ssid>
    <iptype>DHCP</iptype>
    <ipaddress>none</ipaddress>
    <subnet>none</subnet>
    <enctype>wpa2</enctype>
</wificlient>

Note that each item may be retrieved individually instead of as a group. For instance /api/wificlient/autorun will retrieve only the autorun setting.

start

/api/wificlient/start

stop

/api/wificlient/stop

set ssid

/api/wificlient?ssid=foo

set password

/api/wificlient?password=bar

set encryption type

/api/wificlient?enctype=wpa2

wpa2, wep, and none are supported

set autostart on

/api/wificlient?autostart=1

set autostart off

/api/wificlient?autostart=0

mic

Status

/api/mic

<mic>
    <enable>1</enable>
    <volume>100</volume>
    <alc>0</alc>
    <alclevel>7</alclevel>
    <boost>0</boost>
</mic>

Note that each item may be retrieved individually instead of as a group. For instance /api/mic/level will retrieve only the volume setting.

set volume level (0-100)

/api/mic?level=100

enable

/api/mic?enable=1

disable

/api/mic?enable=0

turn auto-level control on

/api/mic?alc=1

turn auto-level control off

/api/mic?alc=0

set auto-level control sensitivity (1-10)

/api/mic?alclevel=7

set boost (0,1,2)

/api/mic?boost=0

beeper

Status

/api/beeper

<beeper>
    <volume>5</volume>
</beeper>
turn beeper on
/api/beeper/start

turn beeper off

/api/beeper/stop

set beeper volume (1-10)

/api/beeper?volume=5

sdcard

Status

/api/sdcard

<sdcard>
    <status>inserted</status>
    <size>1645056000</size>
    <free>1612410000</free>
</sdcard>

Note that each item may be retrieved individually instead of as a group. For instance /api/sdcard/size will retrieve only the size of the Micro SDHC card in bytes.

Format

/api/sdcard/format

Eject

/api/sdcard/eject
Copyright 2014, Extreme Technologies, LLC