当前位置: 首页 > news >正文

zlm启用webrtc交叉编译指南

zlm启用webrtc交叉编译指南

一、交叉编译openssl

下载openssl-1.1.1k版本,其他版本可能会有问题

$ wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz

$ tar -xvzf openssl-1.1.1k.tar.gz

$ cd openssl-1.1.1k

$ ./config no-asm shared --openssldir=/usr/local/openssl --prefix=/usr/local/openssl --cross-compile-prefix=arm-linux-gnueabihf-

$ vi Makefile //收索并删除掉文件中的 -m64 并保存

$ make && make install

$ echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

$ ldconfig

$ ln -s /usr/local/openssl/bin/openssl  /usr/local/bin/openssl # 替换系统openssl,非必须

  • 交叉编译libsrtp

$ tar -xvzf libsrtp-2.3.0.tar.gz

$ cd libsrtp-2.3.0

$./configure --host=arm-linux-gnueabihf --prefix=/usr/libsrtp --enable-openssl crypto_LIBS="-L/usr/local/openssl/lib" crypto_CFLAGS="-I/usr/local/openssl/include"

$ make -j8 && make install

  • 交叉编译ZLM

$ git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit

$ cd ZLMediaKit

$ git submodule update --init #一定不要忘记这一行命令

$ vi CMakeList.txt

修改ZLM的CMakeList.txt

添加如下命令,注意:修改箭头处的编译工具路径和名称为本机路径和名称

SET(CMAKE_SYSTEM_NAME Linux)

SET(CMAKE_SYSTEM_PROCESSOR arm)

SET(TOOLCHAIN_DIR "/opt/atk-dlrv1126-toolchain/usr")

SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR})

SET(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-gcc)

SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-g++)

$ vi cmake/FindSRTP.cmake

修改FindSRTP.cmake文件注释掉 find_path 和 find_library,添加set内容,如图所示

注意:路径应修改为本机交叉编译完成后的libsrtp路径

set(SRTP_INCLUDE_DIRS "/home/ebaina/xxx/libsrtp-2.3.0/output/include")

set(SRTP_LIBRARIES "/home/ebaina/xxx/libsrtp-2.3.0/output/lib/libsrtp2.a")

$ mkdir build

$ cd build

$ cmake .. -DENABLE_WEBRTC=true  -DOPENSSL_ROOT_DIR=/usr/local/openssl  -DOPENSSL_LIBRARIES=/usr/local/openssl/lib #注意修改路径为本机编译路径

$ cmake --build . --target MediaServer

相关文章:

zlm启用webrtc交叉编译指南

zlm启用webrtc交叉编译指南 一、交叉编译openssl 下载openssl-1.1.1k版本,其他版本可能会有问题 $ wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz $ tar -xvzf openssl-1.1.1k.tar.gz $ cd openssl-1.1.1k $ ./config no-asm shared --openssld…...

树莓派超全系列教程文档--(23)内核参数

内核参数 内核命令行 (cmdline.txt)命令行选项标准条目设置KMS显示模式 其他条目 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 内核命令行 (cmdline.txt) Linux 内核在启动过程中接受一系列命令行参数。在 Raspberry Pi 上,该命令…...

机器学习 从入门到精通 day_05

1. 线性回归 前面介绍了很多分类算法,分类的目标变量是标称型数据,回归是对连续型的数据做出预测。 标称型数据(Nominal Data)是统计学和数据分析中的一种数据类型,它用于分类或标记不同的类别或组别,数据点之间并没有…...

读者、写者问题优化

#include <stdio.h> #include <time.h> #include <stdlib.h> #include <unistd.h> #include <pthread.h> #include <semaphore.h> #define NUM_READERS 5 #define NUM_WRITERS 5 // 定义信号量和全局变量 sem_t sdata, srcount; int rea…...

DeepSeek-V3与DeepSeek-R1架构原理及应用对比分析

DeepSeek-V3与DeepSeek-R1架构原理及应用对比分析 DeepSeek作为中国人工智能领域的重要参与者&#xff0c;推出了V3和R1两款大模型&#xff0c;它们在架构设计和应用场景上各有侧重。本文将深入分析这两款模型在架构原理上的核心差异&#xff0c;并探讨它们如何分别应对复杂推…...

OpenCV图像增强实战教程:从理论到代码实现

