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_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界面 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值