IPVTL Web API
HTTP + JSON interface for automation, OEM integration, and enterprise workflows.
Starting with version 6.1.4.4, the IPVTL transcoding web API is delivered as part of the software license at no additional cost whatsoever.
The API is based on the HTTP interface and uses JSON format. Integration is simple and cost-free for web developers to incorporate IPVTL functions into their own applications.
For OEM resellers, white-label options are available, including custom UI text and logo re-branding, at a one-time cost.
For experienced developers, we provide the IPVT SDK with a native C/C++ interface. Please contact our sales team for details if you are interested.
The IPVT web API requires IPVTL software to run. To evaluate the IPVT transcoding API, please download the IPVTL trial version first. Once IPVTL is running, the APIs listed below are accessible through the HTTP interface.
Note: If you are accessing the IPVT web API from a computer different from the IPVTL host, please ensure that the firewall is configured to allow traffic on the IPVTL HTTP port, and that network connectivity is verified.
Web API Authorization
If IPVTL login password is enabled in Global Settings, web API requires authorization to
work as well. To do that, add HTTP cookie auth=<passwd> in the
header to each GET/POST API below.
Note: The IPVT web API will not function if authentication fails.
Transcoding Config API
1. Set Config
POST
http://<server_ip>:<service_port>/config
Example: http://127.0.0.1:9527/config
Request Body
{
"name": "IP Video Transcoding Live Configuration",
"global": { # global settings
"log": 0, # 32 if enable channel log file
"httpPort": 9527, # web service port
"sslEnable": false, # enable SSL
"sslCert": "", # SSL certificate file path
"sslKey": "", # SSL key file path
"ipACL": "allow all", # IP ACL rules
"autoRun": false, # auto start program on system boot (windows only)
"autoRestart": 1, # auto restart channel on failure
"folderRecur": false, # recursive folder streaming
"folderShuffle": false, # shuffle folder streaming
"altInput": "", # alternative input stream url
"omxPath": "C:\\Program Files\\MainConcept\\FFmpeg-PlugIns\\bin\\omxil_core.dll", # omx core library path
"loginPass": "" # login password
},
"channels": [ # channel configurations
{ # channel 1
"enable": false, # true if start streaming on program start
"input": { # transcoding input
"sources": [
{
"format": "file", # input format
"url": "", # source address
"video": {
"options": [] # gpu decode options
}
}
],
"formatOptions": [], # blackmagic card options
"customOptions": "", # custom source options
"filters": [], # source filters
"map": [] # source map
},
"output": { # transcoding output
"targets": [
{ # 1st target
"format": "udp", # output format
"url": "udp://127.0.0.1:1234", # target address
"video": {
"enable": true, # enable video output
"codec": "h264", # video codec (see more)
"width": 0, # video frame width
"height": 0, # video frame height
"frameRate": 0, # video frame rate
"keyFrameInterval": 5, # key frame interval in seconds
"quality": 0,
"bitRate": 0, # video bitrate in Kb/s
"scanType": 0, # 0: none;
# 1: deinterlace;
# 2: top-first interlace;
# 3: bottom-first interlace
"options": ["-preset:v faster"] # codec specific options
},
"audio": {
"enable": true, # enable audio output
"codec": "aac", # audio codec (see more)
"sampleRate": 0, # audio sample rate in Hz
"channels": 2, # audio channels
"bitRate": 0 # audio bitrate in Kb/s
},
"mux": {
"bitRate": 0, # mux bitrate in Kb/s, should be larger than
# <video bitrate> + <audio bitrate>
"cbr": false # true if output strict CBR
},
"rtmp": {
"flashVer": "",
"swfUrl": "",
"user": "", # rtmp login username
"passwd": "" # rtmp login password
}
},
{ # 2nd target (if multi bitrate output)
...
},
...
],
"formatOptions": [], # hls output options
"customOptions": "" # custom target options
},
"memo": ""
},
{ # channel 2
...
},
...
]
}
2. Get Config
GET
http://<server_ip>:<service_port>/config
Example: http://127.0.0.1:9527/config
Response Body
# Same as Set Config request body above.
Transcoding Control API
1. Start Transcoding Channel
GET
http://<server_ip>:<service_port>/channel<id>?start
Example: http://127.0.0.1:9527/channel1?start
2. Stop Transcoding Channel
GET
http://<server_ip>:<service_port>/channel<id>?stop
Example: http://127.0.0.1:9527/channel1?stop
3. Get Transcoding Status
GET
http://<server_ip>:<service_port>/status
Example: http://127.0.0.1:9527/status
Response Body
{
"channels": [
{
"state": "idle", # channel state (idle/running/stopping)
"status": "12:34:56 30fps@1234Kbps" # channel running status
# (onair time, fps, bitrate, etc)
},
...
],
"cpu": [
10,11,12,13 # cpu load in percentage (per core)
]
}