我想在通话过程中获取并阅读SIP信息消息.我将另一侧发送到SIP信息消息,并在LogCat上看到,但我没有在代码上收到消息.我使用pjsip. 如何在通话过程中获取SIP信息消息? 谢谢. 解决方案 您将需要. oncalltsxstate从呼叫类回调函数,以收听呼叫期间共享的SIP消息.我花了很长时间才能弄清楚,希望它可以帮助您一次,如果对您来说为时已晚. @Override public void onCallTsxState(OnCallTsxStateParam prm) { if (eventBody.getTsxState().getType() == (pjsip_event_id_e.PJSIP_EVENT_RX_MSG)) { SipRxData rdata = eventBody.getTsxState().getSrc().getRdata(); //technically
以下是关于 pjsip 的编程技术问答
我有一个Android项目,该项目使用PJSUA2进行VoIP通信,而其他所有内容都很好.但是,我感到困惑,但由于无法在显示主动调用的活动中,我无法将卷控件用于工作.我尝试以推荐的方式进行操作 - audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); setVolumeControlStream(AudioManager.STREAM_MUSIC); 这无能为力.我需要知道使用onkey听众是手动增加和减少音量的可行替代方案,还是我完全缺少某些东西,这会让我以首选的方式做. 解决方案 当呼叫处于连接状态时,您必须将音频模式设置为MODE_IN_COMMUNICATION,并在Disconnect上设置为MODE_NORMAL. // set mode to 3 to indicate MODE_IN_COMMUNICATION mode ((AudioManager) getSystemSer
我已将 pjsip 与 android 集成在一起.在我的应用程序中拨打电话时,扬声器的工作正常,但是录制麦克风音量太 low .另一方面我的声音无法听到. 注意:,但是在某些手机中它正常工作. 即使我尝试使用 ratchstreamvolume(),setStreamVolume(),setMode(),adpadvolume()方法以增加我的音量水平,无论如何它都不会增加.请给我一个建议,以解决此问题以提高Android或PJSIP的麦克风体积水平. 预先感谢. 解决方案 问题是麦克风的体积水平太低了,当我们的应用程序通过麦克风访问.当您的体积较低时,您需要检查多个内容. 使用麦克风时,其中之一是音频管理器的模式. 获得Android音频管理器的模式:: AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE); long mode = am.getMo
我在构建pjsip时会遇到以下错误此链接 . 当我运行make命令时: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/errno.h:28:0, from ../include/pj/compat/socket.h:131, from ../src/pj/ioqueue_select.c:38: ../src/pj/ioqueue_common_abs.c: In function ‘pj_ioqueue_recv’: ../include/pj/compat/os_auto.h:149:31: error: ‘EAGAIN’ undeclared (first use in this function) #define PJ_BLOCKING_ERROR_VAL EAGAIN
我是PJSIP包装器的Goosip/akssip,但无法连接到服务器.任何人都可以指导我在iOS项目中实现PJSIP. 谢谢! 解决方案 在iOS上集成PJSIP: 步骤1:第一次从其网站下载PJSIP项目. http://pjsip.org/download.htm 步骤2:提取计算机中的文件. 步骤3:转到文件夹pjsip2.6/pjlib/include/pj/ 步骤4:创建config_site.h文件 步骤5:将以下行添加到config_site.h文件中 并保存文件 #define PJ_CONFIG_IPHONE 1 #include 步骤6:打开命令提示 例如,用户/nandha/documents/pjproject2.6/ 步骤7:编译命令提示符中的命令. ./configure-iphone 成功编译上述命令后,执行下一个命令. make de
我有两个使用PJSUA的应用程序.但是我不能同时在单个Android设备上运行.运行第二个应用程序后,它崩溃了,例外: java.lang.exception:title:pjsua_transport_create(type,&tcfg, &TID)06-26 14:49:56.355代码:120098 06-26 14:49:56.355 描述:已使用中的地址06-26 14:49:56.355位置: ../src/pjsua2/endpoint.cpp:1519 06-26 14:49:56.355 14:49:56.361 pjsua_core.c pjsua状态更改:init->开始06-26 14:49:56.355 14:49:56.362 sip_endpoint.c .module " mod-unsolicited-mwi"注册06-26 14:49:56.360 28512-28512/com.lemondo.biz.intelphone I/System
使用sipster/pjsip成功安装,我想遵循基本sipsper示例并记录声音从SIP连接到该SIP服务器.现在,如果我在本地Arch Linux计算机上运行该声音,则声音会完全记录,但是如果我在Docker机器上进行此操作,则我以 开始 docker run -p 5060:5060/udp -it myContainer sip连接有效,但没有录制声音. 一个朋友告诉我,SIP使用RTP进行声音传输,该协议将UDP端口从16384到32767. 现在如果我做 docker run -p 5060:5060/udp -p 16384-32767:16384-32767/udp -it myContainer 这最终会花费很长时间. 有没有一种方法可以缩小Sipster或PJSIP的RTP端口范围?而且我什至在正确的轨道上,还是该问题可能连接到没有声音设备的Docker? 解决方案 Docker无法一次映射很多端口.就我而言,我创建了一个rt
I am trying to run test VoIP program as given in http://www.pjsip.org/pjsip/docs/html/page_pjsip_sample_sample_simple_pjsuaua_c.htm 我正在尝试在,但我总是收到错误消息 14:33:25.515 PJSUA_ACC.C SIP注册失败,状态= 408(请求超时) 我以前从未使用过SIP,我无法猜测问题在哪里.是否有任何简单的测试SIP服务器的方法?有人知道有效的公共免费SIP服务器吗? 谢谢 解决方案 408超时消息通常意味着用户代理(在这种情况下,您的pjsip应用程序)已发送其请求,但没有收到响应. 我参与了一个免费的SIP服务,称为其他解决方案 您可以使用
我正在基于swig示例使用pjSip构建sip软电话. . i启用示例中所述的日志: LogConfig log_cfg = epConfig.getLogConfig(); SipLogWriter logWriter = new SipLogWriter(); log_cfg.setWriter(logWriter); log_cfg.setDecor(log_cfg.getDecor() & ~(pj_log_decoration.PJ_LOG_HAS_CR.swigValue() | pj_log_decoration.PJ_LOG_HAS_NEWLINE.swigValue())); 我的siplogwriter类是: public class SipLogWriter extends LogWriter { @Override public void write(LogEntry entry) { Log.d(Globa
func startSipRecording(caller: String, callid: pjsua_call_id) -> (started: Bool, startDate: NSDate?) { var status = pj_init() if status != PJ_SUCCESS.rawValue { return (false, nil) } cpFec = pjsua_data().cp /* Must create a pool factory before we can allocate any memory. */ pj_caching_pool_init(&cpFec!, &pj_pool_factory_default_policy, 0) status = pjmedia_endpt_create(&cpFec!.fac
我正在尝试在我的PJSIP应用中使用扬声器,因此我使用setOutputRoute: pjmedia_aud_dev_route路由= pjmedia_aud_dev_route.pjmedia_aud_dev_route_loudspeaker; myApp.ep.auddevmanager().setOutputRoute(route,true); 但是我遇到了一个错误:无效或不支持的音频功能(pjmedia_eaud_invcap). 在pjsua中说:仅当设备具有pjmedia_dev_cap_output_route audiodevinfo.caps flags时,此方法才有效. 我想也许我必须设置这个标志...但是我不知道 如何 解决方案 我几天前遇到了同样的问题.我知道这不是答案,只是一种替代方案,但我最终使用了它,并且效果很好. AudioManager audioManager = (AudioManager) context.ge
有人可以告诉我为什么会发生这种情况? ios10,iPhone5s,voip siphon pjsip2.5.5. 这些问题并非每次都出现,有时会在您想拨打电话或接听电话时出现(添加:20161226). 错误打开声音设备: 14:06:03.137742 pjsua_aud.c ....Set sound device: capture=-1, playback=-2 14:06:03.137775 pjsua_aud.c .....Opening sound device (speaker + mic) PCM@16000/1/20ms 14:06:03.137837 coreaudio_dev. ......Using VoiceProcessingIO audio unit 14:06:03.147404 acquire_call enter,call_id:2 14:06:03.233365 level:4,msg:14:06:03.233
要编译用于iPhone设备的PJSIP库,我正在使用此代码 make distclean && make clean ARCH='-arch arm64' ./configure-iphone --enable-opus-codec make dep make 此代码允许我仅将我的应用程序安装到单个体系结构中. 为所有架构(ARMV7,ARMV7,ARM64,I386,X86_64)编译PJSIP,我可以使用哪种命令或工具 解决方案 为所有设备编译的步骤. 分别为所有设备编译 与Lipo合并 例如. -create /libsrtp-arm64-apple-darwin_ios.a /libsrtp-i386-apple-darwin_ios.a -output output_file_name 然后使用output_file_name.a作为所有设备和模拟器的通用库 检查支持的体系结构:output_file_name.a lip
我的应用程序刚刚被Apple拒绝,因为它无法正确地实现背景运行,并且是使用iOS的VoIP应用程序. 我保持运行的奇数代码 [self performSelectorOnMainThread:@selector(keepAlive) withObject:nil waitUntilDone:YES]; [application setKeepAliveTimeout:KEEP_ALIVE_INTERVAL handler: ^{ [self performSelectorOnMainThread:@selector(keepAlive) withObject:nil waitUntilDone:YES]; }]; 我知道是错误的 i然后遵循 我基本上只需要调用一种方法来保持PJSIP活着. 我应该如何正确执行此操作? 更新 我看过Apple指南,看来这是正确的 [application setKeepAliveTimeout:KEE
我正在为iOS创建VoIP应用程序. 我正在使用PJSIP开源库. 将PJSIP配置为UDP时,我可以连接. 但是我总是得到错误代码171060 [错误创建传输:不支持的传输(pjsip_eunsuptransport)[status = 171060]] 我知道,在配置TLS的文件设置时,我会在某个地方犯错. 这就是我正在做的. pjsua_transport_config cfg; pjsua_transport_config_default(&cfg); cfg.port = 5061; cfg.tls_setting.ca_list_file = pj_str((char*)[[[NSBundle mainBundle] pathForResource:@"ca_list" ofType:@"pem"] cStringUsingEncoding:NSUTF8StringEncoding]); // location of cacert.pem
我们面临着iOS的Callkit框架的问题. 我们必须在应用程序中实现以下功能. 一对一 (工作正常) . 我们可以结束并接受第二个电话 (正常工作) . 我们可以举行并接受呼叫(最大2个电话). 我们可以在呼叫之间切换. 举行/联合当前电话. 问题:我们面临的问题是: 我们能够接受第二个呼叫,这些呼叫在保持和接受时没有音频. 禁用了调用套件的切换呼叫按钮. 我们已经完成了实施以处理多个呼叫的实现: 我们正在通过以下方法报告新调用. - (void)reportNewIncomingCallWithUUID:(nonnull NSUUID *)UUID handle:(nonnull NSString *)handle completion:(nullable void (^)(NSError *_Nullable error))completion { CXCallUpdate *u
我已经配置了使用PJProject 2.5.5的星号13.13.1,并启用PJSIP为SIP驱动程序(不编译Chan_sip). 我有完全配置的系统,它正在工作,但是我在来电上有一些问题.我与主机连接的数字很少,当我从任何公共号码打电话时,我在星号远程控制台上注意到了此信息: [Feb 24 14:27:16] NOTICE[5291]: res_pjsip/pjsip_distributor.c:525 log_failed_request: Request 'INVITE' from '"zzzzz" ' failed for '192.168.34.1:5062' (callid: 0e07e7607f8f62dd225347363173bb9f@192.168.34.1:5062) - No matching endpoint found ,如果我将呼叫的号码添加到端点到端点,那么它可以正常工作 - 我可以接听此调用
我试图删除Callkit屏幕,一旦我的VoIP呼叫被源或目的地断开. 我使用了此代码 CXEndCallAction *endaction = [[CXEndCallAction alloc] initWithCallUUID:[NSUUID UUID]]; CXCallController *callController = [[CXCallController alloc] initWithQueue:dispatch_get_main_queue()]; requestTransaction:[CXTransaction transactionWithActions:nil completion:completion]]; ,但它无需关闭CallKit.有人可以帮助我解决这个问题吗? 解决方案 您可以在呼叫断开的方法上使用以下方法. @property (nonatomic, strong) CXCallController *callKitCallC