金山云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.
产品概述
金山云Android HTTPCache SDK可以方便地和播放器进行集成,提供对HTTP视频边播放缓存的功能,缓存完成的内容可以离线工作。
KSY HTTPCache与播放器及视频服务器的关系如下图:
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...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。