文档

可以查看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 的操作

  1. void sdpTest() {
  2. char *sdpStr = "v=0\r\n"
  3. "o=- 3761910912 3761910915 IN IP4 47.112.105.194\r\n"
  4. "s=butelmedia\r\n"
  5. "t=0 0\r\n"
  6. "m=audio 5061 RTP/AVP 98 97 99 0 8\r\n"
  7. "c=IN IP4 61.149.194.174\r\n"
  8. "a=sendrecv\r\n"
  9. "a=rtpmap:98 speex/16000\r\n"
  10. "a=rtpmap:97 speex/8000\r\n"
  11. "a=rtpmap:99 speex/32000\r\n"
  12. "a=rtpmap:0 PCMU/8000\r\n"
  13. "a=rtpmap:8 PCMA/8000\r\n"
  14. "a=ssrc:2066561799 cname:30000025\r\n"
  15. "a=mid:audio-1\r\n"
  16. "a=rtcp-mux\r\n"
  17. "a=audiodesc:mic_audio\r\n"
  18. "m=video 5061 RTP/AVP 97\r\n"
  19. "c=IN IP4 61.149.194.174\r\n"
  20. "a=sendrecv\r\n"
  21. "a=rtpmap:97 H264/90000\r\n"
  22. "a=fmtp:97 profile-level-id=42e01e; packetization-mode=1\r\n"
  23. "a=ssrc:931412768 cname:30000025\r\n"
  24. "a=mid:video-1\r\n"
  25. "a=rtcp-mux\r\n"
  26. "a=videodesc:camera\r\n"
  27. ;
  28. int ret = 0;
  29. sdp_message_t *sdp = NULL;
  30. char *pChar = NULL;
  31.  
  32. ret = sdp_message_init (&sdp);
  33. if(0!=ret) {
  34. printf("sdp_message_init error %d \n",ret);
  35. return;
  36. }
  37. ret = sdp_message_parse (sdp, sdpStr);
  38. if(0!=ret) {
  39. printf("parse error %d \n",ret);
  40. return;
  41. }
  42. pChar = sdp_message_a_att_field_get(sdp,0,0);
  43. if (pChar) printf("%s \n",pChar);
  44.  
  45. int size = strlen("sendonly");
  46. char * send = (char *)osip_malloc(size);
  47. memcpy(send,"sendonly",size);
  48. ret = sdp_message_a_attribute_add (sdp, 0, send, NULL);
  49. printf("sdp_message_a_attribute_add %d \n",ret);
  50. ret = sdp_message_a_attribute_del (sdp, 0, "sendrecv");
  51. printf("sdp_message_a_attribute_del %d \n",ret);
  52.  
  53. ret = sdp_message_to_str(sdp,&pChar);
  54. if(0!=ret) {
  55. printf("sdp_message_to_str %d \n",ret);
  56. return;
  57. }
  58. printf("sdp_message_to_str: %s \n",pChar);
  59. osip_free(pChar);
  60.  
  61. sdp_message_free(sdp);
  62.  
  63. }

  备注: 添加到sdp_message_t 的信息  需要动态分配的信息  因为 sdp_message_free 会释放

eXosip和osip详解的更多相关文章

  1. linux下编译eXosip、osip,以及UAC和UAS的例子

    从网站上看到了这样的一篇博文 :Windows下编译eXosip.osip,以及UAC和UAS的例子 (链接:http://www.cnblogs.com/dyllove98/archive/2013 ...

  2. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  3. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  4. EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解

    前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...

  5. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  6. Android Notification 详解(一)——基本操作

    Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...

  7. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

  8. Git初探--笔记整理和Git命令详解

    几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...

  9. Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

随机推荐

  1. 小记centos7下将未使用的磁盘空间重新分区挂载使用

    一块1TB的硬盘,用作samba共享,在安装系统时分区如下: /boot 2048M swap 512M / 229GB 剩下约 700GB左右未使用空间,在安装完系统后再使用 以下是详细操作,就几个 ...

  2. [Python]获取字典所有值

    方法一:Key Value 直接获取 databases = {1: 'Student', 2: 'School'} for k,v in databases.items(): print(k,v) ...

  3. ISO14229系列之二:诊断指令格式和相关概念

    作者:autogeek 原文链接:http://www.cnblogs.com/autogeek/p/4458658.html 1. 简单的通信机制 其实诊断通信的机制很简单,可以类比client-s ...

  4. 1. c++实现最最最原始人的数字时钟

    网课c++第一次作业,学到了iomanip库文件里的setw(),setfill()等函数,自己完成作业时搜着学到了Windows.h库文件里的sleep(),system("cls&quo ...

  5. 记网站部署中一个奇葩BUG

    网页中引用的文件名不要带 adv 等 近日在写好一个网页后就把他部署到apache上测试,结果用chrome访问时有个背景图片总显示不出来,但是用firefox等却一切正常, 关键是我用windows ...

  6. 彻底理解Windows认证1

    彻底理解Windows认证 一.Windows本地认证 1. 我的密码在哪里? 路径:C:\Windows\System32\config\SAM 当我们登录系统的时候,系统会自动的读取SAM文件中的 ...

  7. UCF Local Contest 2015 J 最小割

    题意: 有

  8. Github上优秀的.NET Core项目

    Github上优秀的.NET Core开源项目的集合.内容包括:库.工具.框架.模板引擎.身份认证.数据库.ORM框架.图片处理.文本处理.机器学习.日志.代码分析.教程等. Github地址:htt ...

  9. 利用ARP欺骗进行MITM(中间人攻击)

    ARP欺骗主要骑着信息收集得作用,比如可以利用欺骗获取对方流量,从流量分析你认为重要得信息 0X01  了解ARP Arp协议 ARP(Address Resolution Protocol,地址解析 ...

  10. Mac-App Store 购买过程中出错 请求超时

    打开终端 输入下面命令回车: defaults delete com.apple.appstore.commerce Storefront 接上步骤,继续输入下面命令回车: defaults writ ...