阿里云移动端播放器高级功能---边播边缓存

简介: 基本介绍 阿里云播放器提供了边播边缓存功能,主要可用于省流量(断网可播)、加快二次起播速度、加快循环播放速度。如果开启此功能,用户在完整播放完一次视频后,视频将会被缓存到本地。再次播放的时候,如果本地缓存已经存在,则会直接播放本地缓存,避免走网络流量。


基本介绍

阿里云播放器提供了边播边缓存功能,主要可用于省流量(断网可播)、加快二次起播速度、加快循环播放速度。如果开启此功能,用户在完整播放完一次视频后,视频将会被缓存到本地。再次播放的时候,如果本地缓存已经存在,则会直接播放本地缓存,避免走网络流量。同时,本地视频打开速度比网络文件打开要快,起播速度也会有提升。

接口使用

AliyunVodPlayer 提供了以下接口去配置此功能:

Android接口:
public void setPlayingCache(boolean enable, String saveDir, int maxDuration, long maxSize)
iOS 接口:
-(void) setPlayingCache:(BOOL)bEnabled saveDir:(NSString*)saveDir maxSize:(int64_t)maxSize maxDuration:(int)maxDuration;

这四个参数的含义如下:

参数 功能 备注
enable 是否开启此功能。 当enable为false时,将关闭此功能。当enable为true的时候,不一定能够缓存文件。能否缓存,需要根据另外的三个参数决定。
saveDir 缓存文件保存的路径。 当视频能够被缓存时,将会保存到这个文件夹下面。文件名不是原始的文件名。
maxDuration 单个文件的最大时长,单位:秒。 如果某个文件的时长超过此值,即使enable=true,也将不会被缓存。
maxSize 整个文件夹缓存总大小的最大值,单位:MB。 如果文件夹中文件总大小将要超过此值,将会删掉最旧的文件,直到有足够的空间去缓存新的视频文件。

Android使用示例

AliyunVodPlayer  aliyunVodPlayer = new AliyunVodPlayer(this);
String sdDir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/test_save_cache";
aliyunVodPlayer.setPlayingCache(true, sdDir, 60 * 60 /*时长, s */, 300 /*大小,MB*/);

当完整播放完一次视频后,将在设置的dir目录中看到缓存的文件,截图如下:
041c1659e7753c509a4eb7ed5004670663bf0513

iOS使用示例

NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [pathArray objectAtIndex:0];
[_aliPlayer setPlayingCache:YES saveDir:docDir maxSize:3000 maxDuration:100000];

使用场景

有两个比较实用的场景:
1. 节省流量:播放完缓存在本地后,如果再次播放视频,则不需要耗费流量,可以大大节省用户流量。对那些需要重复播放同一个视频的场景比较有用。
2. 加快循环播放速度以及加快起播速度,如果视频已经缓存在本地,则循环播放会从本地读取视频,而不是再次从网络上读取,这样能够加快循环播放的速度。比较适合短视频场景。
3. 同时对长视频不太建议使用边播边缓存的功能。

功能注意点

1.以下情况将不会被缓存

  1. 播放过程中拖拽(seek)。如果播放过程中有拖拽动作,此次视频将不会被缓存。
  2. 没有播放完就停止播放(stop)。播放中stop,导致数据没有完整被获取,此次视频将不会被缓存。
  3. 无法获取到视频文件大小的。如果获取不到视频文件的大小,将无法判断是否超出maxSize,默认将不会被缓存。如果不判定视频文件大小,可以将参数MaxSize设置成-1,那么播放器内部不会对缓存大小进行判定。 缓存功能只有在:用户完整的播放完一次视频的时候才会有缓存文件。

2.缓存的文件名不可更改

缓存生成的文件名是匹配视频的唯一标志。如果文件名被修改,那么下次播放将找不到对应的缓存文件,将还会重新读取网络数据。

3.淘汰机制

如果设置的最大缓存大小是100M,此时缓存超过了你设置的最大空间后,则会把最早缓存下来的视频进行删除,保证最新视频能够缓存下来。

目录
相关文章
|
3月前
|
敏捷开发 缓存 测试技术
阿里云云效产品使用合集之缓存怎么设置
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
29天前
|
缓存 弹性计算 NoSQL
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
|
1月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
58 2
|
3月前
|
缓存 NoSQL 测试技术
【Azure Redis 缓存】Azure Redis 功能性讨论三: 调优参数配置
【Azure Redis 缓存】Azure Redis 功能性讨论三: 调优参数配置
|
3月前
|
存储 缓存 监控
【Azure Redis 缓存】Azure Redis 功能性讨论二
【Azure Redis 缓存】Azure Redis 功能性讨论二
【Azure Redis 缓存】Azure Redis 功能性讨论二
|
3月前
|
存储 缓存 NoSQL
【Azure Redis 缓存】Azure Redis功能性讨论
【Azure Redis 缓存】Azure Redis功能性讨论
|
3月前
|
机器学习/深度学习 存储 缓存
Java本地高性能缓存实践问题之阿里云机器学习团队开源社区的问题如何解决
Java本地高性能缓存实践问题之阿里云机器学习团队开源社区的问题如何解决
|
5月前
|
敏捷开发 缓存 测试技术
阿里云云效产品使用问题之构建Vue3项目,怎么让node_modules缓存下来
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
敏捷开发 缓存 测试技术
阿里云云效产品使用合集之在自建构建机中,如何不使用缓存进行构建
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
缓存 Devops 微服务
微服务01好处,随着代码越多耦合度越多,升级维护困难,微服务技术栈,异步通信技术,缓存技术,DevOps技术,搜索技术,单体架构,分布式架构将业务功能进行拆分,部署时费劲,集连失败如何解决
微服务01好处,随着代码越多耦合度越多,升级维护困难,微服务技术栈,异步通信技术,缓存技术,DevOps技术,搜索技术,单体架构,分布式架构将业务功能进行拆分,部署时费劲,集连失败如何解决