方式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_INCLUDEDIRS
include
../re/include
)
set(COMPONENT_SRCDIRS
src
modules/g711
modules/i2s
modules/auconv
modules/auresamp
modules/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_INCLUDEDIRS
include
)
set(COMPONENT_SRCDIRS
rem/fir
rem/au
rem/goertzel
rem/dtmf
rem/auresamp
rem/aac
rem/aumix
rem/g711
rem/auconv
rem/autone
rem/vid
rem/vidconv
rem/aufile
rem/aubuf
rem/auframe
rem/aulevel
src
src/main
src/sys
src/dns
src/mbuf
src/list
src/mqueue
src/mem
src/tcp
src/msg
src/sipevent
src/udp
src/tmr
src/fmt
src/bfcp
src/json
src/aes
src/dbg
src/md5
src/sa
src/sdp
src/hash
src/httpauth
src/uri
src/stun
src/srtp
src/ice
src/turn
src/mod
src/sip
src/websock
src/conf
src/hmac
src/rtp
src/sipreg
src/base64
src/sipsess
src/odict
src/http
src/net
src/telev
src/sha
src/crc32
src/thread
src/async
src/rtpext
src/net/posix
)
set(COMPONENT_OBJEXCLUDE
re/src/main/openssl.o
re/src/main/epoll.o
re/src/dns/res.o
re/src/mod/dl.o
re/src/lock/rwlock.o
re/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界面
提供的例子用于非注册的 需要改动的很多 ken也很多,个人感觉这个比较好些
后面加好界面在截图 还得学下lvgl
有sip相关需求觉得麻烦可以到https://item.taobao.com/item.htm?id=653611115230