更新时间:2024-11-25 GMT+08:00
分享

新建OTT频道

功能介绍

创建频道接口,支持创建OTT频道。

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

URI

POST /v1/{project_id}/ott/channels

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目ID,获取方法请参考获取项目ID

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token,使用Token鉴权方式时必选。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。

Access-Control-Allow-Internal

String

服务鉴权Token,服务开启鉴权,必须携带Access-Control-Allow-Internal访问服务。

Access-Control-Allow-External

String

服务鉴权Token,服务开启鉴权,必须携带Access-Control-Allow-External访问服务。

表3 请求Body参数

参数

是否必选

参数类型

描述

domain

String

频道推流域名

app_name

String

组名或应用名

id

String

频道ID。频道唯一标识,为必填项。

name

String

频道名。可选配置

state

String

频道状态

  • ON:频道下发成功后,自动启动拉流、转码、录制等功能

  • OFF:仅保存频道信息,不启动频道

input

InputStreamInfo object

频道入流信息

encoder_settings

Array of encoder_settings objects

转码模板配置

record_settings

record_settings object

回看录制的配置信息。

endpoints

Array of EndpointItem objects

频道出流信息

encoder_settings_expand

EncoderSettingsExpand object

音频输出配置

表4 InputStreamInfo

参数

是否必选

参数类型

描述

input_protocol

String

频道入流协议

  • FLV_PULL

  • RTMP_PUSH

  • HLS_PULL

  • SRT_PULL

  • SRT_PUSH

sources

Array of SourcesInfo objects

频道主源流信息。入流协议为RTMP_PUSH和SRT_PUSH时,非必填项。其他情况下,均为必填项。

secondary_sources

Array of SecondarySourcesInfo objects

备入流数组,非必填项。如果有备入流,则主备入流必须保证路数、codec和分辨率均一致。入流协议为RTMP_PUSH时,无需填写。

failover_conditions

FailoverConditions object

非必填,频道供应商提供的主备音视频流URL切换的配置。

max_bandwidth_limit

Integer

当入流协议为HLS_PULL时,需要配置的最大带宽。

用户提供的拉流URL中,针对不同码率的音视频,均会携带带宽参数“BANDWIDTH”。

  • 如果这里配置最大带宽,媒体直播服务从URL拉流时,会选择小于最大带宽且码率最大的音视频流,推流到源站。

  • 如果这里未配置最大带宽,媒体直播服务从URL拉流时,会默认选择“BANDWIDTH”最高的音视频流,推流到源站。

ip_port_mode

Boolean

当推流协议为SRT_PUSH时,如果配置了直推源站,编码器不支持输入streamid,需要打开设置为true

ip_whitelist

String

SRT_PUSH类型时,客户push ip白名单

scte35_source

String

广告的scte35信号源。

仅HLS_PULL类型的频道支持此配置,且目前仅支持SEGMENTS。

ad_triggers

Array of strings

广告触发器配置。

包含如下取值:

  • Splice insert:拼接插入

  • Provider advertisement:提供商广告

  • Distributor advertisement:分销商广告

  • Provider placement opportunity:提供商置放机会

  • Distributor placement opportunity:分销商置放机会

audio_selectors

Array of InputAudioSelector objects

设置音频选择器,最多设置8个音频选择器

表5 SourcesInfo

参数

是否必选

参数类型

描述

url

String

频道源流URL,用于外部拉流

bitrate

Integer

码率。无需直播转码时,此参数为必填项

单位:bps。取值范围:(0,104,857,600](100Mbps)

width

Integer

分辨率对应宽的值,非必填项

取值范围:0 - 4096(4K)

height

Integer

分辨率对应高的值,非必填项

取值范围:0 - 2160(4K)

enable_snapshot

Boolean

描述是否使用该流做截图

bitrate_for3u8

Boolean

是否使用bitrate来固定码率。默认值:false

passphrase

String

协议为SRT_PUSH时的加密信息

backup_urls

Array of strings

备入流地址列表

stream_id

String

频道为SRT_PULL类型时,拉流地址的Stream ID。

latency

Integer

频道为SRT_PULL类型时的拉流时延。

表6 SecondarySourcesInfo

参数

是否必选

参数类型

描述

url

String

频道源流URL,用于外部拉流

bitrate

Integer

码率。无需直播转码时,此参数为必填项

单位:bps。取值范围:(0,104,857,600](100Mbps)

