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

esp32 sip voip 软电话

方式1 :如果是官方的板子 可以用这个封装的很好,

https://github.com/espressif/esp-adf/blob/master/examples/protocols/voip/README_CN.md

内存消耗还行,可以加lvgl的界面

方式2:baresip 改造,自己试了下还有些bug  不过内存只剩5万多的字节了不优化很难在运行lvgl 。在esp32s3 450kb的内存:cmake 可以参考下面的

set(COMPONENT_ADD_INCLUDEDIRSinclude../re/include 
)set(COMPONENT_SRCDIRSsrcmodules/g711modules/i2s modules/auconvmodules/auresampmodules/uuid
)set(COMPONENT_ADD_LDFLAGS-Wl,--gc-sections
)set(COMPONENT_CFLAGS-DHAVE_SELECT -DHAVE_SELECT_H-DHAVE_INET_NTOP -DHAVE_INET_PTON -DHAVE_PTHREAD -DHAVE_STRERROR_R-DHAVE_INTTYPES_H -DHAVE_STDBOOL_H -DHAVE_FORK-DHAVE_PWD_H-DHAVE_SIGNAL -DHAVE_SYS_TIME_H-DHAVE_UNISTD_H -DHAVE_STRINGS_H-DHAVE_ROUTE_LIST-Wall-Wmissing-declarations-Wmissing-prototypes-Wbad-function-cast-Wnested-externs-Wshadow-Waggregate-return-DLINUX -g -Os-Wno-char-subscripts-DSHARE_PATH="\"/usr/share/baresip\""-Wno-error=address-DSTATIC=1 -DEXTCONFIG=1 -DNODNS
)set(COMPONENT_CXXFLAGS-DSTATIC=1 -DEXTCONFIG=1 -DNODNS
)idf_component_register(INCLUDE_DIRS ${COMPONENT_ADD_INCLUDEDIRS}SRC_DIRS ${COMPONENT_SRCDIRS}REQUIRES driver
)
set(COMPONENT_ADD_INCLUDEDIRSinclude
)set(COMPONENT_SRCDIRS
rem/firrem/aurem/goertzelrem/dtmfrem/auresamprem/aacrem/aumixrem/g711rem/auconvrem/autonerem/vidrem/vidconvrem/aufilerem/aubufrem/auframerem/aulevel srcsrc/mainsrc/syssrc/dnssrc/mbufsrc/listsrc/mqueuesrc/memsrc/tcpsrc/msgsrc/sipeventsrc/udpsrc/tmrsrc/fmtsrc/bfcpsrc/jsonsrc/aessrc/dbgsrc/md5src/sasrc/sdpsrc/hashsrc/httpauthsrc/uri src/stunsrc/srtpsrc/icesrc/turnsrc/modsrc/sipsrc/websocksrc/confsrc/hmacsrc/rtp src/sipregsrc/base64src/sipsesssrc/odict src/httpsrc/netsrc/televsrc/shasrc/crc32src/threadsrc/asyncsrc/rtpextsrc/net/posix 
)set(COMPONENT_OBJEXCLUDEre/src/main/openssl.ore/src/main/epoll.ore/src/dns/res.ore/src/mod/dl.ore/src/lock/rwlock.ore/src/net/ifaddrs.o
)set(COMPONENT_CFLAGS-DHAVE_SELECT -DHAVE_SELECT_H-DHAVE_INET_NTOP -DHAVE_INET_PTON -DHAVE_PTHREAD -DHAVE_STRERROR_R-DHAVE_INTTYPES_H -DHAVE_STDBOOL_H -DHAVE_FORK-DHAVE_PWD_H-DHAVE_SIGNAL -DHAVE_SYS_TIME_H-DHAVE_UNISTD_H -DHAVE_STRINGS_H-DHAVE_ROUTE_LIST-Wall-Wmissing-declarations-Wmissing-prototypes-Wbad-function-cast-Wnested-externs-Wshadow-Waggregate-return-DLINUX -g -Os-Wno-error=char-subscripts-Wno-error=implicit-function-declaration
)idf_component_register(INCLUDE_DIRS ${COMPONENT_ADD_INCLUDEDIRS}SRC_DIRS ${COMPONENT_SRCDIRS} REQUIRES mbedtls esp_netif pthread esp_timer
)

剩下的改造下i2s 、re/queue和、pthread参数即可 运行效果:

方式3:用简单的改造 还剩22万多字节 可以运行lvgl界面 

GitHub - GeorgeBregman/ESP32-SIP-Voice: ESP32-based SIP VoIP client (ESP-IDF + FreeRTOS). Tasks, queues, and core SIP call flow logic. Uses G.711 µ-law and I2S codec (e.g., ES8388).

提供的例子用于非注册的 需要改动的很多 ken也很多,个人感觉这个比较好些

后面加好界面在截图 还得学下lvgl 

有sip相关需求觉得麻烦可以到https://item.taobao.com/item.htm?id=653611115230

http://www.xdnf.cn/news/9427.html

相关文章:

  • 创建型模式之Abstract Factory(抽象工厂)
  • o1 mini vs o3 mini vs o3 mini high:2025全面对比测评(性能/价格/场景)
  • js获取浏览器中文参数
  • 从预测到验证一键get靶基因结合的转录因子
  • 余弦退火:助力模型训练的优化算法
  • 如何通过TDE透明加密保护智慧档案管理系统中的数据
  • 秒杀系统—1.架构设计和方案简介
  • 【Linux】Linux 操作系统 - 19 , 重谈文件(三) ~ 学好 Linux 精髓是什么 , 缓冲区又是什么 ???【面试】
  • 防火墙的访问控制
  • 【第1章 基础知识】1.4 开始学习HTML5
  • FLUX的实时显示
  • leetcode530.二叉搜索树的最小绝对差:递归中序遍历的差值追踪之道
  • t006-艺体培训机构业务管理系统
  • 上讯信息运维管理审计系统imo.php存在命令执行漏洞(CNVD-2025-07703)
  • Java基础打卡-集合2025.05.22
  • NHANES指标推荐:MQI
  • 2025吉林长春CCPC
  • C++STL之deque
  • 文件类型汇总
  • 机动与灵活的水上救援利器,冲锋舟
  • 深度解析 CC 攻击:原理、危害与防御策略​
  • C++将地址转换为字符串
  • 双特异性抗体的设计与开发
  • Java SapringBoot集成Redis存储Session,setAttribute会重置过期时间吗?怎么实现更新过期时间
  • Soft thinking和MixtureofInputs——大模型隐空间推理——本周论文速读
  • apk- 反编译apktools操作方法——请勿乱用-东方仙盟
  • Opigno LMS 3.2.7 安装操作记录
  • 32通道采集收发平台18G带宽直采
  • lcd-framebuffer驱动开发参考文章
  • 更新时间相差8个小时