Latest 1.2.2
Homepage https://github.com/ksvc/ksyhttpcache_ios
License Proprietary Copyright 2015 kingsoft Ltd. All rights reserved.
Platforms ios 7.0, requires ARC
Dependencies CocoaAsyncSocket, CocoaLumberjack
Authors

金山云iOS HTTPCache SDK

Apps UsingDownloads

CocoaPods version
CocoaPods platform

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

1. 产品概述

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

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

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

2.功能说明

它可以很方便的和播放器进行集成,提供以下功能:

  1. http点播视频边缓存边播放,且播放器可从通过回调得到缓存的进度以及错误码

  2. 缓存完成的视频,再次点播时可以离线播放,不再请求视频
    获取代理url方式(newCache参数一定要置为NO):[[KSYHTTPProxyService sharedInstance] getProxyUrl:@"url.mp4" newCache:NO]];

  3. 查询缓存已完成的文件列表, 缓存未完成的文件列表

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

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

  6. 提供预缓存接口KSYFileDownloader (v1.2.1)

3.下载和使用

3.1 此demo的编译和运行

  1. 使用git下载源码或者从release页面下载zipg格式压缩包后解码
  2. 打开终端,进入demo目录
  3. 执行pod install命令
  4. 成功后使用xcode打开新生成的KSYHTTPCacheDemo.xcworkspace工程文件即可编译和运行

3.2 SDK的下载和使用

3.2.1 下载SDK

本SDK依赖cocopads中的CocoaAsyncSocket,CocoaLumberjack两个库,建议使用pod的方式下载和使用。
在Podfile文件中添加以下语句,执行pod install之后即可将sdk添加入工程
pod 'ksyhttpcache'

3.2.2 使用SDK

  1. KSYHTTPProxyService类实现了本地HTTP代理,一般在appDelegate中将其启动即可
    
    #import <KSYHTTPCache/KSYHTTPProxyService.h>

@implementation AppDelegate

  • (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions {
    [[KSYHTTPProxyService sharedInstance] startServer];
    return YES;
    }

2. 使用[getProxyUrl](https://ksvc.github.io/ksyhttpcache_ios/doc/html/Classes/KSYHTTPProxyService.html#//api/name/getProxyUrl:)方法获取原始URL经过本地HTTP代理后的URL,之后将代理URL传递给播放器即可实现在播放的同时将文件cache到本地    
```objectivec
//get proxy url from ksyhttpcache
NSString *proxyUrl = [[KSYHTTPProxyService sharedInstance] getProxyUrl:@"http://maichang.kssws.ks-cdn.com/upload20150716161913.mp4"];

//init player with proxy url
KSYMoviePlayerController *player = [[KSYMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:proxyUrl]];

//play the video
[player prepareToPlay];
  1. 状态监听

    KSYHTTPCache发生错误时的发送CacheErrorNotification通知

    CacheErrorNotification

    KSYHTTPCache缓存进度发送变化时发送CacheStatusNotification通知

    CacheStatusNotification

    注册notification监听

    [[NSNotificationCenter defaultCenter] addObserver:self 
               selector:@selector(mediaCacheDidChanged:)
               name:CacheStatusNotification 
               object:nil];

    去掉notification监听

    [[NSNotificationCenter defaultCenter] removeObserver:self
                name:CacheStatusNotification
                object:nil];

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

设置缓存区位置

  (void)setCacheRoot:(NSString *)cacheRoot

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

  -(void)setMaxCacheSizeLimited:(long long)maxCacheSize;

使用限制文件总个数的策略

   -(void)setMaxFilesCountLimited:(NSInteger)maxFilesCount;

4.其他接口说明

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

(NSString*)getProxyUrl:(NSString*)url newCache:(BOOL)newCache;
(NSString*)getProxyUrl:(NSString*)url;

启动server

(void)startServer;

关闭server

(void)stopServer;

查询server是否在运行状态

(BOOL)isRunning;

删除缓存区所以文件

(void)deleteAllCachesWithError:(NSError**)error;

删除某个url对应的缓存文件

(void)deleteCacheForUrl:(NSURL*)url error:(NSError**)error;

查询某个url缓存是否完成

-(BOOL)isCacheCompleteForUrl:(NSURL*)url;

获得缓存已完成文件列表

-(NSArray*)getAllCachedFileListWithError:(NSError**)errors;

获得缓存未完成文件列表

-(NSArray*)getAllCachingFileListWithError:(NSError**)error;

获得url对应缓存文件的路径

-(NSString*)getCachedFilePathForUrl:(NSURL *)url;

获得url对应缓存未完成url对应的cache fragment

-(NSArray*)getCacheFragmentForUrl:(NSURL *)url error:(NSError **)error;

查询缓存区位置

-(NSString*)cacheRoot;

获得缓存区路径

5.API接口文档

API接口文档在线版  

6.其他文档

请见wiki

7.反馈与建议

Latest podspec

{
    "name": "ksyhttpcache",
    "version": "1.2.2",
    "license": {
        "type": "Proprietary",
        "text": "      Copyright 2015 kingsoft Ltd. All rights reserved.n"
    },
    "homepage": "https://github.com/ksvc/ksyhttpcache_ios",
    "authors": {
        "ksyun": "[email protected]"
    },
    "summary": "KSYHTTPCache u91d1u5c71u4e91iOSu5e73u53f0httpu7f13u5b58SDK.",
    "description": "* u91d1u5c71u4e91iosu5e73u53f0httpu7f13u5b58SDKuff0cu53efu65b9u4fbfu5730u4e0eu64adu653eu5668u96c6u6210uff0cu5b9eu73b0httpu89c6u9891u8fb9u64adu653eu8fb9u4e0bu8f7duff08u7f13u5b58uff09u529fu80fdu3002n* ksyun http cache sdk for ios platform, it's easy to integrated with media players to provide caching capability when watching http videos.",
    "platforms": {
        "ios": "7.0"
    },
    "requires_arc": true,
    "source": {
        "git": "https://github.com/ksvc/ksyhttpcache_ios.git",
        "tag": "v1.2.2"
    },
    "dependencies": {
        "CocoaAsyncSocket": [],
        "CocoaLumberjack": []
    },
    "vendored_frameworks": "framework/KSYHTTPCache.framework"
}

Pin It on Pinterest

Share This