OhosVideoCache 是一个专为OpenHarmony开发(HarmonyOS也可以用)的音视频缓存库,旨在帮助开发者轻松实现音视频的边播放边缓存功能。以下是关于 OhosVideoCache 的详细介绍:
1. 核心功能
2. 使用方法
安装
通过以下命令安装 OhosVideoCache:
ohpm install @ohos/video-cache
初始化代理服务器
建议使用单例模式维护代理服务器对象,避免重复创建多个代理服务器实例,从而节省资源并提高应用性能。以下是初始化代理服务器的示例代码:
import { HttpProxyCacheServer, HttpProxyCacheServerBuilder } from '@ohos/video-cache';
import common from '@ohos.app.ability.common';export default class GlobalProxyServer {private static instance: GlobalProxyServer;private _objects: Map<string, Object | null> = new Map<string, Object | null>();private constructor() {}public static getInstance(): GlobalProxyServer {if (!GlobalProxyServer.instance) {GlobalProxyServer.instance = new GlobalProxyServer();}return GlobalProxyServer.instance;}setServer(objectClass: HttpProxyCacheServer) {this._objects.set('server', objectClass);}getServer(): HttpProxyCacheServer {return this._objects.get('server') as HttpProxyCacheServer;}
}// 初始化代理服务器
let server: HttpProxyCacheServer = new HttpProxyCacheServerBuilder(getContext()).build();
GlobalProxyServer.getInstance().setServer(server);
处理音视频URL
将原始音视频URL传递给 OhosVideoCache 处理,获取代理URL,并将其设置给播放器:
let originUrl = 'https://example.com/video.mp4'; // 原始音视频URL
let tempUrl = await GlobalProxyServer.getInstance().getServer().getProxyUrl(originUrl);
let proxyUrl: string | undefined = tempUrl ? tempUrl : originUrl;// 设置给播放器
this.avPlayer!.url = proxyUrl;
3. 进阶功能
设置缓存文件夹位置
可以指定缓存文件存放的目录,默认为应用沙箱的 cache
目录:
let server: HttpProxyCacheServer = new HttpProxyCacheServerBuilder(getContext()).cacheDirectory(getContext().cacheDir) // 设置缓存文件夹位置.build();
设置缓存清理策略
-
let server: HttpProxyCacheServer = new HttpProxyCacheServerBuilder(getContext()).maxCacheSize(1024 * 1024 * 1024) // 设置最大缓存容量为1G.build();
-
let server: HttpProxyCacheServer = new HttpProxyCacheServerBuilder(getContext()).maxCacheFilesCount(10) // 设置最大缓存文件个数为10个.build();
添加请求头
通过自定义请求头注入器,为音视频请求添加额外的头信息:
class MyHeaderInject implements HeaderInjector {addHeaders(url: string): HashMap<string, string> {let header: HashMap<string, string> = new HashMap<string, string>();header.set('allowCrossProtocolRedirects', 'true');header.set('name', '张三');header.set('fakeToken', '123456789');return header;}
}let server: HttpProxyCacheServer = new HttpProxyCacheServerBuilder(getContext()).setHeaderInjector(new MyHeaderInject()).build();
自定义缓存文件命名规则
通过实现 FileNameGenerator
接口,自定义缓存文件的命名规则:
class MyFileNameGenerator implements FileNameGenerator {generate(url: string): string {let start: number = url.lastIndexOf('/');let end: number = url.lastIndexOf('.');let newName: string = url.substring(start, end);return newName;}
}let server: HttpProxyCacheServer = new HttpProxyCacheServerBuilder(getContext()).setFileNameGenerator(new MyFileNameGenerator()).build();
注册缓存进度监听器
class MyCacheListener implements CacheListener {onCacheAvailable(cacheFilePath: string, url: string, percentsAvailable: number) {// 在这里处理缓存进度更新}
}let listener: MyCacheListener = new MyCacheListener();
server.registerCacheListener(listener); // 注册监听器
server.unregisterCacheListener(listener); // 取消注册监听器
自定义缓存文件清理规则
通过实现 DiskUsage
接口,自定义缓存文件的清理逻辑:
class MyDiskUsage implements DiskUsage {touch(filePath: string) {// 在这里实现自定义的缓存文件清理逻辑}
}let server: HttpProxyCacheServer = new HttpProxyCacheServerBuilder(getContext()).setDiskUsage(new MyDiskUsage()).build();
4. 接口说明
以下是 OhosVideoCache 提供的主要接口及其说明:
接口名 | 参数 | 返回值 | 说明 |
---|---|---|---|
getProxyUrl | url: string, allowCachedFileUri: boolean = true | Promise<string> | 将原始音视频URL处理后返回代理URL,用于播放器请求。 |
registerCacheListener | cacheListener: CacheListener, url: string | null = null | void | 注册缓存进度监听器。 |
unregisterCacheListener | cacheListener: CacheListener, url: string | void | 取消注册缓存进度监听器。 |
shutdown | 无 | void | 关闭代理服务器。 |
cacheDirectory | file: string | HttpProxyCacheServerBuilder | 设置缓存文件存放的目录。 |
setFileNameGenerator | fileNameGenerator: FileNameGenerator | HttpProxyCacheServerBuilder | 设置自定义缓存文件命名规则。 |
maxCacheSize | maxSize: number | HttpProxyCacheServerBuilder | 设置最大缓存容量清理策略的最大缓存容量。 |
maxCacheFilesCount | count: number | HttpProxyCacheServerBuilder | 设置最大文件个数清理策略的最大文件个数。 |
setDiskUsage | diskUsage: DiskUsage | HttpProxyCacheServerBuilder | 设置自定义缓存文件清理规则。 |
setHeaderInjector | headerInjector: HeaderInjector | HttpProxyCacheServerBuilder | 设置自定义请求头注入器。 |
build | 无 | HttpProxyCacheServer | 构造代理服务器实例。 |
6. 适用场景
-
优化用户体验:通过断点续传和自动清理缓存功能,提升应用的性能和用户体验。
总结
OhosVideoCache 是一个功能强大且高度可定制的音视频缓存库,能够帮助OpenHarmony开发者轻松实现音视频的边播放边缓存功能。
它支持离线播放、断点续传、自动清理缓存等多种实用功能,同时提供了丰富的自定义选项,满足不同开发场景的需求。
开发者可以通过简单的安装和配置,快速集成该库到自己的项目中,提升应用的多媒体处理能力。