文档

可以查看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详解的更多相关文章

  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. Golang robfig/cron 实现解析

    ​    robfig/cron是GO语言中一个定时执行注册任务的package,  最近我在工程中使用到了它,由于它的实现优雅且简单(主要是简单),所以将源码过了一遍,记录和分享在此. 文档:htt ...

  2. 06-HTML

    今日知识 1. HTML基本语法 2. 特殊符号表示 3.总结 HTML 1. Hyper Text Mark Language 超文本标记语言 * 超文本: * 超文本是用超链接的方法,将各种不同空 ...

  3. Flutter Widgets 之 FutureBuilder

    注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 展示异步任务状态 当有一个Future(异步)任务需要展示 ...

  4. JS杨辉三角形

    题目:打印出杨辉三角形(要求打印出10行如下图) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 分析: 1.第1列或列数=行数时,value=1 2.其余的值 ...

  5. Pythone是什么鬼?

    认识 Python 人生苦短,我用 Python -- Life is short, you need Python 目标 Python 的起源 为什么要用 Python? Python 的特点 Py ...

  6. Python当中的len(),str(),input(),print()函数当中值得注意的点

    在python当中很多时候会用到这三个函数,这也是考试当中十分常见的考点,这里做一些记录: 1.len():用于测量变量当中的字符串/元组等的长度 举个例子: >>> stt=&qu ...

  7. SAP Basis DEBUG改表数据权限角色设计

    SAP Basis DEBUG改表数据权限角色设计 项目实践中,因种种原因不得不要通过debug才能解决一些特定的问题,所以就涉及到了debug权限角色的定义了. DEBUG的权限,无非就是: 1)数 ...

  8. 「数据挖掘入门系列」Python快速入门

    Python环境搭建 本次入门系列将使用Python作为开发语言.要使用Python语言,我们先来搭建Python开发平台.我们将基于Python 2.7版本.以及Python的开发发行版本Anaco ...

  9. MySQL存储过程和游标

    一.存储过程 什么是存储过程,为什么要使用存储过程以及如何使用存储过程,并且介绍创建和使用存储过程的基本语法. 什么是存储过程: 存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些 ...

  10. 记一个开发是遇到的坑之Oralce 字符串排序

    简单描述一下情况,就是存储过程中用一个字符串类型的字段作为患者就诊的排序号,结果莫名发现叫完1号后叫了11.12等患者.用户的反馈不一定准确,自己加了日志的,赶紧拷贝日志来观察一下.结果发现实际情况就 ...