嵌入式WebRTC压缩至670K,目标将so动态库压缩至500K,.a静态库还可以更小
最近把EasyRTC的效果发布出去给各大IPC厂商体验了一下,直接就用EasyRTC与各个厂商的负责人进行的通话,在通话中,用户就反馈效果确实不错!
这两天有用户要在海思hi3516cv610上使用EasyRTC,工具链是:gcc-20240318-arm-v01c02-linux-musleabi,我们编译了一下,编译出来的版本大小在670K左右:

在我们还没对编译进行压缩优化的情况下,嵌入式的静态库基本控制在600K+的水平:

专为此事,我们近期做了一些讨论,通过修改编译参数,例如使用-Os(优化体积)代替-O2或 -O3(速度优先可能导致代码膨胀)、使用启用 -flto允许跨模块优化,消除冗余代码等等方式,缩小SDK的大小!
简单进行了一些尝试之后,有很大可能,我们能够将EasyRTC的SDK空间占用缩小到500K上下,这就给集成商、硬件厂商极大的操作空间,EasyRTC目前已经发布在Github:https://github.com/EasyDarwin/EasyRTC,大家可以体验一下水准!
相关文章:
嵌入式WebRTC压缩至670K,目标将so动态库压缩至500K,.a静态库还可以更小
最近把EasyRTC的效果发布出去给各大IPC厂商体验了一下,直接就用EasyRTC与各个厂商的负责人进行的通话,在通话中,用户就反馈效果确实不错! 这两天有用户要在海思hi3516cv610上使用EasyRTC,工具链是:gcc-2024…...
Rhel Centos环境开关机自动脚本
Rhel Centos环境开关机自动脚本 1. 业务需求2. 解决方法2.1 rc.local2.2 rc.d2.3 systemd2.4 systemd附着的方法2.5 tuned 3. 测试 1. 业务需求 一台较老的服务器上面业务比较简单,提供一个简单的网站,但已经没有业务的运维人员. 想达到的效果: 由于是非标准的apache或者nginx…...
phpipam1.7安装部署
0软件说明 phpipam是一个开源Web IP地址管理应用程序(IPAM) phpipam官网:https://www.phpipam.net/ 1安装环境 操作系统:Rocky Linux9.5x86_64 phpipam版本:1.7 php版本:8.0.30 数据库版本:…...
深入理解org.springframework.web.context.request.RequestContextHolder
在Spring Web应用中,RequestContextHolder是一个非常有用的工具类,用于在任何地方访问当前请求的上下文信息。它解决了非Controller层或非过滤器层需要访问请求上下文的问题,如在Service层或DAO层。以下是对 RequestContextHolder的详细解析。…...
Django中select_related 的作用
Django中这句代码Dynamic.objects.select_related(song)是什么意思? 在 Django 中,这句代码: Dynamic.objects.select_related(song) 的作用是 在查询 Dynamic 模型的同时,预加载 song 关联的外键对象,从而减少数据…...
正泰中间电磁继电器【8脚10A】DC24V 待机功率
需求:继电器能耗测试。 1.连接24V2A的电源, 2. 稳定功率为 1.4W 3. 正泰中间电磁继电器【8脚10A】直流DC24V 注:联通时电磁继电器会轻微发热 4.电磁继电器的工作原理基于电流的磁效应 电磁激励:电磁继电器主要由线圈、铁芯、衔…...
C++ 中的 Const 关键字(1)
C 中的 Const 关键字 最后更新: 2024 年 8 月 6 日 本文讨论了C中const 关键字的各种功能。只要将const 关键字附加到任何方法 ()、变量、指针变量以及类的对象上,它就会阻止特定对象/方法 ()/变量修改其数据项的值。 常量变量: 常量变量的声…...
Mac上搭建宝塔环境并部署PHP项目
安装Docker Desktop》搭建Centos版本的宝塔环境》部署PHP项目 1. 下载Docker for mac 软件:https://www.docker.com/ 或使用终端命令:brew install --cask --appdir/Applications docker 2. 使用命令安装宝塔环境的centos7系统: docker pul…...
哈希表-两个数的交集
代码随想录-刷题笔记 349. 两个数组的交集 - 力扣(LeetCode) 内容: 集合的使用 , 重复的数剔除掉,剩下的即为交集,最后加入数组即可。 class Solution {public int[] intersection(int[] nums1, int[] nums2) {Set<Integer…...
win11 终端乱码导致IDE 各种输出也乱码
因为 win11 终端乱码导致IDE 各种输出也乱码导致作者对此十分头大。所以研究了各种方法。 单独设置终端编码对 HKEY_CURRENT_USER\Console 注册表进行修改对 HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processo 注册表进行修改使用命令[Console]::OutputEncoding [Syst…...
LabVIEW用户界面(UI)和用户体验(UX)设计
作为一名 LabVIEW 开发者,满足功能需求、保障使用便捷与灵活只是基础要求。在如今这个用户体验至上的时代,为 LabVIEW 应用程序设计直观且具有美学感的界面,同样是不容忽视的关键任务。一个优秀的界面设计,不仅能提升用户对程序的…...
23、深度学习-自学之路-激活函数relu、tanh、sigmoid、softmax函数的正向传播和反向梯度。
在使用这个非线性激活函数的时候,其实我们重点还是学习的是他们的正向怎么传播,以及反向怎么传递的。 如下图所示: 第一:relu函数的正向传播函数是:当输入值(隐藏层)值大于了,就输出…...
【matlab优化算法-16期】基于遗传算法的电热气及储能综合优化项目实践
电热气及储能综合优化项目实践 一、前言 随着能源转型和可持续发展的推进,综合能源系统的优化逐渐成为研究热点。本文介绍了一个电热气及储能综合优化项目,旨在通过优化算法实现多能源系统的协同运行,提高能源利用效率,降低运行…...
单例模式和单例Bean
单例模式 定义:单例模式是一种软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。 实现方式 饿汉式:在类加载时就立即创建单例实例,线程安全,调用效率高,但可能会造成…...
springboot239-springboot在线医疗问答平台(源码+论文+PPT+部署讲解等)
💕💕作者: 爱笑学姐 💕💕个人简介:十年Java,Python美女程序员一枚,精通计算机专业前后端各类框架。 💕💕各类成品Java毕设 。javaweb,ssm…...
DeepSeek系统崩溃 | 极验服务如何为爆火应用筑起安全防线?
引言 极验服务让您的产品站在风口之时,不必担心爆红是灾难的开始,而是期待其成为驱动持续创新的全新起点。 01现象级狂欢背后,你的业务安全防线抗得住吗? “近期DeepSeek线上服务受到大规模恶意攻击,注册可能繁忙&am…...
vcredist_x64.exe 是 Microsoft Visual C++ Redistributable 的 64 位版本
vcredist_x64.exe 是 Microsoft Visual C++ Redistributable 的 64 位版本,它提供了运行基于 Visual C++ 编写的应用程序所需的库文件。许多 Windows 应用程序都依赖这些库来正常运行,特别是使用 Visual Studio 编译的程序。 用途和重要性: 运行时库:vcredist_x64.exe 安装…...
Spring:Spring实现AOP的通俗理解(有源码跟踪)
目录标题 AOP定义SpringAOP和AspectJ联系Spring如何实现AOPAOP的代理对象AOP的代理对象生成过程 AOP定义 AOP (Aspect Orient Programming):直译过来就是 面向切面编程。AOP 是一种编程思想用途:Transactions (事务调…...
kotlin-kapt
kotlin-kapt kotlin-kapt 是 Kotlin 的一个插件,专门用于处理注解处理器(Annotation Processor)。以下是对该插件的详细解释和指南: kotlin-kapt 是什么? kotlin-kapt 是 Kotlin 官方提供的一个插件,用于在…...
Linux中getifaddrs函数
文章目录 **函数原型****参数****返回值****释放资源****`struct ifaddrs` 结构****示例代码****输出示例****相关函数****总结**getifaddrs 是 Linux(以及其他 Unix-like 系统)中用于获取本机网络接口信息的系统调用。它提供了一种简单的方法来获取所有网络接口的地址信息,…...
java后端开发day15--字符串(一)
(以下内容全部来自上述课程) 1.API (Application Programming Interface 应用程序编程接口) 1.简单理解 简单理解:API就是别人已经写好的东西,我们不需要自己编写,直接使用即可。 Java API&…...
vue项目 Axios创建拦截器
Axios 1. Axios 和 Ajax 简介2. Axios 和 Ajax 的区别3. 从 按钮 到 Axios请求后端接口的 大致顺序 1. Axios 和 Ajax 简介 Ajax(Asynchronous JavaScript and XML) 不是一种技术,而是一个编程技术概念,核心是通过 XMLHttpReques…...
NLP面试之-激活函数
一、动机篇 1.1 为什么要有激活函数? 数据角度:由于数据是线性不可分的,如果采用线性化,那么需要复杂的线性组合去逼近问题,因此需要非线性变换对数据分布进行重新映射;线性模型的表达力问题:由于线性模型…...
深入探究 Go 语言中的 Fx 框架:依赖注入的强大工具
在软件开发中,依赖注入(Dependency Injection,简称 DI)是一种重要的设计模式,它可以帮助我们降低代码的耦合度,提高代码的可测试性和可维护性。Go 语言作为一门高效、简洁的编程语言,拥有许多优…...
Notepad++ 中删除所有以 “pdf“ 结尾的行
Notepad 中删除所有以 “pdf” 结尾的行 操作步骤 1.打开文件: 在 Notepad 中打开你需要处理的文本文件。 2.打开查找和替换对话框: 按快捷键 Ctrl F,打开“查找和替换”对话框。 3.启用正则表达式模式: 在对话框的底部…...
b站——《【强化学习】一小时完全入门》学习笔记及代码(1-3 多臂老虎机)
问题陈述 我们有两个多臂老虎机(Multi-Armed Bandit),分别称为左边的老虎机和右边的老虎机。每个老虎机的奖励服从不同的正态分布: 左边的老虎机:奖励服从均值为 500,标准差为 50 的正态分布,即…...
数据结构与算法之排序算法-插入排序
排序算法是数据结构与算法中最基本的算法之一,其作用就是将一些可以比较大小的数据进行有规律的排序,而想要实现这种排序就拥有很多种方法~ 那么我将通过几篇文章,将排序算法中各种算法细化的,详尽的为大家呈现出来: &…...
基于YoloV11和驱动级鼠标模拟实现Ai自瞄
本文将围绕基于 YoloV11 和驱动级鼠标实现 FPS 游戏 AI 自瞄展开阐述。 需要着重强调的是,本文内容仅用于学术研究和技术学习目的。严禁任何个人或组织将文中所提及的技术、方法及思路应用于违法行为,包括但不限于在各类游戏中实施作弊等违规操作。若因违…...
【核心特性】从鸭子类型到Go的io.Writer设计哲学
在编程语言的设计中,鸭子类型和接口设计是两种非常重要的理念。它们都强调了对象的行为和能力,而非其具体的类型或继承关系。Go 语言的io.Writer 接口是这种设计理念的典型代表,它通过简洁的接口定义,实现了强大的功能和灵活性。 …...
InfiniBand与IP over InfiniBand(IPOIB):实现高性能网络通信的底层机制
在现代高性能计算(HPC)和数据中心环境中,网络通信的效率和性能至关重要。InfiniBand(IB)作为一种高性能的串行计算机总线架构,以其低延迟、高带宽和高可靠性而广泛应用于集群计算和数据中心。IP over InfiniBand(IPOIB)则是在InfiniBand网络上实现IP协议的一种方式,它…...
