eXosip和osip详解
文档
可以查看exosip osip的在线文档
http://www.antisip.com/doc/
在线文档 一般先看mainpage 会有库的一个整体说明。
其次看看 modules 会有一些使用说明。
exosip是对osip的封装 使用osip简单好用。 osip主要包括sip sdp 协议的解析 fmt 无限状态机 实现sip协议的会话状态(这个没有太深入理解) 其次还包括了对不同平台的线程 锁信号的封装实现跨平台。
osip 源代码框架详解
https://wenku.baidu.com/view/49462441be1e650e52ea9940.html?sxts=1557060265157
https://wenku.baidu.com/view/7cc81930b90d6c85ec3ac6de.html?rec_flag=default
https://wenku.baidu.com/view/f7988a6b011ca300a6c390ab.html
* osip 开发手册
https://wenku.baidu.com/view/fe5ccbebe009581b6bd9eb18.html?sxts=1557122790420
* osip 状态机的解释(ICT IST NICT NIST)
https://blog.csdn.net/candy1232009/article/details/3926868
https://blog.csdn.net/lbc2100/article/details/48342889
osip sdp 的操作
- void sdpTest() {
- char *sdpStr = "v=0\r\n"
- "o=- 3761910912 3761910915 IN IP4 47.112.105.194\r\n"
- "s=butelmedia\r\n"
- "t=0 0\r\n"
- "m=audio 5061 RTP/AVP 98 97 99 0 8\r\n"
- "c=IN IP4 61.149.194.174\r\n"
- "a=sendrecv\r\n"
- "a=rtpmap:98 speex/16000\r\n"
- "a=rtpmap:97 speex/8000\r\n"
- "a=rtpmap:99 speex/32000\r\n"
- "a=rtpmap:0 PCMU/8000\r\n"
- "a=rtpmap:8 PCMA/8000\r\n"
- "a=ssrc:2066561799 cname:30000025\r\n"
- "a=mid:audio-1\r\n"
- "a=rtcp-mux\r\n"
- "a=audiodesc:mic_audio\r\n"
- "m=video 5061 RTP/AVP 97\r\n"
- "c=IN IP4 61.149.194.174\r\n"
- "a=sendrecv\r\n"
- "a=rtpmap:97 H264/90000\r\n"
- "a=fmtp:97 profile-level-id=42e01e; packetization-mode=1\r\n"
- "a=ssrc:931412768 cname:30000025\r\n"
- "a=mid:video-1\r\n"
- "a=rtcp-mux\r\n"
- "a=videodesc:camera\r\n"
- ;
- int ret = 0;
- sdp_message_t *sdp = NULL;
- char *pChar = NULL;
- ret = sdp_message_init (&sdp);
- if(0!=ret) {
- printf("sdp_message_init error %d \n",ret);
- return;
- }
- ret = sdp_message_parse (sdp, sdpStr);
- if(0!=ret) {
- printf("parse error %d \n",ret);
- return;
- }
- pChar = sdp_message_a_att_field_get(sdp,0,0);
- if (pChar) printf("%s \n",pChar);
- int size = strlen("sendonly");
- char * send = (char *)osip_malloc(size);
- memcpy(send,"sendonly",size);
- ret = sdp_message_a_attribute_add (sdp, 0, send, NULL);
- printf("sdp_message_a_attribute_add %d \n",ret);
- ret = sdp_message_a_attribute_del (sdp, 0, "sendrecv");
- printf("sdp_message_a_attribute_del %d \n",ret);
- ret = sdp_message_to_str(sdp,&pChar);
- if(0!=ret) {
- printf("sdp_message_to_str %d \n",ret);
- return;
- }
- printf("sdp_message_to_str: %s \n",pChar);
- osip_free(pChar);
- sdp_message_free(sdp);
- }
备注: 添加到sdp_message_t 的信息 需要动态分配的信息 因为 sdp_message_free 会释放
eXosip和osip详解的更多相关文章
- linux下编译eXosip、osip,以及UAC和UAS的例子
从网站上看到了这样的一篇博文 :Windows下编译eXosip.osip,以及UAC和UAS的例子 (链接:http://www.cnblogs.com/dyllove98/archive/2013 ...
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解
前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
随机推荐
- 小记centos7下将未使用的磁盘空间重新分区挂载使用
一块1TB的硬盘,用作samba共享,在安装系统时分区如下: /boot 2048M swap 512M / 229GB 剩下约 700GB左右未使用空间,在安装完系统后再使用 以下是详细操作,就几个 ...
- [Python]获取字典所有值
方法一:Key Value 直接获取 databases = {1: 'Student', 2: 'School'} for k,v in databases.items(): print(k,v) ...
- ISO14229系列之二:诊断指令格式和相关概念
作者:autogeek 原文链接:http://www.cnblogs.com/autogeek/p/4458658.html 1. 简单的通信机制 其实诊断通信的机制很简单,可以类比client-s ...
- 1. c++实现最最最原始人的数字时钟
网课c++第一次作业,学到了iomanip库文件里的setw(),setfill()等函数,自己完成作业时搜着学到了Windows.h库文件里的sleep(),system("cls&quo ...
- 记网站部署中一个奇葩BUG
网页中引用的文件名不要带 adv 等 近日在写好一个网页后就把他部署到apache上测试,结果用chrome访问时有个背景图片总显示不出来,但是用firefox等却一切正常, 关键是我用windows ...
- 彻底理解Windows认证1
彻底理解Windows认证 一.Windows本地认证 1. 我的密码在哪里? 路径:C:\Windows\System32\config\SAM 当我们登录系统的时候,系统会自动的读取SAM文件中的 ...
- UCF Local Contest 2015 J 最小割
题意: 有
- Github上优秀的.NET Core项目
Github上优秀的.NET Core开源项目的集合.内容包括:库.工具.框架.模板引擎.身份认证.数据库.ORM框架.图片处理.文本处理.机器学习.日志.代码分析.教程等. Github地址:htt ...
- 利用ARP欺骗进行MITM(中间人攻击)
ARP欺骗主要骑着信息收集得作用,比如可以利用欺骗获取对方流量,从流量分析你认为重要得信息 0X01 了解ARP Arp协议 ARP(Address Resolution Protocol,地址解析 ...
- Mac-App Store 购买过程中出错 请求超时
打开终端 输入下面命令回车: defaults delete com.apple.appstore.commerce Storefront 接上步骤,继续输入下面命令回车: defaults writ ...