直播时移可以回看从直播开始时间到当前时间之间的直播视频。本文详细介绍了直播时移原理及相关配置参数信息。

直播时移原理

直播时移基于常规的HLS视频直播,直播推流被切分成TS分片,通过HLS协议向播放用户分发,用户请求的M3U8播放文件中包含不断刷新的TS分片地址;对于常规的HLS直播而言,TS分片地址及相应的TS文件无法保存,导致当前时间之前的直播视频内容无法回溯;开通直播时移功能后,TS分片地址及相应TS文件会分别在数据库和OSS中最长保存30天,可以回溯从直播开始时间到当前时间之间的视频。

直播时移配置

直播时移功能可以在视频直播控制台配置。具体操作,请参见直播时移

直播时移最大支持直播观看人数为10万人,如果需要支持更多人观看,请您提交工单申请。

直播时移请求参数

HLS直播地址为:http://domain/app/stream.m3u8,实现时移播放需在此直播地址上追加时移相关参数。

说明 通过CDN调用时移请求时必须携带aliyunols参数。

时间相关的参数

Key格式:lhs_{type}_{format}_{unit}_{zone}。参数名由4个变量组成,前缀固定为lhs_,变量之间用下划线 (_)隔开。具体参数信息,请参见下表:

名称 描述
type 时间的类型。取值:
  • start:开始时间。
  • end:直播结束时间。
  • vodend:点播结束时间。
    说明 设置vodend表示使用点播模式回看,一次返回指定时间段内所有的ts,包含endlist标签。
  • offset:向前偏移的时间。
format 时间格式。取值:
  • unix:时间戳。
  • human:年月日时分秒。示例:20170809230130。
unit 时间单位。取值:
  • s:秒。
  • ms:毫秒。
  • us:微秒。
  • ns:纳秒。
zone 时区。取值:{0-9}。
  • 数字为东*区。
  • 0则为UTC时间。
  • 8为中国时区。
说明 当format取值为unix时,zone取值为0。

示例:

  • lhs_start_human_s_8=20170809200010
  • lhs_start_unix_s_0=1502280113
  • lhs_offset_unix_ms_0=1800000(向前时移30分钟)

请求示例:

http://example.com/live/channel1.m3u8?aliyunols=on&lhs_start_human_s_8=20171024160220&lhs_end_human_s_8=20171024160420

时间轴查询

  • 您可以在视频直播控制台中查询指定域名可时移的时间和数据量。更多详情,请参见用量查询
  • 您也可以通过以下参数配置查询。详细参数信息,参见下表:
名称 描述
url http://{$domain}/openapi/timeline/query{$domain}需使用您的播流域名。
method GET
params
  • aliyunols(required):on。
  • app(required):app。
  • stream(required):流名。
  • format(required):指定查询TS或FLV格式的时移数据。
  • lhs_start_unix_s_0(required):开始时间的时间戳。单位:秒(s)。
  • lhs_end_unix_s_0(required):结束时间的时间戳。单位:秒(s)。
说明 如果您开启了CDN的鉴权,需要加上对应的鉴权参数。
response(JSON格式)
  • current:表示当前系统时间,播放器可以基于这个字段对时。
  • timeline:一个数组,数组的元素是一个map,表示一段有效的时移时间段,包含如下字段。
  • timeline[i].start:有效片段的开始时间戳。单位:秒(s)。
  • timeline[i].end:有效片段的结束时间戳。单位:秒(s)。

示例如下:

{"retCode":0,"description":"success","content":{"current":1514269063,"timeline":[{"start":1514269054,"end":1514269058},{"start":1514269058,"end":1514269062}]}}'   

示例:

http://example.com/openapi/timeline/query?aliyunols=on&app=bbb&stream=cc&format=ts&lhs_end_unix_s_0=1513334270&lhs_start_unix_s_0=1513334255

带鉴权的示例:

http://example.com/openapi/timeline/query?auth_key=1606204918-0-0-3e898a5f491fedb113d17aad7c091dde&aliyunols=on&app=zzb-test&stream=zzb-shiyi&format=ts&lhs_start_unix_s_0=1606200900&lhs_end_unix_s_0=1606202520
鉴权可以由直播控制台生成或通过代码自行拼接:
  • 登录视频直播控制台,选择访问控制 > URL鉴权,生成签权地址后再拼接时移参数。
  • 视频直播支持通过代码自行拼接带鉴权的URL。更多详情,请参见鉴权代码示例