要在手机client中实现会议功能,从音频会议開始(可能会优点理点)。server用的是Centos7 64 + Freeswitch1.4。client是基于doubango的imsdroid。还有pc上的jitsi。

doubango中

1. addHeader函数能够在sip报文中加入字段。比如“P-Preferred-Service”

2. addCaps函数在在sip报文Contact字段<>后加入内容,有2个重载

可是。这2个函数都无法改动Contact<>中的内容,

搜了一圈又一圈,发现doubango并没有提供能够改动Contact中<>里的内容的函数(如找到请告诉我。qq 1985082200,谢谢),没办法,仅仅能靠自己了。

pc上jitsi能够发起视频,音频会议,经过抓包对照,推測发起会议的方法:

1. 在Contact中最后加入isfocus參数,測试不行

2. 在Contact<>中加入registering_acc这一串

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

3. 同一时候加入以上2个

4. 其它可能性。。。

既然找到方法,那说干就干,找到最后将Contact转化为字符串的地方。黄天不负有心人,一层层找下来最终发现躲藏在这里:

1)SipSession.cpp

bool SipSession::addCaps(const char* name, const char* value)

2) tsip_session.c

tsk_params_add_param

3) tsip_header_Contact.c

int tsip_header_Contact_serialize(const tsip_header_t* header, tsk_buffer_t* output)

4) tsip_uri.c

int tsip_uri_serialize(const tsip_uri_t *uri, tsk_bool_t with_params, tsk_bool_t quote, tsk_buffer_t *output)

int __tsip_uri_serialize(const tsip_uri_t *uri, tsk_bool_t with_params, tsk_buffer_t *output)

恩,终于就是在__tsip_uri_serialize中穿行化Contact的内容的。代码中有这么一段:

红色框框里的,咦。感觉能够加入參数呢。往上找了一层。最后是失望,没有提供操作params的函数

doubango中封装“uri"的内是”SipUri“,在”SipUri.h"中,而真正实现的数据结构是“tsip_uri_t”

好吧,既然找到地方了,那明天就写死加上看看行不行,要是能够再提供api,只是,偶记得编译这货也不太easy。哎~~~~

doubango库改动Contact内容的地方的更多相关文章

  1. python改动文件内容,不须要read,write多个动作。

    python  要改动文件内容,经常使用 是先read.后write , 再 rename.非常不爽. 比方:须要 把       yuv_dir ="../HD/"   # &q ...

  2. 基于bs4库的HTML内容查找方法

    一.信息提取实例 提取HTML中所有的URL链接 思路:1)搜索到所有的<a>标签 2)解析<a>标签格式,提取href后的链接内容 >>> import r ...

  3. SVNKIT的low api应用之修改库中文件内容(File modification)

    最近在做一个仓库管理系统,架构在svn之上.要求每一项操作要记录在log文件中,弄了很久起初感觉无法向库中的文本文件添加东西,就是修改库中的文本文件.于是采用了一个很笨的办法:    现将库中的log ...

  4. php使用gd库输出中文内容的图片

    正如标题所说那样,本文只讨论输出内容全部为中文或者包含中文的情况.如果内容全是字母或者其他字符的话,可以参考这篇博客:生成验证码 问题 此处要注意,标题中为什么要区别windows和linux分别实现 ...

  5. gitlab迁移版本库(保留原版本库的所有内容)

    如果你想从别的 Git 托管服务那里复制一份源代码到新的 Git 托管服务器上的话,可以通过以下步骤来操作. 1) 从原地址克隆一份裸版本库,比如原本托管于 GitHub git clone --ba ...

  6. gd库的相关内容

    gd库注意事项 对于乱码问题 在php里面包含 header("content-type:image/png"); 这样输出的图像就不会乱码了后面跟的Png也可以改变为自己想要输出 ...

  7. Sophus库CMakeLists.txt内容详解笔记

    CMakeLists.txt: SET(PROJECT_NAME Sophus) PROJECT(${PROJECT_NAME}) CMAKE_MINIMUM_REQUIRED(VERSION 2.6 ...

  8. 基于BeautifulSoup库的HTML内容的查找

    一.BeautifulSoup库提供了一个检索的参数: <>.find_all(name,attrs,recursive,string,**kwargs),它返回一个列表类型,存储查找的结 ...

  9. php-fpm.conf配置说明(重点要改动和优化的地方)

    <?xml version="1.0" ?> <configuration> All relative paths in this config are r ...

随机推荐

  1. Dorado日常使用总结

    1.360兼容模式下的控件虚线边框问题: 控件加载是onReady事件中加上:self.focusable=false;(用于指示该种控件是否支持获得控制焦点.) 2.360兼容模式下滚动条 cont ...

  2. 习题:最短路计数(SPFA最短路计数)

    最短路计数(洛谷1144)题目描述 给出一个N个顶点M条边的无向无权图,顶点编号为1-N.问从顶点1开始,到其他每个点的最短路有几条.输入输出格式输入格式:输入第一行包含2个正整数N,M,为图的顶点数 ...

  3. 【Luogu】P4172水管局长(LCT)

    题目链接 有个结论是x到y的路径上最长边权值等于最小生成树上最长边权值,于是问题转化为最小生成树. 再考虑把问题反过来,删边变成加边. 于是变成动态维护最小生成树,LCT可以做到. #include& ...

  4. 修改host文件实现自定义域名和iis站点本地调试

    修改host文件实现自定义域名和iis站点本地调试 自定义域名:myhost.com windows版本:win7 iis版本:iis7.x vs版本:vs2010 现在开始动手设置了: 一.修改ho ...

  5. [ZJOI2011][bzoj2229] 最小割 [最小割树]

    题面 传送门 思路 首先我们明确一点:这道题不是让你把$n^2$个最小割跑一遍[废话] 但是最小割过程是必要的,因为最小割并没有别的效率更高的算法(Stoer-Wagner之类的?) 那我们就要尽量找 ...

  6. gcc编译生成静态及动态链接库步骤

    gcc编译生成静态及动态链接库步骤 这两天在看<Linux C程序设计大全>,吴岳编著,清华大学出版社.这本书是在一个培训机构看到的,在网上查了下该书的相关信息.从目录而言,该书涵盖了Li ...

  7. ceoi2017 Building Bridges(build)

    Building Bridges(build) 题目描述 A wide river has nn pillars of possibly different heights standing out ...

  8. python 小练习1

    _input = ['I',6,6,'love','python',6] _str = '' _sum = 0 for item in _input: if isinstance(item,str): ...

  9. 学习总结——JMeter做http接口压力测试

    JMeter做http接口压力测试 测前准备 用JMeter做接口的压测非常方便,在压测之前我们需要考虑这几个方面: 场景设定 场景分单场景和混合场景.针对一个接口做压力测试就是单场景,针对一个流程做 ...

  10. Java使用apache的开源数据处理框架commons-dbutils完成查询结果集的各种处理输出(8种方式)

    package demo; /* * QueryRunner数据查询操作: * 调用QueryRunner类方法query(Connection con,String sql,ResultSetHan ...