金山云Android HTTPCache SDK

金山云android平台http缓存SDK,可方便地与播放器集成,实现http视频边播放边下载(缓存)功能。ksyun http cache sdk for android, it's easy to integrated with media players to provide caching capability when watching http videos.

  1. 产品概述

金山云Android HTTPCache SDK可以方便地和播放器进行集成,提供对HTTP视频边播放缓存的功能,缓存完成的内容可以离线工作。

KSY HTTPCache与播放器及视频服务器的关系如下图:

clipboard.png

KSY HTTPCache相当于本地的代理服务,使用KSY HTTPCache后,播放器不直接请求视频服务器,而是向KSY HTTPCache请求数据。KSY HTTPCache在代理HTTP请求的同时,缓存视频数据到本地。

2.功能说明

它可以很方便的和播放器进行集成,提供以下功能: 1. http点播视频边缓存边播放,且播放器可从通过回调得到缓存的进度以及错误码

1.缓存完成的视频,再次点播时可以离线播放,不再请求视频server

2.查询已完成的文件列表( 展示缩略图,url), 未完成的文件列表(缓存进度,url)

3.清除缓存(清除所有缓存,或删除某个url缓存)

4.提供两种缓存策略供选择(限制缓存区总大小或者限制缓存文件总个数

3.下载和使用

下载libs目录下的jar包导入工程

为了保证正常工作,推荐一个app只使用一个KSYProxyService实例,例如:

public class App extends Application {

private KSYProxyService proxy;

public static KSYProxyService getProxy(Context context) {
    App app = (App) context.getApplicationContext();
    return app.proxy == null ? (app.proxy = app.newProxy()) : app.proxy;
}

private KSYProxyService newProxy() {
    return new KSYProxyService(this);
}

}
proxy与播放器的集成如下所示: 对于点播,播放器通过getProxyUrl接口获得播放地址,进行播放。 对于直播,则可通过getProxyUrl(url, newCache)接口获得播放地址,并通过参数newCache控制播放和缓存的行为。详情请见下方接口说明。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

HttpProxyCacheServer proxy = getProxy();
proxy.startServer();

String proxyUrl = proxy.getProxyUrl(VIDEO_URL);
mediaPlayer.setVideoPath(proxyUrl);

}
使用以上方法,proxy将采用默认配置。可采用如下方法自定义配置(需在startServer前设置):

设置缓存存储位置 proxy.setCacheRoot(fileRoot)

缓存区大小限制策略(文件个数限制、文件总大小限制),目前这两种策略只能二选一,且策略在每次播放完成或者退出播放时生效。

使用限制文件总大小的策略,默认使用的是该策略,且缓存大小为500M
proxy.setMaxCacheSize(maxCacheSize)
使用限制文件总个数的策略
proxy.setMaxFilesCount(maxFilesCount)

设置对单个文件大小限制,超过该大小的文件将不被缓存
proxy.setMaxSingleFileSize(long maxSingleFileSize)

设置不缓存任何文件
proxy.setDisableCache(true)

状态监听
监听proxy的error
void registerErrorListener(OnErrorListener onErrorListener)
监听某个url对应的缓存进度
void registerCacheStatusListener(OnCacheStatusListener onCacheStatusListener, String url)

4.其他接口说明
void getProxyUrl(url, newCache)
获得播放地址

对于http flv直播,如果播放器通过接口getProxyUrl( ur)获得播放地址,播放行为是:首次播放,边播放边缓存;以后播放相同url,则是回看缓存好的视频。
而如果播放器通过getProxyUrl(url, newCache)获得播放地址,播放行为是:newCache参数为true,无论是否有url对应的缓存内容,都是播放并缓存新的直播内容。newCache为false,如果有url对应的缓存内容(命中缓存),播放       时回看已缓存的直播内容;没有命中的缓存视频(未命中缓存),则播放并缓存新的直播内容。

void startServer()
启动server

void shutDownServer()
关闭server

void cleanCaches()
清除缓存区所有缓存(cacheRoot目录下的所有文件及数据库记录)

void cleanCache(String url)
删除某个url对于的缓存

boolean isCached(String url)
查询某个url是否缓存完成

HashMap<String, File> getCachedFileList()
获得缓存区中已缓存完成的文件列表(url和缓存文件)

HashMap<String, Integer> getCachingPercentsList()
获得缓存区中缓存未完成的文件列表(url和缓存完成百分比)

void resumeDownload(String url)
启用后台线程对于已缓冲但未完成的文件进行下载,该线程在以下情况下退出:

下载完成
server接收到相同url的播放请求
shutDownServer方法被调用
如果设置了缓存区文件个数限制,后台下载文件的个数不应超过文件限制

Bitmap getCachedFileThumbnail(String url)
获得缓存区已缓存完成的url对应的缩略图, 此调用为耗时操作,当文件较多时建议不要放在主线程中

File getCacheFile(String url)
获得缓存区已缓存完成的url对应的文件

File getCacheRoot()
获得缓存区路径

void setEnableStatModule(boolean enableStatModule)
设置日志模块的开关,默认为开启日志

void registerLogEventListener(OnLogEventListener onLogEventListener)
注册日志监听接口,当日志模块被开启时,OnLogEventListener将监听到HTTPCache的日志

5.其他文档

请见wiki

6.反馈与建议

答疑:金山云视频云客户端SDK答疑专区
邮箱:zengfanping@kingsoft.com
QQ讨论群:574179720
release:https://github.com/ksvc/ksyht...

阅读 3.3k

推荐阅读
视频云客户端SDK
用户专栏

金山视频云技术交流,围绕视频云整体功能,为移动直播、游戏、VR等场景提供全套技术方案。覆盖Android/i...

1 人关注
4 篇文章
专栏主页