For live streaming of certain events, it may be necessary to immediately stop the HLS live stream and switch to VoD after the HLS live broadcast ends. This API transitions to VoD by stopping segment updates for LL-HLS and HLS streams and inserting #EXT-X-ENDLIST. By using this API with a Scheduled Channel, you can implement additional application services.
Request
Responses
It allows you to insert events into streams. Right now events only support the ID3v2 format and only the LLHLS publisher handles it. Events delivered to LLHLS Publisher are inserted as emsg boxes within the m4s container.
Request
Authorization: Basic {credentials}
# Authorization
Credentials for HTTP Basic Authentication created with <AccessToken>
{
"eventFormat": "id3v2",
"eventType": "video",
"events":[
{
"frameType": "TXXX",
"info": "AirenSoft",
"data": "OvenMediaEngine"
},
{
"frameType": "TIT2",
"data": "OvenMediaEngine 123"
}
]
}
# eventFormat
Currently only id3v2 is supported.
# eventType (Optional, Default : event)
Select one of event, video, and audio. event inserts an event into every track.
video inserts events only on tracks of video type.
audio inserts events only on tracks of audio type.
# events
It accepts only Json array format and can contain multiple events.
## frameType
Currently, only TXXX and T??? (Text Information Frames, e.g. TIT2) are supported.
## info
This field is used only in TXXX and is entered in the Description field of TXXX.
## data
If the frameType is TXXX, it is entered in the Value field,
and if the frameType is "T???", it is entered in the Information field.
Responses
The can be controlled with this API.
Request
Responses
Request
Responses
The info file is continuously updated after the dump file is written. It is in XML format and is as follows. will continue to be added.
Get all stream names in the {vhost name}/{app name} application.
Request
Responses
Create a stream by pulling an external URL. External URL protocols currently support RTSP and OVT.
Request
Responses
Get detailed information of stream.
Request
Responses
Delete Stream. This terminates the ingress connection.
Request
Responses
The sender can reconnect after the connection is terminated. To prevent reconnection, you must use .
Content-Type: application/json
<HLSDumpInfo>
<UserData>~~~</UserData>
<Stream>/default/app/stream</Stream>
<Status>Running | Completed | Error </Status>
<Items>
<Item>
<Seq>0</Seq>
<Time>~~~</Time>
<File>~~~</File>
</Item>
...
<Item>
<Seq>1</Seq>
<Time>~~~</Time>
<File>/tmp/abc/xxx/298182/chunklist_0_video_llhls.m3u8</File>
</Item>
...
<Item>
<Seq>2</Seq>
<Time>~~~</Time>
<File>chunklist_0_video_llhls.m3u8</File>
</Item>
</Items>
</HLSDumpInfo>
Content-Type: application/json
keyFrameInterval is GOP size
Content-Type: application/json
Content-Type: application/json
Authorization: Basic {credentials}
Content-Type: application/json
# Authorization
Credentials for HTTP Basic Authentication created with <AccessToken>
{
"outputStreamName": "stream",
"id": "unique_dump_id",
"outputPath": "/tmp/",
"playlist" : ["llhls.m3u8", "abr.m3u8"],
"infoFile": "/home/abc/xxx/unique_info_file_name.info",
"userData": "access_key_id='AKIAXFOT7EWH3ZA4XXXX'"
}
# outputStreamName (required)
The name of the output stream created with OutputProfile.
# id (required)
ID for this API request.
# outputPath (required)
Directory path to output. The directory must be writable by the OME process.
OME will create the directory if it doesn't exist.
# playlist (optional)
Dump the master playlist set in outputPath. It must be entered
in Json array format, and multiple playlists can be specified.
# infoFile (optional)
This is the name of the DB file in which the information of the dumped files is
updated. If this value is not provided, no file is created. An error occurs
if a file with the same name exists. (More details below)
# userData (optional)
If infoFile is specified, this data is written to infoFile. Does not work
if infoFile is not specified.
{
"statusCode": 200,
"message": "OK",
"response": [
"stream",
"stream2"
]
}
# statusCode
Same as HTTP Status Code
# message
A human-readable description of the response code
# response
Json array containing a list of stream names
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
"message": "[HTTP] Authorization header is required to call API (401)",
"statusCode": 401
}
Content-Type: application/json
{
"statusCode": 404,
"message": "Could not find the application: [default/non-exists] (404)"
}
Authorization: Basic {credentials}
Content-Type: application/json
# Authorization
Credentials for HTTP Basic Authentication created with <AccessToken>
{
"outputStreamName": "stream",
"id": "dump_id"
}
# outputStreamName (required)
The name of the output stream created with OutputProfile.
# id (optional)
This is the id passed when calling the startHlsDump API.
If id is not passed, all dump in progress at outputStreamName is aborted.
{
"statusCode": 200,
"message": "OK",
"response": [
"stream",
"stream2"
]
}
# statusCode
Same as HTTP Status Code
# message
A human-readable description of the response code
# response
Json array containing a list of stream names
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
"message": "[HTTP] Authorization header is required to call API (401)",
"statusCode": 401
}
Content-Type: application/json
{
"statusCode": 404,
"message": "Could not find the application: [default/non-exists] (404)"
}
Content-Type: application/json
Authorization: Basic {credentials}
# Authorization
Credentials for HTTP Basic Authentication created with <AccessToken>
{
"statusCode": 200,
"message": "OK",
"response": [
"stream",
"stream2"
]
}
# statusCode
Same as HTTP Status Code
# message
A human-readable description of the response code
# response
Json array containing a list of stream names
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
"message": "[HTTP] Authorization header is required to call API (401)",
"statusCode": 401
}
Content-Type: application/json
{
"statusCode": 404,
"message": "Could not find the application: [default/non-exists] (404)"
}
Authorization: Basic {credentials}
Content-Type: application/json
# Authorization
Credentials for HTTP Basic Authentication created with <AccessToken>
{
"name": "new_stream_name",
"urls": [
"rtsp://192.168.0.160:553/app/stream",
"url to pull the stream from - support OVT/RTSP",
"Only urls with the same scheme can be sent as a group."
],
"properties":{
"persistent": false,
"noInputFailoverTimeoutMs": 3000,
"unusedStreamDeletionTimeoutMs": 60000,
"ignoreRtcpSRTimestamp": false
}
}
# name (required)
Stream name to create
# urls (required)
A list of URLs to pull streams from, in Json array format.
All URLs must have the same scheme.
# properties (optional)
## persistent
Created as a persistent stream, not deleted until DELETE
## noInputFailoverTimeoutMs
If no data is input during this period, the stream is deleted,
but ignored if persistent is true
## unusedStreamDeletionTimeoutMs
If no data is output during this period (if there is no viewer),
the stream is deleted, but ignored if persistent is true
## ignoreRtcpSRTimestamp
No waits RTCP SR and start stream immediately
Content-Type: application/json
{
"message": "Created",
"statusCode": 201
}
# statusCode
Same as HTTP Status Code
# message
A human-readable description of the response code
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
"message": "[HTTP] Authorization header is required to call API (401)",
"statusCode": 401
}
{
"statusCode": 404,
"message": "Could not find the application: [default/non-exists] (404)"
}
Authorization: Basic {credentials}
# Authorization
Credentials for HTTP Basic Authentication created with <AccessToken>
{
"statusCode": 200,
"message": "OK",
"response": {
"input": {
"createdTime": "2021-01-11T03:45:21.879+09:00",
"sourceType": "Rtmp",
"tracks": [
{
"id": 0,
"type": "Video",
"video": {
"bitrate": "2500000",
"bypass": false,
"codec": "H264",
"framerate": 30.0,
"hasBframes": false,
"keyFrameInterval": 30,
"height": 720,
"width": 1280
}
},
{
"id": 1,
"audio": {
"bitrate": "128000",
"bypass": false,
"channel": 2,
"codec": "AAC",
"samplerate": 48000
},
"type": "Audio"
}
]
},
"name": "stream",
"outputs": [
{
"name": "stream",
"tracks": [
{
"id": 0,
"type": "Video",
"video": {
"bypass": true
}
},
{
"id": 1,
"audio": {
"bypass": true
},
"type": "Audio"
},
{
"id": 2,
"audio": {
"bitrate": "128000",
"bypass": false,
"channel": 2,
"codec": "OPUS",
"samplerate": 48000
},
"type": "Audio"
}
]
}
]
}
}
# statusCode
Same as HTTP Status Code
# message
A human-readable description of the response code
# response
Details of the stream
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
"message": "[HTTP] Authorization header is required to call API (401)",
"statusCode": 401
}
Content-Type: application/json
{
"statusCode": 404,
"message": "Could not find the application or stream (404)"
}
Authorization: Basic {credentials}
# Authorization
Credentials for HTTP Basic Authentication created with <AccessToken>
{
"statusCode": 200,
"message": "OK",
}
# statusCode
Same as HTTP Status Code
# message
A human-readable description of the response code
WWW-Authenticate: Basic realm=”OvenMediaEngine”
{
"message": "[HTTP] Authorization header is required to call API (401)",
"statusCode": 401
}
Content-Type: application/json
{
"message": "[HTTP] Could not find the stream: [default/#default#app/stream] (404)",
"statusCode": 404
}