直播时移可以回看从直播开始时间到当前时间之间的直播视频。通过阅读本文,您可以了解直播时移的实现原理及请求方式。
实现原理
视频直播流会被切成TS切片,通过HLS协议向播放用户分发,用户请求的M3U8播放列表中包含不断刷新的TS切片地址。对于常规的HLS直播,TS切片地址及对应的TS文件无法保存,因此当前时间之前的视频直播内容无法进行回溯。在开启直播时移功能后,TS切片地址及对应的TS文件会分别在数据库和OSS中保存(最长配置30天,具体操作,请参见直播时移),可以回溯从直播开始时间到当前时间之间的视频。
使用限制
直播时移最大支持直播观看人数为10万人,如果需要支持更多人观看,请提交工单申请。
时移请求
一个完整的直播时移请求由HLS直播地址+时移参数组成,参数格式为lhs_{type}_{format}_{unit}_{zone}
,如下所示:
http://example.com/AppName/StreamName.m3u8?aliyunols=on&lhs_start_human_s_8=20171024160220&lhs_end_human_s_8=20171024160420
说明
aliyunols=on
为固定字段。
时移请求参数详情如下所示:
参数 | 描述 |
---|---|
type | 时间类型。取值:
|
format | 时移的时间格式。取值:
|
unit | 时移的时间单位。取值:
|
zone | 时区,取值:0~9,表示东*区。其中,0表示UTC时间,8表示中国时区。
说明 当format取值为unix时,zone取值为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
(向前时移30分钟)
时移时间查询
直播时移时间查询请求由请求URL和参数组成。其中,请求URL格式为http://{domain}/openapi/timeline/query
,示例如下所示:
//不带鉴权
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
名称 | 描述 |
---|---|
请求方式 | GET |
URL | 请求URL,例如:http://{domain}/openapi/timeline/query ,其中,{domain} 为您的播流域名。
|
参数 |
|
返回示例如下所示:
{
"retCode": 0,
"description": "success",
"content": {
"current": 1514269063,
"timeline": [
{
"start": 1514269054,
"end": 1514269058
},
{
"start": 1514269058,
"end": 1514269062
}
]
}
}
参数 | 描述 |
---|---|
current | 当前系统时间,播放器可以基于这个字段对时。 |
timeline | 有效的时移时间段,包含开始和结束时间戳。 |
start | 有效片段的开始时间(UNIX时间戳),单位:秒。 |
end | 有效片段的结束时间(UNIX时间戳),单位:秒。 |