阿里云移动端播放器高级功能---直播时移-阿里云开发者社区

开发者社区> 隽阜> 正文

阿里云移动端播放器高级功能---直播时移

简介: 基本介绍 通常都知道直播是无法seek拖动的,那么针对在直播中想回看之前直播过的内容的用户来说,直播时移就能派上用场。我们阿里云播放器支持了直播时移功能,用户能较为方面和快速的使用直播时移的功能。 先来看一下直播时移的介绍:时移直播基于常规的HLS视频直播,直播推流被切分成TS分片,通过HLS协...
+关注继续查看

基本介绍

通常都知道直播是无法seek拖动的,那么针对在直播中想回看之前直播过的内容的用户来说,直播时移就能派上用场。我们阿里云播放器支持了直播时移功能,用户能较为方面和快速的使用直播时移的功能。
先来看一下直播时移的介绍:时移直播基于常规的HLS视频直播,直播推流被切分成TS分片,通过HLS协议向播放用户分发,用户请求的m3u8播放文件中包含不断刷新的TS分片地址;对于常规的HLS直播而言,TS分片地址及相应的TS文件并不持久化保存,导致当前时间之前的直播视频内容无法回溯;而对于开通了时移功能的HLS直播而言,TS分片地址及相应TS文件会分别在数据库和OSS中持久化保存最长15天,使得回溯从直播开始时间到当前时间之间的视频内容成为可能。
更多的信息可以参考官网介绍:直播时移

先来看一下时移效果图:
81a5829ec9403c2690d72ca0394364543f1db8e2

时移原理

时移是通过时间轴url(TimeLineUrl) 去实时获取到可以时移的时间范围。在这个时间范围内的直播流,可以往回拖拽,回看之前的内容。拖拽时,播放器内部通过更新直播流的地址,加上起播的时间参数,然后从服务器拉取新的流,达到回看的目的。

接口和示例

Android使用

时移源的设置

