热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

金山云AndroidHTTPCacheSDK

金山云android平台http缓存SDK,可轻易地与播放器集成,完成http视频边播放边下载(缓存)功用。ksyunhttpcachesdkforandroid,it’seasy

金山云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与播放器及视频效劳器的关联以下图:

《金山云Android HTTPCache SDK》

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 getCachedFileList()
取得缓存区中已缓存完成的文件列表(url和缓存文件)

HashMap 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…


推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
author-avatar
乐土网6868
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有