全部产品
Search
文档中心

视频直播:直播时移

更新时间:Feb 15, 2023

直播时移可以回看从直播开始时间到当前时间之间的直播视频。通过阅读本文,您可以了解直播时移的实现原理及请求方式。

时移原理

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

时移配置

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

时移请求参数

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

必备参数

aliyunols=on

说明

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

时间相关的参数

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}:数字,表示东x区,0则表示UTC时间,中国为8(当format为unix时,该参数值为0)。

示例

  • lhs_start_human_s_8=20170809200010

  • lhs_start_unix_s_0=1502280113

  • lhs_end_human_s_8=20170809200010

  • lhs_vodend_unix_s_0=1502280113

  • lhs_offset_unix_ms_0=1800000(向前时移30min)

请求示例

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)。

  • example

    http://{$domain}/openapi/timeline/query?aliyunols=on&app=bbb&stream=cc&format=ts&lhs_end_unix_s_0=1513334270&lhs_start_unix_s_0=1513334255

    带鉴权的示例:

    http://{$domain}/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
  • 鉴权生成:直播也提供了API生成鉴权URL的方式,详情参考鉴权代码示例。

  • response

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