width

Integer

分辨率对应宽的值,非必填项

取值范围:0 - 4096(4K)

height

Integer

分辨率对应高的值,非必填项

取值范围:0 - 2160(4K)

bitrate_for3u8

Boolean

是否使用bitrate来固定码率。默认值:false

passphrase

String

协议为SRT_PUSH时的加密信息

backup_urls

Array of strings

备入流地址列表

stream_id

String

频道为SRT_PULL类型时,拉流地址的Stream ID。

latency

Integer

频道为SRT_PULL类型时的拉流时延。

表7 FailoverConditions

参数

是否必选

参数类型

描述

input_loss_threshold_msec

Integer

入流停止的时长阈值。到达此阈值后,自动触发主备切换。

单位:毫秒,取值范围:0 - 3600000。

非必填,默认填2000ms。

input_preference

String

以主入流URL为第一优先级(PRIMARY)或主备URL平等切换(EQUAL)。

如果是平等切换时,使用的是备URL,不会自动切换至主URL。

非必填,默认值为EQUAL。

表8 InputAudioSelector

参数

是否必选

参数类型

描述

name

String

音频选择器的名称。仅支持大小写字母、数字、中划线和下划线。

同一个频道中每个选择器的名称需要唯一。

selector_settings

AudioSelectorSettings object

设置音频选择器

表9 AudioSelectorSettings

参数

是否必选

参数类型

描述

audio_language_selection

AudioSelectorLangSelection object

设置语言选择器

audio_pid_selection

AudioSelectorPidSelection object

设置PID选择器

audio_hls_selection

AudioSelectorHlsSelection object

设置Hls选择器

表10 AudioSelectorLangSelection

参数

是否必选

参数类型

描述

language_code

String

语言简称,输入2或3个小写字母的语言代码。

language_selection_policy

String

语言输出策略。

取值如下:

  • LOOSE:宽松匹配,示例“eng”会优先匹配源流中语言为English的音轨,如果匹配不到,则选择PID最小的音轨。

  • STRICT:严格匹配,示例“eng”会严格匹配源流中语言为English的音轨,如果匹配不到,媒体直播服务会自动补齐一个静音分片,当终端使用此音频选择器播放视频时,会静音播放。

表11 AudioSelectorPidSelection

参数

是否必选

参数类型

描述

pid

Integer

设置PID的值

表12 AudioSelectorHlsSelection

参数

是否必选

参数类型

描述

name

String

hls音频选择器名

group_id

String

hls音频选择器gid

表13 encoder_settings

参数

是否必选

参数类型

描述

template_id

String

转码模板ID

表14 record_settings

参数

是否必选

参数类型

描述

rollingbuffer_duration

Integer

最大回看录制时长。在此时间段内会连续不断的录制,为必选项

单位:秒。取值为“0”时,表示不支持录制;最大支持录制14天

表15 EndpointItem

参数

是否必选

参数类型

描述

hls_package

Array of HlsPackageItem objects

HLS打包信息

dash_package

Array of DashPackageItem objects

DASH打包信息

mss_package

Array of MssPackageItem objects

MSS打包信息

表16 HlsPackageItem

参数

是否必选

参数类型

描述

url

String

客户自定义的拉流地址,包括方法、域名、路径

stream_selection

Array of StreamSelectionItem objects

从全量流中过滤出一个码率在[min, max]区间的流。如果不需要码率过滤可不选。

hls_version

String

HLS版本号

segment_duration_seconds

Integer

频道输出分片的时长,为必选项

单位:秒。取值范围:1-10

说明:

修改分片时长会影响已录制内容的时移和回看服务,请谨慎修改!

playlist_window_seconds

Integer

频道直播返回分片的窗口长度,为频道输出分片的时长乘以数量后得到的值。实际返回的分片数不小于3个。

单位:秒。取值范围:0 - 86400(24小时转化成秒后的取值)

encryption

Encryption object

加密信息

ads

Object

广告配置

ext_args

Object

其他额外参数

request_args

PackageRequestArgs object

播放相关配置

ad_marker

Array of strings

广告标识。

HLS取值:["ENHANCED_SCTE35"]。

表17 DashPackageItem

参数

是否必选

参数类型

描述

url

String

客户自定义的拉流地址,包括方法、域名、路径

stream_selection

Array of StreamSelectionItem objects

从全量流中过滤出一个码率在[min, max]区间的流。如果不需要码率过滤可不选。

