修改FreeSwitch的proxy_media配置。参考这个地址:https://wiki.freeswitch.org/wiki/Proxy_media。如果FreeSwitch是缺省配置的,在“conf/dialplan/default.xml”文件内找到名为“Local_Extension”的extension。在bridge前设置proxy_media。

<action application="set" data="proxy_media=true" />
 <action application="bridge" data=">

使用此项设置后,主叫方按键程序日志显示不会再收到INFO事件。即,使用此项设置将影响程序获得按键信息的方式。如果不使用此项设置,采用FreeSwitch的缺省设置,听到的语音表明延迟很严重。 或者使用下面的这项设置也会造成这个现象:

<action application="set" data="bypass_media=true" />

经反复测试发现,如采用缺省的Local_Extension设置,听到的语音延迟很严重。但一旦加上这句:“<action application="set" data="proxy_media=true" />”,或者这句:“<action application="set" data="bypass_media=true" />”,无论是否是与FreeSwitch交换RTP包都没有延迟现象。也就是说,media的模式不是影响语音延迟质量的原因。

实现一个完整的软电话或者交互式语音应答系统,必须为软件增加RTP流的处理。简单考察了下后,决定采用EMIPLIB库。EMIPLIB库基于JRTPLIB和JThread。

编译EMIPLIB

首先,尝试在Visual Studio 2010下编译此库。由于EMIPLIB库基于JRTPLIB和JThread,所以得先编译这两个库。编译这两个库参考了这篇文章:

http://www.cnblogs.com/skyseraph/archive/2012/04/07/2435540.html。我下载的JRTPLIB版本是3.9.1,下载的JThread版本是1.3.1。分别将他们解压到C:\emiplib\jrtplib-3.9.1和C:\emiplib\jthread-1.3.1。参考的文章中提到还需用到CMake,因此下载了2.8.12.2版本的CMake。CMake解压后的存储路径是C:\cmake-2.8.12.2-win32-x86。再在C:\emiplib目录下建两个子目录build和libs。然后在libs目录下再建两个子目录:jthread和jrtplib,在build目录下再建两个子目录:jthread和jrtplib。这些目录后面将会用到。这些准备工作都完成了后,回到那篇文章的第三部分编译步骤。

编译JThread

文章中的“打开cmake”,是指进入进入到C:\cmake-2.8.12.2-win32-x86\bin目录下,运行cmake-gui.exe程序。

“Where is the source code:”输入框内输入:C:/emiplib/jthread-1.3.1。

“Where to build the binaries:”输入框内输入:C:/emiplib/build/jthread。

CMAKE_INSTALL_PREFIX的值是C:/emiplib/libs/jthread。

LIBRARY_INSTALL_DIR的值是lib。

编译成功后,会在C:\emiplib\libs\jthread目录下生成两个目录lib和include。lib目录下有两个文件jthread.lib和jthread_d.lib,分别对应release和debug版本JThread的Lib文件。include目录下还会生成jthread目录,目录下有一些头文件。

编译JRTPLIB

“Where is the source code:”输入框内输入:C:/emiplib/jrtplib-3.9.1。

“Where to build the binaries:”输入框内输入:C:/emiplib/build/jrtplib。

LIBRARY_INSTALL_DIR的值是lib。

JThread_DIR的值是C:\emiplib\libs\jthread\lib\cmake\JThread。

CMAKE_INSTALL_PREFIX的值是C:/emiplib/libs/jrtplib。

ADDITIONAL_INCLUDE_DIRS的值是C:\emiplib\libs\jthread\include\jthread。

ADDITIONAL_RELEASE_LIBRARIES的值是C:\emiplib\libs\jthread\lib。

编译成功后,会在C:\emiplib\libs\jrtplib目录下生成两个目录lib和include。lib目录下有两个文件jrtplib.lib和jrtplib_d.lib,分别对应release和debug版本JRTPLIB的Lib文件。include目录下还会生成jrtplib3目录,目录下有一些头文件。

编译EMIPLIB

“Where is the source code:”输入框内输入:C:/emiplib/emiplib-1.1.1。

“Where to build the binaries:”输入框内输入:C:/emiplib/build/emiplib。

LIBRARY_INSTALL_DIR的值是lib。

JRTPLIB_DIR的值是C:/emiplib/build/jrtplib/cmake。

CMAKE_INSTALL_PREFIX的值是C:/emiplib/libs/emiplib。

ADDITIONAL_INCLUDE_DIRS的值是C:\emiplib\libs\jrtplib\include\jrtplib3。

ADDITIONAL_RELEASE_LIBRARIES的值是C:\emiplib\libs\jrtplib\lib。

