开源一个C缓存库

1 简介

    在当下的视频点播应用场景下,端侧对视频缓存的需求可谓刚需,一方面可以为公司节省流量成本,一方面也可以提升用户的播放体验,有一石二鸟之效。

    近期,本人用C写了一个缓存库,支持iOS/Android/harmony系统平台,并在以上3个平台充分自测过,MIT license,开箱即用。

2 原理

    本缓存库,仅考虑支持标准HTTP协议,视频封装格式支持常见的MP4HLS,并且很容易增加对DASH格式的支持。并且作为一个单独的库来设计,不耦合到播放器中,最终提供几个api即可。

    因此,考虑到跨平台特性,本缓存库使用libevent来设计一个本地的http代理,作为播放器和点播服务器之间的桥梁,大致流程如下:

  • 设置配置给缓存库,而后启动缓存代理;
  • 将原URL传入缓存库,拿到本地代理URL,并将本地代理URL传入播放器,准备起播;
  • 播放器据此代理URL,向缓存代理发起HTTP下载数据请求;
  • 代理若有此数据,则从本地磁盘读取并发给播放器,若无则向点播服务器发起HTTP下载请求,一边写本地磁盘文件,一边透传给播放器;

3 依赖库

    本缓存库仅支依赖2个第三方库:libevent和openssl。版本呢如下:

LibraryVersion
libevent      2.1.18
openssl1.1.1

4 特性

    以下是C缓存库当前所支持的特性:

  1. Cross-Platform Support: Supports video caching on Android, iOS, and HarmonyOS.
  2. Video Format Support: Supports caching of MP4 and HLS video formats.
  3. HTTP Caching Proxy: A high-performance HTTP caching proxy built with libevent.
  4. HTTP 302 Redirection Support: Handles HTTP 302 redirects to ensure proper video resource access.
  5. Domain IP Pool Support: Configurable IP pools for domains, offering flexible resource access.
  6. Cache Management: Supports customizable cache eviction mechanisms.
  7. LRU Eviction Strategy: Implements an LRU (Least Recently Used) cache eviction strategy to ensure cache efficiency.

5 github地址

C缓存库Github地址

    欢迎使用,欢迎就使用问题交流。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/56343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java项目之信息化在线教学平台的设计与实现(源码+文档)

项目简介 信息化在线教学平台的设计与实现实现了以下功能: 信息化在线教学平台的设计与实现的主要使用者管理员功能有个人中心,学生信息管理,教师信息管理,教学信息管理,学生成绩管理,留言板管理&#xf…

番外篇 | 史上最全的关于CV的一些经典注意力机制代码汇总

前言:Hello大家好,我是小哥谈。注意力是人类认知系统的核心部分,它允许我们在各种感官输入中筛选和专注于特定信息。这一能力帮助我们处理海量的信息,关注重要的事物,而不会被次要的事物淹没。受到人类认知系统的启发,计算机科学家开发了注意力机制,这种机制模仿人类的这…

vue开发环境、生产环境配置与nginx配置后端代理转发跨域