segment_duration_seconds

Integer

频道输出分片的时长,为必选项

单位:秒。取值范围:1-10

说明:

修改分片时长会影响已录制内容的时移和回看服务,请谨慎修改!

playlist_window_seconds

Integer

频道直播返回分片的窗口长度,为频道输出分片的时长乘以数量后得到的值。实际返回的分片数不小于3个。

单位:秒。取值范围:0 - 86400(24小时转化成秒后的取值)

encryption

Encryption object

加密信息

ads

Object

广告配置

ext_args

Object

其他额外参数

request_args

PackageRequestArgs object

播放相关配置

ad_marker

String

广告标识。

DASH取值:"xml+bin"。

表18 MssPackageItem

参数

是否必选

参数类型

描述

url

String

客户自定义的拉流地址,包括方法、域名、路径

stream_selection

Array of StreamSelectionItem objects

从全量流中过滤出一个码率在[min, max]区间的流。如果不需要码率过滤可不选。

segment_duration_seconds

Integer

频道输出分片的时长,为必选项

单位:秒。取值范围:1-10

说明:

修改分片时长会影响已录制内容的时移和回看服务,请谨慎修改!

playlist_window_seconds

Integer

频道直播返回分片的窗口长度,为频道输出分片的时长乘以数量后得到的值。实际返回的分片数不小于3个。

单位:秒。取值范围:0 - 86400(24小时转化成秒后的取值)

encryption

Encryption object

加密信息

ext_args

Object

其他额外参数

delay_segment

Integer

延播时长,单位秒

request_args

PackageRequestArgs object

播放相关配置

表19 StreamSelectionItem

参数

是否必选

参数类型

描述

key

String

拉流URL中用于码率过滤的参数

max_bandwidth

Integer

最大码率,单位:bps

取值范围:0 - 104,857,600(100Mbps)

min_bandwidth

Integer

最小码率,单位:bps

取值范围:0 - 104,857,600(100Mbps)

表20 Encryption

参数

是否必选

参数类型

描述

key_rotation_interval_seconds

Integer

密钥缓存时间。如果密钥不变,默认缓存七天。

请注意:目前为保留字段,不支持配置。

encryption_method

String

加密方式。

请注意:目前为保留字段,不支持配置。

level

String

取值如下:

  • content:一个频道对应一个密钥

  • profile:一个码率对应一个密钥

默认值:content

resource_id

String

客户生成的DRM内容ID

system_ids

Array of strings

system_id枚举值。

取值如下:

  • HLS:FairPlay

  • DASH:Widevine、PlayReady

  • MSS:PlayReady

url

String

获取密钥的DRM地址

speke_version

String

drm speke 版本号 当前只支持1.0

request_mode

String

请求模式。

取值如下:

  • direct_http:HTTP(S)直接访问DRM。

  • functiongraph_proxy:FunctionGraph代理访问DRM。

http_headers

Array of HttpHeader objects

需要添加在drm请求头中的鉴权信息。最多支持配置5个。

仅direct_http请求模式支持配置http_headers。

urn

String

functiongraph_proxy请求模式需要提供functiongraph的urn。

表21 HttpHeader

参数

是否必选

参数类型

描述

key

String

请求头中key字段名

value

String

请求头中key对应的value值

表22 PackageRequestArgs

参数

是否必选

参数类型

描述

record

Array of RecordRequestArgs objects

录制播放相关配置

timeshift

Array of TimeshiftRequestArgs objects

时移播放相关配置

live

Array of LiveRequestArgs objects

直播播放相关配置

表23 RecordRequestArgs

参数

是否必选

参数类型

描述

start_time

String

开始时间

end_time

String

结束时间

format

String

格式

unit

String

单位

表24 TimeshiftRequestArgs

参数

是否必选

参数类型

描述

back_time

String

时移时长字段名

unit

String

单位

表25 LiveRequestArgs

参数

是否必选

参数类型

描述

delay

String

时延字段

unit

String

单位

表26 EncoderSettingsExpand

参数

是否必选

参数类型

描述

audio_descriptions

Array of audio_descriptions objects

音频输出配置的描述信息

表27 audio_descriptions

参数

是否必选

参数类型

描述

name

String

音频输出配置的名称。仅支持大小写字母,数字,中划线(-),下划线(_)。

同一个频道不同的音频输出配置名称,不允许重复。

