阿里云视频直播录制--按需录制

按需录制,在自动录制的基础上,您可以动态决定具体某条流是否需要录制。

适用场景:

  在自动录制的场景下,根据事先设定的配置,一条直播流要么录制,要么不录制,不可以动态修改录制行为。如果您想动态地控制录制的行为,可以使用按需录制的功能。

原理:

  按需录制的原理是当直播流推流上来之后,直播录制服务会发送一条HTTP回调给您事先设定的后台服务,通过该回调的返回内容决定是否录制这条直播流,并且可以动态的修改录制格式和录制周期。

       

LIVE代表阿里云视频服务中心,APP业务服务代表你的应用服务

在这里,您需要开发上图中的APP业务服务,接收HTTP回调,并根据您自身的业务逻辑决定是否录制。

使用流程:

  1. 和自动录制一样,调用AddLiveAppRecordConfig接口。其中OnDemand字段填1,表示通过HTTP回调开启按需录制。
  2. 调用AddLiveRecordNotifyConfig接口,设置OnDemandUrl字段。
  3. 推流
  4. APP业务服务接收到该推流的按需录制回调,根据自身业务决定是否录制,返回内容。
  5. 直播录制服务根据按需录制回调返回的结果,启动录制或不启动录制。

注意事项:

  如果没有设置OnDemandUrl,就不会有按需录制回调,默认行为是不录制。

涉及到的API包括:

 
API名称说明
AddLiveAppRecordConfig 配置自动录制规则
DeleteLiveAppRecordConfig 如果不再需要某项规则,可以通过该接口删除。
DescribeLiveRecordConfig 查询所有配置的规则
AddLiveRecordNotifyConfig 配置某个域名下的录制回调,包括事件回调和按需录制回调。
DeleteLiveRecordNotifyConfig 如果不再需要某个域名的录制回调,可以通过该接口删除。
DescribeLiveRecordNotifyConfig 查询某个域名的录制回调
UpdateLiveRecordNotifyConfig 更新某个域名的录制回调
按需录制回调 按需录制回调给您的HTTP消息定义