OpenCV图像增强实战教程&#xff1a;从理论到代码实现 &#x1f525;&#x1f680; &#x1f4da; 想要掌握图像增强的核心技术&#xff1f;本文手把手教你使用OpenCV实现多种图像增强技术&#xff0c;从基础的线性变换到高级的频域滤波&#xff0c;全方位提升你的图像处理能力…...

一文介绍关于多模态的基础知识 !!

文章目录 前言 一、机器学习 二、深度学习 三、应用领域 前言 多模态不再局限于单一类型的数据处理&#xff0c;它融合图像、文本和音频等多种信息源。其基础知识涵盖机器学习、深度学习及其在多模态领域的应用。机器学习部分包含分类、回归、聚类和降维等四类算法&#xff1b…...

mysql DQL

一.基本查询 1.查询多个字段 2.查看所有字段 3.设置别名 4.去除重复记录 二.条件查询 1.大于小于等于 2.查询 身份证为空的 没有所以没有记录 3.在15到20这个区间范围内 4.or/in 或者 4.like 匹配 &#xff08;_匹配单个字符 %匹配多个字符&#xff09; 查询员工信…...

Android Studio 项目文件夹结构详解

文章目录 一、项目视图概览1. Android 视图&#xff08;简化视图&#xff09;2. Project 视图&#xff08;完整物理结构&#xff09; 二、核心目录详解1. 项目根目录文件2. app 模块目录&#xff08;主模块&#xff09;2.1 manifests/2.2 java/2.3 res/ - 资源目录2.4 assets/2…...

Linux系统常见磁盘扩容操作(Common Disk Expansion Operations in Linux Systems)

Linux系统常见磁盘扩容操作 目录说明 一、准备工作&#xff1a;获取目标磁盘信息 &#xff08;1&#xff09;确认分区表格式和文件系统 二、扩容已有MBR分区 &#xff08;1&#xff09;分区后扩容 ext为例 xfs为例 三、扩容已有GPT分区 &#xff08;1&#xff09;分区…...

【UE5 C++】“ProceduralMeshComponent”的使用记录

效果 如下所示&#xff0c;通过“ProceduralMeshComponent”创建了一个自定义形状的Mesh&#xff0c;并且该Mesh包含碰撞信息&#xff0c;然后2s后更新Mesh形状。 步骤 1. 在“xxx.Build.cs”中引入“ProceduralMeshComponent”模块 2. 新建一个Actor类&#xff0c;这里命名为…...

源代码加密之零日攻击

# SDC沙盒&#xff1a;有效防御零日攻击的多层防护体系 在当今复杂多变的网络安全环境中&#xff0c;零日攻击已成为企业面临的重大威胁之一。零日攻击利用尚未被公众发现或尚未被软件供应商修复的漏洞进行攻击&#xff0c;具有极高的隐蔽性和破坏性。SDC沙盒作为一种先进的数…...

Vue2 集成VTK.js 并显示3D影像

Vue2 集成VTK.js 并显示3D影像&#xff08;核心代码) 作者:coder_fang vtk.js目前官网只有vue3的示例&#xff0c;对于已有vue2系统的集成&#xff0c;需要使用指定版本的vtk,itk等库并修改部分配置即可。 需要的主要库和版本: vue:2.3.4; vtk-v32.9.0.min.js,itk-wasm.min.…...

本地git操作

一、初始化与基础操作 1. 初始化仓库 git init # 当前目录新建仓库 git init <目录名> # 指定目录初始化 2. 查看状态 git status # 显示工作区和暂存区状态 git status -s # 简洁版状…...

AI的出现,是否能替代IT从业者?

*AI在IT领域中的应用已成趋势&#xff0c;IT 从业者们站在这风暴之眼&#xff0c;面临着一个尖锐问题&#xff1a;AI 是否会成为 “职业终结者”&#xff1f;有人担忧 AI 将取代 IT 行业的大部分工作&#xff0c;也有人坚信 IT 从业者的专业技能与创新思维无可替代。那么&#…...

3、组件:魔法傀儡的诞生——React 19 组件化开发全解析

一、开篇&#xff1a;魔法傀儡的觉醒 "每个React组件都像一具魔法傀儡&#xff0c;"邓布利多校长挥动魔杖&#xff0c;空中浮现出闪烁的代码字符&#xff0c;"它们能自主思考、协同工作&#xff0c;甚至能跨越时空&#xff08;服务器与客户端&#xff09;执行任…...

Vue 解决 Error: please transfer a valid prop path to form item!

