Creating a Recording Template
Function
This API is used to create a recording template. The recording template only takes effect for streams that are pushed after the template is created.
URI
POST /v1/{project_id}/record/rules
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
project_id |
Yes |
String |
Project ID. For details about how to obtain a project ID, see Obtaining a Project ID. |
Request Parameters
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
X-Auth-Token |
Yes |
String |
User token. This parameter is mandatory when token authentication is used. The token can be obtained by calling the IAM API used to obtain a user token. The value of X-Subject-Token in the response header is the user token. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
publish_domain |
Yes |
String |
Ingest domain name. |
app |
Yes |
String |
Application name. To match any application, set this parameter to a wildcard character (*). Exact application matching is preferred. If no application is matched, all applications will be matched. |
stream |
Yes |
String |
Stream name. To match any stream, set this parameter to a wildcard character (*). Exact stream matching is preferred. If no stream is matched, all streams will be matched. |
record_type |
No |
String |
Recording type. The value can be CONTINUOUS_RECORD (by default) or COMMAND_RECORD. - CONTINUOUS_RECORD: continuous recording. When this template is configured, recording is triggered once streams are pushed to the recording system. - COMMAND_RECORD: command-based recording. When this template is configured, tenants need to run commands to start and stop recording after streams are pushed to the recording system. |
default_record_config |
Yes |
DefaultRecordConfig object |
Default recording template. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
record_format |
Yes |
Array of strings |
Recording format. |
obs_addr |
Yes |
RecordObsFileAddr object |
Details about the bucket for storing recordings. |
hls_config |
No |
HLSRecordConfig object |
HLS configuration rule. |
flv_config |
No |
FLVRecordConfig object |
FLV configuration rule. |
mp4_config |
No |
MP4RecordConfig object |
MP4 configuration rule. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
bucket |
Yes |
String |
OBS bucket name. |
location |
Yes |
String |
ID of the region where the OBS bucket resides. |
object |
Yes |
String |
OBS object path, which complies with the OBS object definition. If this parameter is left empty, recordings will be saved to the root directory. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
record_cycle |
Yes |
Integer |
Periodic recording duration, in seconds. The value ranges from 1 minute (60 seconds) to 12 hours. Note: If this parameter is set to 0, only one recording file will be generated for a stream. A file will be forcibly created when the file recording duration exceeds 10 days. |
record_prefix |
No |
String |
Path and file name prefix of an M3U8 file. The default value is Record/{publish_domain}/{app}/{record_type}/{record_format}/{stream}{file_start_time}/{stream}{file_start_time}. |
record_ts_prefix |
No |
String |
TS file name prefix. The default value is {file_start_time_unix}{file_end_time_unix}{ts_sequence_number}. |
record_slice_duration |
No |
Integer |
Duration of a TS segment generated in HLS recording, in seconds. This parameter is optional. The default value is 10. The value ranges from 2 to 60. |
record_max_duration_to_merge_file |
No |
Integer |
Interval threshold for combining HLS chunks. If the stream interruption duration exceeds this threshold, a new file will be generated. The unit is second. If the value is set to 0, a new file will be generated once the stream is interrupted. If the value is set to -1, the HLS chunks will be combined to the previous file generated within 30 days after the same stream is recovered. The default value is 0. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
record_cycle |
Yes |
Integer |
Periodic recording duration, in seconds. The value ranges from 1 minute to 12 hours. If this parameter is set to 0, only one recording file will be generated for a stream. |
record_prefix |
No |
String |
Path and file name prefix of an FLV file. The default value is Record/{publish_domain}/{app}/{record_type}/{record_format}/{stream}_{file_start_time}/{file_start_time}. |
record_max_duration_to_merge_file |
No |
Integer |
Interval threshold for combining FLV chunks. If the stream interruption duration exceeds this threshold, a new file will be generated. The unit is second. If the value is set to 0, a new file will be generated once the stream is interrupted. The default value is 0. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
record_cycle |
Yes |
Integer |
Periodic recording duration, in seconds. The value ranges from 1 minute to 12 hours. If this parameter is set to 0, only one recording file will be generated for a stream. |
record_prefix |
No |
String |
Path and file name prefix of a recording file. The default value is Record/{publish_domain}/{app}/{record_type}/{record_format}/{stream}_{file_start_time}/{file_start_time}. |
record_max_duration_to_merge_file |
No |
Integer |
Interval threshold for combining MP4 chunks. If the stream interruption duration exceeds this threshold, a new file will be generated. The unit is second. If the value is set to 0, a new file will be generated once the stream is interrupted. The default value is 0. |
Response Parameters
Status code: 201
Parameter |
Type |
Description |
---|---|---|
X-request-id |
String |
Request ID for task tracing. Format: *request_id-timestamp-hostname*. (*request_id* is the UUID generated on the server. *timestamp* indicates the current timestamp, and *hostname* is the name of the server that processes the current API.) |
Parameter |
Type |
Description |
---|---|---|
id |
String |
Template ID, which is returned by the server. This parameter does not need to be carried during creation or modification. |
publish_domain |
String |
Ingest domain name. |
app |
String |
Application name. To match any application, set this parameter to a wildcard character (*). Exact application matching is preferred. If no application is matched, all applications will be matched. |
stream |
String |
Stream name. To match any stream, set this parameter to a wildcard character (*). Exact stream matching is preferred. If no stream is matched, all streams will be matched. |
record_type |
String |
Recording type. The value can be CONTINUOUS_RECORD (by default) or COMMAND_RECORD. - CONTINUOUS_RECORD: continuous recording. When this template is configured, recording is triggered once streams are pushed to the recording system. - COMMAND_RECORD: command-based recording. When this template is configured, tenants need to run commands to start and stop recording after streams are pushed to the recording system. |
default_record_config |
DefaultRecordConfig object |
Default recording template. |
create_time |
String |
Creation time in the format of yyyy-mm-ddThh:mm:ssZ (UTC time). |
update_time |
String |
Modification time in the format of yyyy-mm-ddThh:mm:ssZ (UTC time). |
Parameter |
Type |
Description |
---|---|---|
record_format |
Array of strings |
Recording format. |
obs_addr |
RecordObsFileAddr object |
Details about the bucket for storing recordings. |
hls_config |
HLSRecordConfig object |
HLS configuration rule. |
flv_config |
FLVRecordConfig object |
FLV configuration rule. |
mp4_config |
MP4RecordConfig object |
MP4 configuration rule. |
Parameter |
Type |
Description |
---|---|---|
bucket |
String |
OBS bucket name. |
location |
String |
ID of the region where the OBS bucket resides. |
object |
String |
OBS object path, which complies with the OBS object definition. If this parameter is left empty, recordings will be saved to the root directory. |
Parameter |
Type |
Description |
---|---|---|
record_cycle |
Integer |
Periodic recording duration, in seconds. The value ranges from 1 minute (60 seconds) to 12 hours. Note: If this parameter is set to 0, only one recording file will be generated for a stream. A file will be forcibly created when the file recording duration exceeds 10 days. |
record_prefix |
String |
Path and file name prefix of an M3U8 file. The default value is Record/{publish_domain}/{app}/{record_type}/{record_format}/{stream}{file_start_time}/{stream}{file_start_time}. |
record_ts_prefix |
String |
TS file name prefix. The default value is {file_start_time_unix}{file_end_time_unix}{ts_sequence_number}. |
record_slice_duration |
Integer |
Duration of a TS segment generated in HLS recording, in seconds. This parameter is optional. The default value is 10. The value ranges from 2 to 60. |
record_max_duration_to_merge_file |
Integer |
Interval threshold for combining HLS chunks. If the stream interruption duration exceeds this threshold, a new file will be generated. The unit is second. If the value is set to 0, a new file will be generated once the stream is interrupted. If the value is set to -1, the HLS chunks will be combined to the previous file generated within 30 days after the same stream is recovered. The default value is 0. |
Parameter |
Type |
Description |
---|---|---|
record_cycle |
Integer |
Periodic recording duration, in seconds. The value ranges from 1 minute to 12 hours. If this parameter is set to 0, only one recording file will be generated for a stream. |
record_prefix |
String |
Path and file name prefix of an FLV file. The default value is Record/{publish_domain}/{app}/{record_type}/{record_format}/{stream}_{file_start_time}/{file_start_time}. |
record_max_duration_to_merge_file |
Integer |
Interval threshold for combining FLV chunks. If the stream interruption duration exceeds this threshold, a new file will be generated. The unit is second. If the value is set to 0, a new file will be generated once the stream is interrupted. The default value is 0. |
Parameter |
Type |
Description |
---|---|---|
record_cycle |
Integer |
Periodic recording duration, in seconds. The value ranges from 1 minute to 12 hours. If this parameter is set to 0, only one recording file will be generated for a stream. |
record_prefix |
String |
Path and file name prefix of a recording file. The default value is Record/{publish_domain}/{app}/{record_type}/{record_format}/{stream}_{file_start_time}/{file_start_time}. |
record_max_duration_to_merge_file |
Integer |
Interval threshold for combining MP4 chunks. If the stream interruption duration exceeds this threshold, a new file will be generated. The unit is second. If the value is set to 0, a new file will be generated once the stream is interrupted. The default value is 0. |
Status code: 400
Parameter |
Type |
Description |
---|---|---|
X-request-id |
String |
Request ID for task tracing. Format: *request_id-timestamp-hostname*. (*request_id* is the UUID generated on the server. *timestamp* indicates the current timestamp, and *hostname* is the name of the server that processes the current API.) |
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Error Code |
error_msg |
String |
Error description |
Example Requests
POST https://{endpoint}/v1/{project_id}/record/rules { "publish_domain" : "publish.xxx.com", "app" : "live", "stream" : "*", "record_type" : "CONTINUOUS_RECORD", "default_record_config" : { "record_format" : [ "HLS", "FLV" ], "hls_config" : { "record_cycle" : 3600, "record_prefix" : "Record/{publish_domain}/{app}/{record_type}/{record_format}/{stream}_{file_start_time}/{file_start_time}", "record_ts_prefix" : "{file_start_time_unix}-{file_end_time_unix}-{ts_sequence_number}", "record_slice_duration" : 10, "record_max_duration_to_merge_file" : 0 }, "flv_config" : { "record_cycle" : 9000, "record_prefix" : "Record/{publish_domain}/{app}/{record_format}/{stream}_{file_start_time}/{file_start_time}", "record_max_duration_to_merge_file" : 0 }, "obs_addr" : { "bucket" : "mybucket", "location" : "cn-north-4", "object" : "record/" } } }
Example Responses
Status code: 400
Failed to create the recording template.
{ "error_code" : "LIVE.100011001", "error_msg" : "Request Illegal" }
Status Codes
Status Code |
Description |
---|---|
201 |
Recording template created. |
400 |
Failed to create the recording template. |
Error Codes
See Error Codes.