AliyunVodPlayer 提供了 AliyunLiveTimeShift 这个类作为直播时移的播放源。其中setUrlsetTimeLineUrl是主要涉及的两个地址。
setUrl:这个设置的是直播流的地址。通过这个地址,播放器播放对应的直播源。
setTimeLineUrl:这个设置的是时移区间的获取地址。播放器将会每隔1分钟调用一次此接口去更新时移时间段。
(如何生成TimeLineUrl,请参考:直播时移

时移信息的获取

时移的获取,跟普通的点播信息获取基本类似,但是有特有的新增接口(Android):
getCurrentLiveTime:获取当前直播的时间点。
getCurrentTime:获取当前播放的时间点。

比如:现在是2019-01-30 14:01:04,播放的时候,往前时移了1分钟。那么:
getCurrentLiveTime = 2019-01-30 14:01:04。
getCurrentTime = 2019-01-30 14:00:04。

示例

//1.创建时移对象
mAliyunLiveTimeShift = new AliyunLiveTimeShift();
long currentSeconds = System.currentTimeMillis() / 1000;

//2.设置直播流地址
mAliyunLiveTimeShift.setUrl("http://pull-videocall.aliyuncs.com/timeline/test.m3u8");

//3.设置时移区间地址。
mAliyunLiveTimeShift.setTimeLineUrl("http://pull-videocall.aliyuncs.com/openapi/timeline/query?lhs_start=1&app=timeline&stream=test&format=ts&lhs_start_unix_s_0="
                + (currentSeconds - 5 * 60) + "&lhs_end_unix_s_0=" + (currentSeconds + 5 * 60));

//4.准备时移源。
mPlayer.prepareAsync(mAliyunLiveTimeShift);

iOS接口和示例

iOS提供了以下接口来使用直播时移:

//直播时间
@property (nonatomic, assign) NSTimeInterval liveTime;

//播放时间
@property (nonatomic, assign) NSTimeInterval currentPlayTime;

//每60秒更新用户时移时间,设置更新区间url后,可以获取
@property (nonatomic, strong) AliyunPlayerVideoTimeShiftModel *timeShiftModel;

//设置直播数据源
- (void)prepareWithLiveTimeUrl:(NSURL *)liveTimeUrl;

//设置时移区间更新url
- (void)setLiveTimeShiftUrl:(NSString*)liveTimeShiftUrl;

//时移到指定的时间
- (void)seekToLiveTime:(NSTimeInterval)startTime;

具体使用过程:

//1.设置时移区间更新url,地址需要用当前时间来进行拼写
NSTimeInterval currentSeconds = [[NSDate date] timeIntervalSince1970]; //秒
    NSString *currentLive = [NSString stringWithFormat:@"http://push-demo.aliyunlive.com/openapi/timeline/query?app=asr&stream=yunxi&format=ts&lhs_start_unix_s_0=%.0f&lhs_end_unix_s_0=%.0f",(currentSeconds - 5 * 60), (currentSeconds + 5 * 60)];
[self.vodPlayer setLiveTimeShiftUrl:currentLive];

//2. 准备直播时移播放地址
[self.vodPlayer prepareWithLiveTimeUrl:[NSURL URLWithString:@"http://push-demo.aliyunlive.com/asr/yunxi.m3u8"]];

//3. 播放成功后可以更新界面UI显示
//开始时间
double start = self.vodPlayer.timeShiftModel.startTime;
//记录总的结束时间
self.vodPlayer.timeShiftModel.endTime

//4. 拖动seek时移区间,通过进度条计算出来具体的时移时间
[self.vodPlayer seekToLiveTime:(int)(n*sender.value+s)];

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
CDN百科第四讲 | 如何优雅地在云上“摆摊”——做直播带货,你不得不关注的技术
地摊经济爆火,实际上早就有人已经在网上“摆摊”了,那就是直播带货!在搭建直播平台或者应用的过程中,都需要关注哪些技术呢?CDN又对直播起到什么作用呢?本文将为你解读。
1314 0
买CDN&视频云都不会错过的活动——618大促产品专家带你边看边买
2020年阿里云全速重构亿元补贴618上云年中促火热进行中,CDN和视频云产品低至5.5折,并有产品专家直播解读全站加速、直播与点播产品,带你边看边买,点击阅读详情。
434 0
CDN百科第八期 | 我的网站到底需不需要CDN加速?
上一期的CDN百科,我们介绍了CDN的工作原理、术语和应用场景,那么今天的CDN百科第八期,我们会解答一个很常见的用户疑问:我的网站/应用到底需不需要CDN加速?
3777 0
20年行业变革与技术演进,当下CDN如何为政企数字化转型加速?
CDN是内容分发网络,它可以将本来位于源站的内容分发到全国各地的节点,方便用户去就近访问所需的内容,以此达到缓解互联网网络拥塞、提升应用响应速率、改善用户体验的作用。随着互联网行业的变迁,CDN经历了几个关键的技术发展阶段,本文将做简单盘点。
364 0
视频豪横时代,应用如何快速构建视频点播能力?
我们已经到了视频+时代,视频正在成为一个基础的能力,但视频是一个比较特殊的领域,企业想要从零到一搭建视频应用,会面临着一系列挑战,如何应对?本文给你解答。
836 0
漫画解读:唐僧师徒是如何用CDN神力,修复雷音寺官网的?
1370多年前,唐僧师徒历经九九八十一难,抵达西天取得真经。伴随互联网技术进步,唐僧师徒变身企业家,经营雷音寺官网,信徒打开网站动动小手,就能在线下载真经了,然而经营网站,并非一帆风顺......
640 0
【漫画】最近,老王又Get了CDN的新技能
本期【CDN百科】第六讲请到了老王,作为传统企业CTO,什么时刻最令他措手不及?常见的网络攻击类型有哪些?老王如何Get到CDN的安全新技能?看漫画,寻找答案。
1055 0
如何利用全站加速,提升网站加速性能和用户体验?
阿里云全站加速产品是阿里云自主研发的融合了动态加速技术和静态加速技术的CDN产品,可以很好的解决页面动静态资源混合、跨运营商、网络不稳定、单线源站、突发流量、网络拥塞等诸多因素导致的响应慢、丢包、服务不稳定的问题,全面提升全站性能和用户体验。
839 0
阿里云荣获“最佳CDN行业领军企业”与“年度防护安全先锋”
7月15日,2020年ACDC亚太内容分发大会在上海如期召开,阿里云凭借在市场规模、技术布局与创新方案等多维度领先优势,荣获”“最佳CDN行业领军企业”与“年度防护安全先锋”两项大奖。
405 0
CDN百科第七期 | 关于CDN的原理、术语和应用场景那些事
关于CDN,想必你一定看过很多官方的解释。今天,CDN百科第七期,将用一篇3844字的文章,来带你了解CDN的诞生、术语、原理、特征以及应用场景,看完这篇文章,相信你将会对CDN这项互联网基础设施有更加透彻的了解。
2735 0
+关注
39
文章
1
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载