一、配置步骤 在Vue项目中,通常会在项目的环境配置文件中设置不同环境下的API接口地址。对于生产环境,你可以使用Nginx作为反向代理来处理后端地址的转发。 1.在Vue项目中的env文件夹下,找到env.production文件,并设置生产环境下的API接口地址: module.exports = {NODE…

《语音识别芯片选型全攻略》

《语音识别芯片选型全攻略》 一、语音识别芯片性能评估(一)主控芯片性能评估(二)接口需求分析(三)可靠性评估(四)生产工艺考量(五)湿敏等级判断 二、语音识别…

倍福TwinCAT程序中遇到的bug

文章目录 问题描述:TwinCAT嵌入式控制器CX5140在上电启动后,X001网口接网线通讯灯不亮,软件扫描不到硬件网口 解决方法:硬件断电重启后,X001网口恢复正常 问题描述:TwinCAT软件点击激活配置后,…

汽车免拆诊断案例 | 2022款大众捷达VS5车行驶中挡位偶尔会锁在D3挡

故障现象  一辆2022款大众捷达VS5汽车,搭载EA211发动机和手自一体变速器,累计行驶里程约为4.5万km。该车行驶中挡位偶尔会锁在D3挡,车速最高约50 km/h,且组合仪表上的发动机故障灯和EPC灯异常点亮。 故障诊断  用故障检测仪检…

【AI工具大集合】

在当今快速发展的人工智能领域,AI工具的种类繁多,它们在不同的行业和领域中发挥着重要作用。以下是一些常用的AI工具! 一、AI实用工具 1. AI聊天机器人 Youchat:类似于搜索引擎的AI聊天机器人,能够实时从互联网获取信…

SQL语句查询

SQL语句查询 查询产生一个虚拟表 看到的是表形式显示的结果&#xff0c;但结果并不真正存储 每次执行查询只是从数据表中提取数据&#xff0c;并按照表的形式显示出来 查询语法 SELECT <列名> FROM <表名> [WHERE <查询条件表达式>] SELECT …

【python书籍-附电子版】Python入门零基础必看书籍,python编程入门教程指南,从入门到精通,这几本书太牛了!!

今天为大家推荐的“Python 编程三剑客”是新手小白学习编程的不二之选&#xff01;这三本书分别从不同的角度&#xff0c;对 Python 编程进行了详细的解析。 &#xff08;领取方式见文末&#xff09; 一《Python编程&#xff1a;从入门到实践》 第一本为你打下坚实的基础&am…

MongoDB聚合管道(Aggregation Pipeline)

聚合管道&#xff08;Aggregation Pipeline&#xff09;是MongoDB中用于对数据进行处理和分析的一种强大机制。它由一系列的阶段&#xff08;Stage&#xff09;组成&#xff0c;每个阶段对输入的数据进行一种特定的操作&#xff0c;然后将结果传递给下一个阶段&#xff0c;就像…

【VAE】 VQ-VAE: 离散潜在空间的艺术

大家好&#xff01;今天我们来聊聊一个有趣的深度学习模型&#xff1a;Vector Quantized Variational AutoEncoder&#xff08;VQ-VAE&#xff09;。这个模型看似复杂&#xff0c;实则蕴含着深刻的智慧。让我们一起来探索这个模型的奥秘吧&#xff01; 什么是 VQ-VAE&#xff…

详解安卓和IOS的唤起APP的机制,包括第三方平台的唤起方法比如微信

网页唤起APP是一种常见的跨平台交互方式&#xff0c;它允许用户从网页直接跳转到移动应用程序。 这种技术广泛应用于各种场景&#xff0c;比如让用户在浏览器中点击链接后直接打开某个应用&#xff0c;或者从网页引导用户下载安装应用。实现这一功能主要依赖于URL Scheme、Univ…

基于Java+SpringBoot+Vue的网上购物商城系统研发

基于JavaSpringBootVue的网上购物商城系统研发 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f345…

门店收银系统源码-php+flutter+uniapp

1. 系统开发语言 核心开发语言: PHP、HTML5、Dart 后台接口: PHP7.3 后台管理网站: HTML5vue2.0element-uicssjs 线下收银台&#xff08;安卓/PC收银、安卓自助收银&#xff09;: Dart3 框架&#xff1a;Flutter 3.19.6 移动店务助手: uniapp 线上商城: uniapp 2.线下收…

【Git】常用Git命令

1. Git 仓库的基本操作 git init&#xff1a;在当前目录下初始化一个新的 Git 仓库。git clone <repository>&#xff1a;从远程仓库克隆一个 Git 仓库到本地。git status&#xff1a;查看工作目录和暂存区的状态&#xff0c;显示哪些文件被修改或未跟踪。git add <f…

【虚拟化】内核级虚拟化技术KVM介绍,全/半虚拟化的区别,使用libvirt搭建虚拟化平台(go/java/c++)

【虚拟化】内核级虚拟化技术KVM介绍&#xff0c;全/半虚拟化的区别&#xff0c;使用libvirt搭建虚拟化平台&#xff08;go/java/c&#xff09; 文章目录 1、虚拟化技术分类与架构&#xff08;KVM&#xff0c;Xen&#xff09;&#xff0c;全/半虚拟化的区别2、libvirt介绍3、使用…

leetcode栈与队列(一)-有效的括号

题目 . - 力扣&#xff08;LeetCode&#xff09; 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的…

月度总结

破晓AI工作总结 2024-10-15 月度总结 1、每个人总结自己过去一段时间遇到的问题是如何思考并解决的 2、过去一段使用AI帮助自己更好的生活或者工作或任何点 3、总结可以是文档&#xff0c;也可以是脑图&#xff0c;也可以是PPT&#xff0c;格式不拘泥&#xff0c;但是两个总结…

同行评审流程详解

同行评审流程中&#xff0c;稿件被拒很正常&#xff0c;可能是由于稿件结构有问题&#xff0c;论据不足&#xff0c;表达不准确等诸多因素&#xff0c;接下来带你走一遍同行评审流程&#xff0c;看论文投稿过程中有哪些拦路虎&#xff0c;掌握拒稿因素&#xff0c;论文投稿才能…

C++类和对象——第四关通关

阅读本文章前建议先阅读博主C专栏的前几篇文文章&#xff0c;以便更好的理解本文章。 目录 &#xff08;1&#xff09;构造函数续 初始化列表&#xff1a; &#xff08;2&#xff09;类类型转换&#xff1a; &#xff08;3&#xff09;staic成员 &#xff08;4&#xff0…