linux系统移植pjsua库实现sip通话功能 一、概述
本文实现pjsua开源库的交叉编译以及通过调用pjsua库api实现sip语言双向通话功能包括注册上线sip服务器、接收处理指令(电话邀请、挂断等)、双向音频对讲功能。二、交叉编译pjsua库1.解压tar -zxvf 2.15.1.tar.gz; cd pjproject-2.15.1;2.配置编译选项./configure \ --hostarm-linux-gnueabihf \ --prefix$(pwd)/_mini \ --enable-shared \ --disable-video \ --disable-pjsua2 \ --disable-sound \ --disable-ssl \ --disable-ffmpeg \ --disable-v4l2 \ CFLAGS“-Os -DNDEBUG” \ LDFLAGS“-s” \ CCarm-linux-gnueabihf-gcc \ CXXarm-linux-gnueabihf-g \ ARarm-linux-gnueabihf-ar \ RANLIBarm-linux-gnueabihf-ranlib可用选项#禁用高质量的音频处理算法–disable-libwebrtc3.编译安装make depmakemake install4.完成动态库移植动态库路径在 pjproject-2.15.1/_install/lib/5.工程项目编译可能会报错比如大小端未定义makefile加个选项:CFLAGS -DPJ_IS_LITTLE_ENDIAN1 -DPJ_IS_BIG_ENDIAN0 仅供参考6.解决编译警告sip/include/pj/compat/limits.h:38:4: error: #warning limits.h is not found or not supported. LONG_MIN and LONG_MAX will be defined by the library in pj/compats/limits.h and “overridable in config_site.h” [-Werrorcpp] 38 | # warning limits.h is not found or not supported. LONG_MIN and LONG_MAX \ | ^~~~~~~ cc1: all warnings being treated as errors1将/sip/include/pj/config_site.h的文件内容改为点击查看代码(2)将/sip/include/pj/compat/limits.h的点击查看代码改为点击查看代码三、简单了解sip协议SIP会话初始协议是一个在互联网上发起、管理和结束多媒体通信如语音通话、视频会议的信令控制协议。本文只实现语言通话。以下是客户端与服务器和主叫方注册通话等交互的流程1.注册与认证通话准备1用户设备UA向SIP服务器发送 REGISTER 请求包含用户标识如 sip:userexample.com。2若需认证服务器返回 ​401 Unauthorized要求提供凭证如用户名、密码。3终端重新发送带认证信息的 REGISTER服务器验证通过后回复 ​200 OK完成注册。4作用​告知服务器终端可达地址为后续呼叫路由提供依据。2.呼叫建立信令交互1主叫发起邀请a.主叫发送 ​INVITE​ 请求包含被叫URI如 sip:bobdomain.com和媒体描述SDP协议。b.SDP信息包括媒体类型音频/视频编解码格式如G.711、Opus接收音频rtp数据包的IP地址及端口号2被叫响应a.被叫收到 INVITE 后返回 ​100 Trying​处理中。b.若可接听返回 ​180 Ringing​振铃主叫听到回铃音。c.被叫摘机后发送 ​200 OK携带自身SDP参数如接收IP和端口。d.主叫回复 ​ACK​ 确认呼叫正式建立3.会话修改与终止(1)会话修改可选主叫通话中调整参数如切换高清音频时发送 UPDATE​或 RE-INVITE请求重新协商SDP​ (2)终止通话任一方发送 BYE​请求对方回复 200 OK释放媒体资源及网络承载4.通话阶段媒体传输双向RTP语音流主叫 ↔ 被叫​​(1)协议​RTPReal-time Transport Protocol(2)传输内容​a.音频数据包按协商的编解码格式b.语音连续性信息c.时间戳确保音频同步四、代码实现点击查看代码五、TCP/UDP抓包数据分析1.stun查询外网ipstun查询外网ip2.stun返回设备的公网ipstun返回设备的公网ip3.设备NAT打洞成功设备NAT打洞成功4.开始注册开始注册5.服务器应答注册服务器应答注册

相关新闻

B站视频下载神器终极指南:轻松获取4K大会员专属内容

