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

简介: 基本介绍通常都知道直播是无法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
55146 0
JetBrains 插件市场安装 Cloud Toolkit
|
安全 数据安全/隐私保护
openssh和openssl的版本关系
【4月更文挑战第14天】openssh和openssl的版本关系
3493 0
|
7月前
|
人工智能 安全 API
小白也能会!OpenClaw Docker部署+阿里云/本地多系统搭建+千问或免费大模型API配置零踩坑指南
OpenClaw(昵称“龙虾 bot”)作为开源智能体框架,凭借灵活的扩展能力与多端适配性,成为个人与团队搭建专属AI助手的热门选择。而Docker的容器化特性,能完美解决OpenClaw部署中的环境冲突、配置残留等痛点,实现“一键部署、跨平台兼容”。2026年,结合阿里云云端部署与本地多系统部署方案,搭配阿里云千问或免费大模型API,可快速搭建稳定、高效的AI助手系统。
1542 0
GEO
|
4月前
|
数据采集 人工智能 搜索推荐
2026年AI搜索优化三大趋势深度解读
2026年,AI重塑信息获取方式,“零点击搜索”兴起。GEO(生成式引擎优化)、AIVO(AI可见度优化)和AWVO(AI写作与网站内容优化)成为数字营销新核心。本文从市场规模、技术演进与实操策略三维度,解析三大趋势如何助力品牌抢占AI时代的“认知主权”与流量入口。
GEO
1580 0
|
9月前
|
SQL 数据库 数据安全/隐私保护
手把手教你安装 SQLServer2014-x64-CHS附详细文步骤与避坑指南
下载解压SQL Server 2014安装包至根目录(路径勿含中文),断网后以管理员身份运行setup.exe。选择评估版,接受协议,勾选数据库引擎、管理工具等核心功能,设置混合验证模式并配置sa密码,将服务设为自动启动。安装完成后检查服务状态,确认“SQL Server (MSSQLSERVER)”正在运行即可使用。(238字)
2767 2
|
9月前
|
运维 安全 网络安全
WinSCP使用步骤详解(附安装与文件传输教程)
WinSCP是一款Windows平台的图形化文件传输工具,支持SFTP/FTP协议,可安全高效地在本地与远程服务器间传输文件。安装简便,操作直观:下载即用,填写IP、端口、账号信息后快速连接。界面分左右双窗格,分别显示本地与远程文件,支持拖拽上传下载、批量操作。支持密码及密钥登录,会话可保存,方便重复使用,是运维与开发人员的实用工具。
10600 3
|
9月前
|
并行计算 监控 安全
高效 GPU 加速:DeepSeek-R1 系列模型在 llama.cpp 上的生产级部署指南
本文详解如何在RTX 30/40系显卡上,通过llama.cpp高效部署DeepSeek-R1-8B模型。涵盖CUDA镜像选择、GPU卸载调优、显存控制与高可用架构,结合Docker、Prometheus监控及负载均衡,实现低延迟、高吞吐的生产级推理,助力大模型落地应用。
|
网络协议 算法 物联网
Go语言的WebSocket与实时通信
本文介绍了 WebSocket 技术及其在 Go 语言中的实现。WebSocket 是一种基于 TCP 的协议,支持客户端与服务器间的持久连接和实时通信,相比传统 HTTP 更高效。文章详细讲解了 WebSocket 的核心概念、Go 语言中的相关库(如 `gorilla/websocket`),以及其实现步骤和应用场景。通过代码示例展示了如何构建 WebSocket 服务器和客户端,并探讨了其在聊天应用、实时更新、游戏和物联网等领域的实际用途。此外,还推荐了相关工具和学习资源,帮助开发者更好地掌握这一技术。
707 3
|
自然语言处理 测试技术 Serverless
Qwen3开源发布:Think Deeper, Act Faster!社区推理、部署、微调、MCP调用实战教程来啦!
Qwen3开源发布:Think Deeper, Act Faster!社区推理、部署、微调、MCP调用实战教程来啦!
3796 22