接口详情:

  1. 配置自动录制规则 (详情请参见:https://www.cnblogs.com/wmzll/p/14089927.html

  2. 删除自动录制配置(详情请参见:https://www.cnblogs.com/wmzll/p/14089927.html

  3. 查询所有配置规则 (详情请参见:https://www.cnblogs.com/wmzll/p/14089927.html

  4. 配置某个域名下的录制回调,包括事件回调和按需录制回调。调用AddLiveRecordNotifyConfig添加域名级别录制回调配置。

请求参数

 
名称类型是否必选示例值描述
Action String AddLiveRecordNotifyConfig

系统规定参数。取值:AddLiveRecordNotifyConfig。

DomainName String www.yourdomain.com

您的加速域名。

NotifyUrl String http://www.yourdomain.cn/examplecallback.action

录制回调(包括录制事件和状态回调) url 地址。

  • 必须以http://或者https://开头。
OnDemandUrl String http://www.yourdomain.cn/ondemandcallback.action

按需录制回调 url 地址。

NeedStatusNotify Boolean false

是否需要录制任务状态回调,可取值:true | false。

默认值:false。

返回数据

 
名称类型示例值描述
RequestId String 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8

请求ID。

 

    5. 删除录制回调,调用DeleteLiveRecordNotifyConfig删除域名级别录制回调配置。

请求参数

 
名称类型是否必选示例值描述
Action String DeleteLiveRecordNotifyConfig

系统规定参数。取值:DeleteLiveRecordNotifyConfig。

DomainName String www.yourdomain.com

您的加速域名。

返回数据

 
名称类型示例值描述
RequestId String 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8

请求ID。

    6. 查询某个域名的录制回调,调用DescribeLiveRecordNotifyConfig查询域名级别录制回调配置。

请求参数

 
名称类型是否必选示例值描述
Action String DescribeLiveRecordNotifyConfig

系统规定参数。取值:DescribeLiveRecordNotifyConfig。

DomainName String www.yourdomain.com

您的加速域名。

返回数据

 
名称类型示例值描述
RequestId String 5056369B-D337-499E-B8B7-B761BD37B08A

请求ID。

LiveRecordNotifyConfig    

域名录制回调配置。

DomainName String test.com

流所属加速域名。

NotifyUrl String http://www.yourdomain.cn/examplecallback.action

录制回调地址。

NeedStatusNotify Boolean false

是否需要录制任务状态回调。

OnDemandUrl String http://www.yourdomain.cn/ondemandcallback.action

按需录制回调url地址。

    7. 更新某个域名的录制回调, 调用UpdateLiveRecordNotifyConfig更新域名级别录制回调配置。

请求参数

 
名称类型是否必选示例值描述
Action String UpdateLiveRecordNotifyConfig

系统规定参数。取值:UpdateLiveRecordNotifyConfig。

DomainName String test.com

加速域名。

NotifyUrl String http://www.yourdomain.cn/examplecallback.action

录制回调(包括事件回调和状态回调)url地址。

  • 必须以http://https://开头。
  • 需要做url encode。
OnDemandUrl String http://www.yourdomain.cn/ondemandcallback.action

按需回调url地址。

  • 必须以http://https://开头。
  • 需要做url encode。
NeedStatusNotify Boolean false

是否需要录制任务状态回调,可取值:true | false。

默认值:false。

返回数据

 
名称类型示例值描述
RequestId String 16A96B9A-F203-4EC5-8E43-CB92E68F4CD

请求ID

      添加域名级别录制回调配置时,您可以添加以下内容:

      • 录制回调(包括录制文件生成事件回调、录制任务状态回调)URL地址,详见 录制事件回调
      • 按需录制回调URL地址 按需录制回调
      • 是否需要录制任务状态回调。

        录制事件回调

          指在你推流成功并且开始录制的时候,阿里云视频服务中心,回调你配置的回调接口,并且会携带一些参数。参数如下:

        

{
  "domain": "qt01.alivecdn.com",
  "app": "mp4flvtest_flv",
  "stream": "callback_test",
  "uri": "mp4flvtest_flv/callback_test/0_2017-03-08-23:09:46_2017-03-08-23:10:40.flv",
  "duration": 69.403,
  "start_time": 1488985786,
  "stop_time": 1488985840
}
其中,domain、app、stream分别为录制域名、应用名和流名,uri 为目标录制文件在用户录制 OSS Bucket 下的路径,duration、start_time、stop_time 分别为目标录制文件录制内容时长和起止时间。

  

录制状态回调示例,当 NeedStatusNotify=true 时产生

 1. 录制开始事件回调, 表示录制已经成功开始。

{
"domain": "gs_domain",
"app": "gs_app",
"stream": "gs_stream",
"event": "record_started"
}
其中,domain, app, stream分别为录制域名,应用名和流名,event为事件名,可以为record_started/record_paused/record_resumed。

  2. 录制暂停事件回调, 表示录制已经成功暂停。

{
"domain": "gs_domain",
"app": "gs_app",
"stream": "gs_stream",
"event": "record_paused"
}

  3. 录制继续事件回调, 表示录制已经成功恢复。

{
"domain": "gs_domain",
"app": "gs_app",
"stream": "gs_stream",
"event": "record_resumed"
}

      按需录制回调

        进行录制配置之后,您可以选择是否按需录制。

        目前,按需录制包括两种方式:

        • 通过推流参数(暂不支持)

        • 通过HTTP回调

          HTTP回调指用户指定一个回调地址,并设置一个domain、app或stream级别的录制为按需录制,当录制服务收到匹配domain、app或stream名称的流时向用户的回调地址发送请求(请求包含5个参数),来询问用户是否需要录制这路流。请您继续阅读以下内容了解 HTTP回调。

        

              请求参数
 
参数类型描述
domain String 域名。
app String 应用名称。
stream String 流名称。
codec String 编码方式。
  • 取值:h264、h265。
  • 如果未传递,默认为:h264。
vbitrate String 视频码率。
  • 单位:Kbps。
  • 例如:2000表示2M码率。
              返回参数
 
参数类型是否必选描述
ApiVersion String

API版本。

默认:1.0版本。

NeedRecord Bool 是否需要录制。
Interval Json Object 具体格式的录制周期变化。
  • 取值范围:5-21600。
  • 单位:秒。
Format Array 录制格式,支持MP4、FLV、M3U8。
原文地址:https://www.cnblogs.com/wmzll/p/14090105.html