在 Vue.js 中使用表单验证库&#xff08;如 VeeValidate 或 Element UI 的表单组件时&#xff09;&#xff0c;遇到错误信息 "please transfer a valid prop path to form item!" 通常指的是在表单项的属性绑定中&#xff0c;路径&#xff08;prop path&#xff09;不…...

day29 第八章 贪心算法 part03

134. 加油站 “可以换一个思路&#xff0c;首先如果总油量减去总消耗大于等于零那么一定可以跑完一圈&#xff0c;说明 各个站点的加油站 剩油量rest[i]相加一定是大于等于零的。 每个加油站的剩余量rest[i]为gas[i] - cost[i]。 i从0开始累加rest[i]&#xff0c;和记为curSum…...

贪心算法(19)(java)重构字符串

题目&#xff1a;给定一个字符串 s &#xff0c;检查是否能重新排布其中的字母&#xff0c;使得两相邻的字符不同。 返回 s 的任意可能的重新排列。若不可行&#xff0c;返回空字符串 "" 。 示例 1: 输入: s "aab" 输出: "aba"示例 2: 输入:…...

Linux下C语言与OpenGL游戏开发指南

1. 为什么选择 Linux C OpenGL&#xff1f; 跨平台兼容性&#xff1a;OpenGL 是跨平台的图形 API&#xff0c;编写的代码稍作修改即可在 Windows/macOS 上运行。 性能控制&#xff1a;C 语言提供底层内存管理和硬件访问能力&#xff0c;适合高性能游戏开发。 开源生态&…...

深入 Java 正则表达式源码:透视 Matcher.group(int) 的分组提取机制

在 Java 中&#xff0c;正则表达式无疑是文本处理的重要工具。而 Matcher.group(int group) 是其中非常关键的一个方法&#xff0c;它用于提取正则中的分组内容。今天我们不仅通过一个例子来看它的使用方法&#xff0c;还会结合底层源码&#xff0c;深入理解它背后的机制。 实…...

解决 Spring Boot 启动报错:数据源配置引发的启动失败

启动项目时&#xff0c;控制台输出了如下错误信息&#xff1a; Error starting ApplicationContext. To display the condition evaluation report re-run your application with debug enabled. 2025-04-14 21:13:33.005 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporte…...

【深度学习的骨架与脉搏】语义分割的卷积神经网络·U-Net

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;《深度学习理论直觉三十讲》_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 …...

ELK+Filebeat 深度部署指南与实战测试全解析

一、介绍 ELK&#xff1a; ELasticsearch ,Logstash,Kibana三大开源框架首字母简写,市面上也被称为Elastic Stack。 Elasticsearch 是一个基于 Lucene 的分布式搜索平台框架&#xff0c;通过 Restful 方式进行交互&#xff0c;具备近实时搜索能力。像百度、Google 这类大数据全…...

Java设计模式之中介者模式:从入门到架构级实践

一、什么是中介者模式&#xff1f; 中介者模式&#xff08;Mediator Pattern&#xff09;是一种行为型设计模式&#xff0c;其核心思想是通过引入一个中介对象来封装多个对象之间的交互关系。这种模式将原本复杂的网状通信结构转换为星型结构&#xff0c;类似于现实生活中的机…...

L2TP通道基础实验

目录 实验拓扑&#xff1a; 一、需求配置LAC设置&#xff1a; 界面设置&#xff1a; ​编辑LNS设置&#xff1a; 建立静态路由&#xff1a;​编辑 策略配置&#xff1a; 二、测试 通讯测试&#xff1a; 实验拓扑&#xff1a; 一、需求配置 LAC设置&#xff1a; [LAC]l2…...

关于字节跳动旗下的豆包(DouBao)软件的详解、核心功能以及与同类产品的对比分析

以下是关于豆包&#xff08;DouBao&#xff09;软件的详解、核心功能以及与同类产品的对比分析&#xff1a; 一、豆包&#xff08;DouBao&#xff09;详解 豆包是字节跳动推出的一款多功能人工智能助手&#xff0c;主打“智能助手场景化工具”结合&#xff0c;覆盖日常生活、…...

如何在本地修改 Git 项目的远程仓库地址

✅ 场景说明 你当前的 Git 项目地址是&#xff1a; http://192.168.0.16/xxx.git你希望把它改成&#xff1a; http://192.168.0.22:8099/xxx.git&#x1f9e9; 操作步骤 步骤 ①&#xff1a;进入项目所在目录 你已经在正确路径下了&#xff1a; cd C:\Develop\xxx确认这个…...