那篇文档并没有编译EMIPLIB的内容,以上信息是我自己瞎编的。虽然有些数据是错的,但经此设置再编译后可以得到lib。编译成功后,会在C:\emiplib\libs\emiplib目录下生成两个目录lib和include。lib目录下有两个文件emiplib.lib和emiplib_d.lib,分别对应release和debug版本EMIPLIB的Lib文件。include目录下还会生成emiplib目录,目录下有一些头文件。

sofia sip开发九 使用EMIPLIB库增加RTP流处理相关推荐

  1. sofia sip开发二 编译库

    sofia sip源码下载地址. http://sofia-sip.sourceforge.net/download.html 下载日期是2011年3月11日,版本1.12.11的源码.解压后得到so ...

  2. sofia sip开发一 基础知识

    开发目标是实现一个简单的IVR程序,通过SIP协议注册到类似于FreeSwitch的语音平台上,拨打此IVR流程可以播放语音.收取按键.开发之前先准备点必要的背景知识. VoIP VoIP是一种透过互 ...

  3. Sofia-SIP辅助文档二四 - Sofia SIP用户代理库 - features特性模块

    http://sofia-sip.sourceforge.net/refdocs/features/index.html,翻译自官网的这张网页. 模块元信息 features模块提供sofia-sip ...

  4. Sofia-SIP辅助文档十一 - Sofia SIP用户代理库 - nea - SIP事件模块

    http://sofia-sip.sourceforge.net/refdocs/nea/index.html,翻译自官网的这张网页. 模块元信息 Sofia Event API提供操作SIP在线和会 ...

  5. 计算机网络分代核心的属性,计算机网络开发专业核心能力题库-操作

    计算机网络开发专业核心能力题库-操作 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 隘桩答弦霉炳窃弃裂步扰慌阶佑践皂舆贺翠琳稠镍狼 ...

  6. “易写易库(EXEK)”项目启动,用易语言开发易语言支持库

    "易写易库"(EXEK,E Xie E Ku)项目已经启动,用易语言开发易语言支持库.我(liigo)准备用一个月左右的业余时间,完成本项目的一期工程. 用易语言开发易语言支持库, ...

  7. android盒子开发招聘,[原创]Android沙盒开发之系统libc库定制修改

    [原创]Android沙盒开发之系统libc库定制修改 2013-7-29 22:29 11525 [原创]Android沙盒开发之系统libc库定制修改 2013-7-29 22:29 11525 ...

  8. STC8H开发(九): STC8H8K64U模拟USB HID外设

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  9. Elixir: 开发和发布Elixir库

    创建 Elixir 项目 $ mix new simple_statistics $ cd simple_statistics $ mix test Mix 生成了如下目录结构 |-- _build ...

最新文章

  1. 华为手机充满有提醒吗_华为推出的联发科天玑手机华为nova8 SE,你会买吗?
  2. 在Gilt使用Scala、Docker和AWS演化微服务
  3. React Native Fetch封装那点事...
  4. 《从零开始学Swift》学习笔记(Day 59)——代码排版
  5. DR、BDR和DROther的关系之通俗演绎
  6. 《HTTP权威指南》学习总结1——HTTP协议概述
  7. .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  8. 软件定义存储正当时 厂商纷纷争抢一杯羹
  9. 使用CA签发的服务器证书搭建Tomcat双向SSL认证服务(转)
  10. 【渝粤教育】电大中专药物化学基础 (2)_1作业 题库
  11. 猎头公司人才管理现状及人才资源管理解决方案
  12. iNode客户端“未收到服务器回应,即将强行下线,请检查终端能否正常访问网络或者与管理员联系”问题与解决方式
  13. unity ios系统相机相册 IOS16 自动横屏
  14. 爬虫豆瓣读书top250,保存为本地csv文件,可用excel查看(具体步骤和容易遇到的坑)
  15. Python解释器和IDE的安装
  16. 一位经贸学姐从点工到测试主管的心路历程(一)
  17. 毕设 JAVA.JSP二手车交易系统论文
  18. 最新版YOLOv5 6.1使用教程
  19. 如何申请域名并绑定ip
  20. 医学计算机模型现状,【盘点】计算机模型开发助力多种人类疾病的深入研究

热门文章

  1. 什么是VML(转载)
  2. JSP和HTML有什么区别
  3. 宏碁ES1-433笔记本BIOS无法更改启动项解决办法
  4. 2021-05-28 2021年ICSE中与Android相关的论文分享
  5. NOR和NANDFlash的简单比较与基础概念
  6. 解决BlackBerry 9900模拟器显示屏花屏的问题。
  7. 中国电信四川客户服务中心Java面试题
  8. ms project2007 介绍
  9. 一个功能强大的画图板(三)
  10. 声音编辑软件----CoolEdit