B站视频下载神器终极指南:轻松获取4K大会员专属内容

B站视频下载神器终极指南:轻松获取4K大会员专属内容 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 想要随时随地观看B站上…

2026/7/23 11:54:16 阅读更多 →
RAG技术解析:大语言模型与知识检索的融合应用

RAG技术解析:大语言模型与知识检索的融合应用

1. RAG技术核心解析:当大语言模型遇上知识检索检索增强生成(Retrieval-Augmented Generation,简称RAG)正在重塑AI内容生成的技术范式。这项技术的本质是将大语言模型(LLM)的生成能力与精准的信息检索系统相…

2026/7/23 20:31:31 阅读更多 →
基于BERT与BiLSTM的智能论文降重系统设计与实践

基于BERT与BiLSTM的智能论文降重系统设计与实践

1. 项目背景与需求分析2025届毕业生面临的学术写作挑战中,论文查重是最令人头疼的问题之一。随着学术规范日益严格,各大高校对论文重复率的容忍度越来越低,部分985院校甚至将硕士论文的重复率门槛降至8%以下。传统的人工降重方式效率低下&…

2026/7/23 5:23:30 阅读更多 →

最新新闻

Unity数字孪生实战:核心API、数据驱动与性能优化全解析

Unity数字孪生实战:核心API、数据驱动与性能优化全解析

1. 项目概述:从概念到实践的桥梁如果你正在用Unity3D做数字孪生项目,并且已经过了看概念、搭框架的阶段,那么你大概率会遇到一个核心问题:那些炫酷的实时数据驱动、模型动态更新、虚实同步交互,到底是怎么一行行代码敲…

2026/7/24 7:48:36 阅读更多 →
.NET集成YOLO多模型推理:工业视觉新方案

.NET集成YOLO多模型推理:工业视觉新方案

1. 项目概述:当.NET遇上YOLO的多模型推理革命在工业质检、安防监控、自动驾驶等领域,目标检测技术正经历着从单模型到多模型协同的演进。传统方案往往需要搭建Python技术栈,而微软技术栈开发者长期面临生态工具链断裂的困境。这个开源项目首次…

2026/7/24 7:48:36 阅读更多 →
Unity异步CRC校验:基于UniTask实现AssetBundle资源完整性验证

Unity异步CRC校验:基于UniTask实现AssetBundle资源完整性验证

1. 项目概述:为什么我们需要异步CRC校验?在Unity项目开发的后期,尤其是涉及到热更新或者资源分包管理的项目里,AssetBundle的完整性和正确性校验是一个绕不开的坎。你辛辛苦苦打包好的资源,从服务器下载到用户设备上&a…

2026/7/24 7:48:36 阅读更多 →
CRAG技术:解决RAG幻觉难题的自我修正框架

CRAG技术:解决RAG幻觉难题的自我修正框架

1. 项目概述:CRAG技术背景与核心价值在信息检索与生成领域,RAG(检索增强生成)技术近年来已成为连接海量知识库与语言模型的主流方案。但传统RAG存在一个致命缺陷:当检索到错误或低质量参考内容时,生成结果会…

2026/7/24 7:48:36 阅读更多 →
YOLOv8在寄生虫检测中的计算机视觉应用实践

YOLOv8在寄生虫检测中的计算机视觉应用实践

1. 项目概述:当计算机视觉遇上寄生虫检测在医学检验和公共卫生领域,寄生虫检测一直是一项耗时且依赖专业人员经验的工作。传统显微镜检测方法需要检验人员长时间保持高度注意力,不仅效率低下,还容易因视觉疲劳导致误判。我们团队开…

2026/7/24 7:48:35 阅读更多 →
Hough变换在雷达航迹起始中的算法优化与实践

Hough变换在雷达航迹起始中的算法优化与实践

1. 航迹起始算法概述:从理论到实践在雷达信号处理和多目标跟踪领域,航迹起始(Track Initiation)是构建稳定跟踪系统的首要环节。想象一下空中交通管制场景——雷达屏幕上闪烁的无数光点中,哪些是真实目标?哪…

2026/7/24 7:47:35 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