Gitea 1.23.7 速配

复用容器内的postgresql CREATE USER gitea WITH PASSWORD gitea; CREATE DATABASE gitea; GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea; docker-compose.yml 内容 gitea:image: gitea/gitea:latestcontainer_name: giteaenvironment:- GITEA__server__HTTP_ADDR0.0.0.…...

JavaScript — 函数定义

介绍 JavaScript函数是执行特定任务的代码块&#xff0c;可通过多种方式定义。传统函数声明使用function关键字&#xff0c;后接函数名和参数列表&#xff0c;这种声明会被提升至作用域顶部。函数表达式则将匿名或具名函数赋值给变量&#xff0c;遵循变量作用域规则&#xff0…...

Allure安装与使用【macOS】

安装&#xff1a; brew install allure 安装插件&#xff1a; pip install allure-pytest2.8.16 生成一个html格式的报告&#xff0c;步骤&#xff1a; 执行生成json&#xff0c;制定结果保存目录 pytest --alluredirreport test_demo.py 查看测试保报告方式 将json转成h…...

​‌FireCrawl‌爬虫工具​, Craw4ai

‌FireCrawl‌是一款开源的AI爬虫工具&#xff0c;专门用于Web数据提取&#xff0c;并将其转换为Markdown格式或其他结构化数据。FireCrawl特别适合处理使用JavaScript动态生成的网站&#xff0c;能够自动抓取网站及其所有可访问的子页面内容&#xff0c;并将其转换为适合大语言…...

【Python爬虫】详细入门指南

目录 一、简单介绍 二、详细工作流程以及组成部分 三、 简单案例实现 一、简单介绍 在当今数字化信息飞速发展的时代&#xff0c;数据的获取与分析变得愈发重要&#xff0c;而网络爬虫技术作为一种能够从互联网海量信息中自动抓取所需数据的有效手段&#xff0c;正逐渐走入…...

Cesium.Cesium3DTileset设置贴地,tileset.readyPromise.then报错

tileset.readyPromise.then(function(tileset) { }); 用的readyPromise函数&#xff0c;却报错了&#xff0c;通过参考别人的博客内容发现最终修改的是 modelMatrix这个参数的内容&#xff0c;所以直接舍弃使用readyPromise函数&#xff0c;在代码中等 viewer.scene.primitiv…...

卫星电话扬帆智慧海洋,构筑蓝海通信新生态

海洋&#xff0c;承载着全球90%的贸易运输量&#xff0c;更是我国“向海图强”战略的核心战场。但是&#xff0c;全球95%的海洋区域仍处于蜂窝网络覆盖的“真空地带”&#xff0c;近海信号不稳、远洋通信中断的难题长期制约着海洋经济的纵深发展。技术革新是推动发展的强大引擎…...

大模型不是在推理,只是在复述??

目的 看见一篇论文Recitation over Reasoning: How Cutting-Edge Language Models Can Fail on Elementary School-Level Reasoning Problems?&#xff0c;论文中建立了一个推理题库&#xff0c;通过将推理问题进行改写&#xff08;通过只改写几个字&#xff0c;颠覆整个问题…...

安全编码课程 实验7 并发

实验项目&#xff1a;C 多线程中的数据竞争与同步机制 实验要求&#xff1a; 1. 编写基础代码&#xff1a;模拟账户余额取款 创建一个全局共享变量 int balance 100&#xff0c;表示初始余额&#xff1b; 创建两个线程 Thread A 和 Thread B&#xff0c;尝试各自取出 100 元&a…...

【vue】2.16简单案例

一、高亮显示点击文字 使用vue绑定页面 设置默认样式 使用for循环数组数据展示&#xff0c;并取得索引 创建点击事件并传承&#xff0c;创建num变量 方法中num传进来的参数&#xff0c; 在内容中使用&#xff1a;class和三元运算符&#xff0c;当numkey时是true显示&#xff0c…...

多线程进阶知识篇(一)

文章目录 一、开启线程1. start()2. run() 二、单核/多核CPU1. 单核CPU2. 多核CPU3.烧水问题 三、操作线程的命令四、并发的本质五、线程上下文切换1. 定义2. 原因 一、开启线程 1. start() 调用 start() 方法会启动一个新的线程&#xff0c;每次调用 start()&#xff0c;线程…...

【benepar】benepar安装会自动更新pytorch

