我们正在嵌入式芯片上实现sip客户端,因此语音通话存在问题。 pjsua在屏幕上显示错误消息:
Press a to answer or h to reject call
a
Answer with code (100-699) (empty to cancel): 200
20:19:00.811 pjsua_call.c !Answering call 0: code=200
20:19:00.811 pjsua_media.c ...Call 0: updating media..
20:19:00.811 pjsua_media.c ....pjmedia_stream_info_from_sdp() failed for call_id 0 media 0: Invalid media payload type (PJMEDIA_EINVALIDPT)
20:19:00.811 pjsua_media.c .....Media stream call00:0 is destroyed
20:19:00.811 pjsua_media.c ....Error updating media call00:0: Invalid media payload type (PJMEDIA_EINVALIDPT)
20:19:00.811 pjsua_call.c ...Unable to create media session: No active media stream after negotiation (PJMEDIA_SDPNEG_ENOMEDIA) [status=220048]
20:19:00.811 pjsua_core.c ......TX 657 bytes Response msg 488/INVITE/cseq=5078 (tdta0x55ff190ff418) to UDP 91.121.209.194:5060:
SIP/2.0 488 Not Acceptable Here
我使用以下命令行(x86 pjsua)启动了pjsua示例:
$ ./pjsua-x86_64-unknown-linux-gnu --null-audio --local-port=15060
pjsua是否会强制检查声音设备?我们只想拨打电话并将外部DSP音频数据传输到服务器,并且我们已经实现了从本地DSP提取音频数据。有什么方法可以通过pjsua发送音频而无需修改pjsip的源代码?我们的pjsip版本是2.8。
PS:我已经阅读了这份文件,它告诉了我实现目标的几种方法。
方法1: set_null_audio_device
方法2: 启用外部声音设备(我们不知道它如何工作)
方法3: 第三方媒体示例(pjsip 2.X,有点复杂)
方法4: 集成第三方媒体堆栈(仅适用于pjsip 1.X?)
,但是它们都没有示例程序。甚至不赞成使用某些方法。