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

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

基本介绍

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

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

时移原理

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

接口和示例

Android使用

时移源的设置

AliyunVodPlayer 提供了 AliyunLiveTimeShift 这个类作为直播时移的播放源。其中setUrl和setTimeLineUrl是主要涉及的两个地址。
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)];

目录
相关文章
|
前端开发 关系型数据库 MySQL
IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】
IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】
|
Python Windows
JetBrains 插件市场安装 Cloud Toolkit
通过 JetBrains 插件市场安装 Alibaba Cloud Toolkit
55108 0
JetBrains 插件市场安装 Cloud Toolkit
|
安全 数据安全/隐私保护
openssh和openssl的版本关系
【4月更文挑战第14天】openssh和openssl的版本关系
3473 0
|
7月前
|
网络协议 前端开发 网络安全
B/S端和C/S端两种架构的应用详解,架构对于网络安全以及系统本身的详解-优雅草卓伊凡
本文详解B/S(浏览器/服务器)与C/S(客户端/服务器)两大主流架构:B/S依托HTTP、跨平台易维护,主导Web应用;C/S基于TCP、功能强定制高,适用于专业软件与游戏。对比历史演进、技术特点及适用场景,助你理解架构选型逻辑。(239字)
1023 12
|
7月前
|
机器学习/深度学习 算法 网络协议
AI算力狂飙背后的秘密:当“稳重老哥”Gloo遇上“极速引擎”NCCL
本文深度解析AI大模型训练中两大核心通信后端——Gloo与NCCL:前者是跨平台、高兼容的“稳健使者”,适配CPU及普通网络;后者是NVIDIA定制的“性能怪兽”,依托NVLink/RDMA实现GPU间纳秒级同步。文章以AllReduce等通信原语为切入点,对比其架构差异、适用场景与底层原理,并揭示分布式训练中通信瓶颈、拓扑感知、计算-通信重叠等关键工程实践,助开发者穿透框架表层,直抵算力调度本质。(239字)
807 6
|
4月前
|
人工智能 安全 API
为什么 2026 年开发者都在谈论 OpenCode?——从 0 到 7 万星标的爆火逻辑
2026年1月,Anthropic封禁第三方调用Claude Code,意外引爆OpenCode——一款开源、模型无关的AI编程Agent。支持75+模型,首创Plan/Build双模式与自愈式代理架构,将AI编程从黑盒委托变为可审查协作。半年GitHub星标破17万,月活近800万,成为开发者反供应商锁定的标志性工具。
|
7月前
|
人工智能 安全 API
小白也能会!OpenClaw Docker部署+阿里云/本地多系统搭建+千问或免费大模型API配置零踩坑指南
OpenClaw(昵称“龙虾 bot”)作为开源智能体框架,凭借灵活的扩展能力与多端适配性,成为个人与团队搭建专属AI助手的热门选择。而Docker的容器化特性,能完美解决OpenClaw部署中的环境冲突、配置残留等痛点,实现“一键部署、跨平台兼容”。2026年,结合阿里云云端部署与本地多系统部署方案,搭配阿里云千问或免费大模型API,可快速搭建稳定、高效的AI助手系统。
1506 0
GEO
|
4月前
|
数据采集 人工智能 搜索推荐
2026年AI搜索优化三大趋势深度解读
2026年,AI重塑信息获取方式,“零点击搜索”兴起。GEO(生成式引擎优化)、AIVO(AI可见度优化)和AWVO(AI写作与网站内容优化)成为数字营销新核心。本文从市场规模、技术演进与实操策略三维度,解析三大趋势如何助力品牌抢占AI时代的“认知主权”与流量入口。
GEO
1481 0
|
7月前
|
存储 JSON 安全
接口安全:签名、加密、防重放架构方案
本文详解接口安全三大核心防线:签名(防篡改/伪造)、加密(防窃听/泄露)、防重放(防复用攻击)。厘清三者边界与协同逻辑,提供生产级规范、主流算法选型及完整Java代码实现,助开发者构建真正安全的全链路接口防护体系。
1066 2
|
9月前
|
运维 安全 网络安全
WinSCP使用步骤详解(附安装与文件传输教程)
WinSCP是一款Windows平台的图形化文件传输工具,支持SFTP/FTP协议,可安全高效地在本地与远程服务器间传输文件。安装简便,操作直观:下载即用,填写IP、端口、账号信息后快速连接。界面分左右双窗格,分别显示本地与远程文件,支持拖拽上传下载、批量操作。支持密码及密钥登录,会话可保存,方便重复使用,是运维与开发人员的实用工具。
10183 3