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