直接pip install benepar&#xff0c;安装benepar0.2.0时会自动更新torch的版本 解决方法&#xff1a;去https://pypi.org/project/benepar/0.1.3/找历史版本 我的适配版本&#xff1a;python3.9&#xff0c;torch1.11.0&#xff08;cuda11.3&#xff09;&#xff0c;对应的ben…...

智能云图库-1-项目初始化

项目中的异常处理 自定义异常 在exception包下新建错误码枚举类&#xff1a; Getter public enum ErrorCode {SUCCESS(0, "ok"),PARAMS_ERROR(40000, "请求参数错误"),NOT_LOGIN_ERROR(40100, "未登录"),NO_AUTH_ERROR(40101, "无权限&q…...

每日算法-250414

每日算法学习记录 - 240414 记录今天学习和解决的两道 LeetCode 算法题&#xff0c;主要涉及二分查找的应用。 162. 寻找峰值 题目描述 思路分析 核心思想&#xff1a;二分查找 题目要求找到数组中的任意一个峰值。峰值定义为比其相邻元素都大的元素。题目还隐含了一个条件…...

鸿蒙NEXT开发格式化工具类(ArkTs)

import { i18n } from kit.LocalizationKit;/*** 格式化工具类* 提供电话号码格式化、归属地查询、字符转换等功能。* author: 鸿蒙布道师* since: 2025/04/14*/ export class FormatUtil {/*** 判断传入的电话号码格式是否正确。* param phone - 待验证的电话号码* param coun…...

HarmonyOS 第2章 Ability的开发,鸿蒙HarmonyOS 应用开发入门

第2章 Ability的开发 本章内容 本章介绍HarmonyOS的核心组件Ability的开发。 2.1 Ability概述 2.2 FA模型介绍 2.3 Stage模型介绍 2.4 Ability内页面的跳转和数据传递 2.5 Want概述 2.6 实战:显式Want启动Ability 2.7 实战:隐式Want打开应用管理 2.8 小结 2.9 习题 2.1 Abili…...

CS5346 - Interactivity in Visualization 可视化中的交互

文章目录 Visualization representation interactionInteraction &#xff08;交互&#xff09;Benefits (好处)Typical Interaction Techniques&#xff08;交互技术&#xff09;SelectFilteringAbstract / Elaborate几何放缩&#xff08;Geometric zoom)语义放缩&#xff0…...

AI与我共创WEB界面

记录一次压测后的自我技术提升 这事儿得从机房停电说起。那天吭哧吭哧做完并发压测,正准备截Zabbix监控图写报告,突然发现监控曲线神秘失踪——系统组小哥挠着头说:“上次停电后,zabbix服务好像就没起来过…” 我盯着空荡荡的图表界面,大脑的CPU温度可能比服务器还高。 其…...

python蓝桥杯备赛常用算法模板

一、python基础 &#xff08;一&#xff09;集合操作 s1 {1,2,3} s2{3,4,5} print(s1|s2)#求并集 print(s1&s2)#求交集 #结果 #{1, 2, 3, 4, 5} #{3}&#xff08;二&#xff09;对多维列表排序 1.新建列表 list1[[1,2,3],[2,3,4],[0,3,2]] #提取每个小列表的下标为2的…...

代码随想录第17天:二叉树

一、二叉搜索树的最近公共祖先&#xff08;Leetcode 235&#xff09; 由于是二叉搜索树&#xff0c;节点的值有严格的顺序关系&#xff1a;左子树的节点值都小于父节点&#xff0c;右子树的节点值都大于父节点。利用这一点&#xff0c;可以在树中更高效地找到最低公共祖先。 c…...

第8篇:Linux程序访问控制FPGA端HEX<一>

Q&#xff1a;如何从DE1-SoC_Computer系统的ARM A9处理器访问FPGA端的七段数码管呢&#xff1f; A&#xff1a;DE1-SoC_Computer系统中有2个连接FPGA端HEX外设的并行端口HEX5_HEX4和HEX3_HEX0&#xff0c;每个端口有一个32位只读Data寄存器。地址为0xFF200020的寄存器驱动4个数…...

Android 添加一个自己的系统服务SystemService

Android 系统服务&#xff08;System Services&#xff09;是 Android 操作系统的核心组件&#xff0c;运行在系统层面&#xff0c;为应用程序提供底层硬件访问、系统资源管理以及跨应用功能支持。这些服务在后台持续运行&#xff0c;由系统进程&#xff08;如 system_server&a…...