时移直播原理
时移直播基于常规的HLS视频直播,直播推流被切分成TS分片,通过HLS协议向播放用户分发,用户请求的m3u8播放文件中包含不断刷新的TS分片地址;对于常规的HLS直播而言,TS分片地址及相应的TS文件并不持久化保存,导致当前时间之前的直播视频内容无法回溯;而对于开通了时移功能的HLS直播而言,TS分片地址及相应TS文件会分别在数据库和OSS中持久化保存最长30天,使得回溯从直播开始时间到当前时间之间的视频内容成为可能。
时移配置
时移功能可以在直播控制台自助开通使用。
时移请求参数
常规HLS直播地址形如 http://domain/app/stream.m3u8
,为实现时移播放需要在此直播地址基础上追加时移相关参数。
必备参数
时间相关的参数
-
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_offset_unix_ms_0=1800000(向前时移30min)
http://xxx.com/live/channel1.m3u8?aliyunols=on&lhs_start_human_s_8=20171024160220&lhs_end_human_s_8=20171024160420"
时间轴查询
查询某个流历史某段时间内哪些时间段有时移数据。
-
url:
http://{$domain}/openapi/timeline/query
-
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://$host/openapi/timeline/query?aliyunols=on&app=bbb&domain=aaaa&format=ts&lhs_end_unix_s_0=1513334270&lhs_start_unix_s_0=1513334255&stream=cc
response
{"retCode":0,"description":"success","content":{"current":1514269063,"timeline":[{"start":1514269054,"end":1514269058},{"start":1514269058,"end":1514269062}]}}'