audio_selector_name

String

音频选择器名称

language_code_control

String

语言代码控制。这里的设置不会修改音频实际的语言,只会修改音频对外展示的语言。

包含如下选项:

  • FOLLOW_INPUT:如果所选音频选择器对应的输出音频有语言,则与其保持一致,否则会以这里配置的语言代码和流名称进行兜底。推荐当前选项,为默认值。

  • USE_CONFIGURED:用户根据实际情况自定义输出音频的语言和流名称。

language_code

String

语言代码,输入2或3个小写字母。

stream_name

String

流名称

响应参数

状态码: 201

表28 响应Body参数

参数

参数类型

描述

result_code

String

错误码

result_msg

String

错误描述

domain

String

推流域名

app_name

String

组名或应用名,为必填项

id

String

频道ID。频道唯一标识,为必填项

sources

Array of SourceRsp objects

推流URL列表。创建频道时,只有入流协议为RTMP_PUSH时,会返回推流URL列表

表29 SourceRsp

参数

参数类型

描述

url

String

RTMP推流地址

bitrate

Integer

码率。

单位:bps。取值范围:(0,104,857,600](100Mbps)

width

Integer

分辨率对应宽的值。取值范围:0 - 4096(4K)

height

Integer

分辨率对应高的值。取值范围:0 - 2160(4K)

enable_snapshot

Boolean

描述是否使用该流做截图

状态码: 400

表30 响应Body参数

参数

参数类型

描述

result_code

String

错误码

result_msg

String

错误描述

domain

String

推流域名

app_name

String

组名或应用名,为必填项

id

String

频道ID。频道唯一标识,为必填项

请求示例

POST https://{endpoint}/v1/{project_id}/ott/channels

{
  "domain" : "push.testott.hls.com",
  "app_name" : "ott",
  "id" : "test",
  "name" : "testname",
  "input" : {
    "input_protocol" : "FLV_PULL",
    "sources" : [ {
      "url" : "http://192.168.0.1/ott/test.flv?vhost=pull.testott.hls.com",
      "bitrate" : 1024,
      "width" : 100,
      "height" : 100
    } ],
    "failover_conditions" : {
      "input_loss_threshold_msec" : 100,
      "input_preference" : "EQUAL"
    }
  },
  "record_settings" : {
    "rollingbuffer_duration" : 86400
  },
  "endpoints" : [ {
    "hls_package" : [ {
      "url" : "pull.testott.hls.com/ott/test/index.m3u8",
      "stream_selection" : [ {
        "key" : "sss",
        "max_bandwidth" : 100,
        "min_bandwidth" : 100
      } ],
      "hls_version" : "1",
      "segment_duration_seconds" : 4,
      "playlist_window_seconds" : 3600
    } ],
    "dash_package" : [ {
      "url" : "pull.testott.hls.com/ott/test/index.mpd",
      "stream_selection" : [ {
        "key" : "bitrate=900000-1800000",
        "max_bandwidth" : 1800000,
        "min_bandwidth" : 900000
      } ],
      "segment_duration_seconds" : 4,
      "playlist_window_seconds" : 3600
    } ],
    "mss_package" : [ {
      "url" : "pull.testott.hls.com/ott/channel/manifest",
      "stream_selection" : [ {
        "key" : "bitrate=900000-1800000",
        "max_bandwidth" : 1800000,
        "min_bandwidth" : 900000
      } ],
      "segment_duration_seconds" : 4,
      "playlist_window_seconds" : 3600
    } ]
  } ],
  "state" : "OFF"
}

响应示例

状态码: 201

Demo Information

{
  "result_code" : "LIVE.100000000",
  "result_msg" : "SUCCESS",
  "domain" : "push.testott.hls.com",
  "app_name" : "ott",
  "id" : "test",
  "sources" : [ {
    "url" : "rtmp://push.testott.hls.com/ott/test_1024?request_source=ott&channel_id=test",
    "bitrate" : 1024,
    "width" : 100,
    "height" : 100
  } ]
}

状态码: 400

Error response

{
  "result_code" : "LIVE.100011001",
  "result_msg" : "output url pull.testott.hls.com/ott/test/index.m3u8 is exist",
  "domain" : "push.testott.hls.com",
  "app_name" : "ott",
  "id" : "test"
}

状态码

状态码

描述

201

Demo Information

400

Error response

错误码

请参见错误码

相关文档