1 简介
在当下的视频点播应用场景下,端侧对视频缓存的需求可谓刚需,一方面可以为公司节省流量成本,一方面也可以提升用户的播放体验,有一石二鸟之效。
近期,本人用C写了一个缓存库,支持iOS/Android/harmony系统平台,并在以上3个平台充分自测过,MIT license,开箱即用。
2 原理
本缓存库,仅考虑支持标准HTTP协议,视频封装格式支持常见的MP4和HLS,并且很容易增加对DASH格式的支持。并且作为一个单独的库来设计,不耦合到播放器中,最终提供几个api即可。
因此,考虑到跨平台特性,本缓存库使用libevent来设计一个本地的http代理,作为播放器和点播服务器之间的桥梁,大致流程如下:
- 设置配置给缓存库,而后启动缓存代理;
- 将原URL传入缓存库,拿到本地代理URL,并将本地代理URL传入播放器,准备起播;
- 播放器据此代理URL,向缓存代理发起HTTP下载数据请求;
- 代理若有此数据,则从本地磁盘读取并发给播放器,若无则向点播服务器发起HTTP下载请求,一边写本地磁盘文件,一边透传给播放器;
3 依赖库
本缓存库仅支依赖2个第三方库:libevent和openssl。版本呢如下:
Library | Version |
libevent | 2.1.18 |
openssl | 1.1.1 |
4 特性
以下是C缓存库当前所支持的特性:
- Cross-Platform Support: Supports video caching on Android, iOS, and HarmonyOS.
- Video Format Support: Supports caching of MP4 and HLS video formats.
- HTTP Caching Proxy: A high-performance HTTP caching proxy built with
libevent
.- HTTP 302 Redirection Support: Handles HTTP 302 redirects to ensure proper video resource access.
- Domain IP Pool Support: Configurable IP pools for domains, offering flexible resource access.
- Cache Management: Supports customizable cache eviction mechanisms.
- LRU Eviction Strategy: Implements an LRU (Least Recently Used) cache eviction strategy to ensure cache efficiency.
5 github地址
C缓存库Github地址
欢迎使用,欢迎就使用问题交流。