zoukankan      html  css  js  c++  java
  • 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
    "
        "o=- 3761910912 3761910915 IN IP4 47.112.105.194
    "
        "s=butelmedia
    "
        "t=0 0
    "
        "m=audio 5061 RTP/AVP 98 97 99 0 8
    "
        "c=IN IP4 61.149.194.174
    "
        "a=sendrecv
    "
        "a=rtpmap:98 speex/16000
    "
        "a=rtpmap:97 speex/8000
    "
        "a=rtpmap:99 speex/32000
    "
        "a=rtpmap:0 PCMU/8000
    "
        "a=rtpmap:8 PCMA/8000
    "
        "a=ssrc:2066561799 cname:30000025
    "
        "a=mid:audio-1
    "
        "a=rtcp-mux
    "
        "a=audiodesc:mic_audio
    "
        "m=video 5061 RTP/AVP 97
    "
        "c=IN IP4 61.149.194.174
    "
        "a=sendrecv
    "
        "a=rtpmap:97 H264/90000
    "
        "a=fmtp:97 profile-level-id=42e01e; packetization-mode=1
    "
        "a=ssrc:931412768 cname:30000025
    "
        "a=mid:video-1
    "
        "a=rtcp-mux
    "
        "a=videodesc:camera
    "
        ;
        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 
    ",ret);
            return;
        }
        ret = sdp_message_parse (sdp, sdpStr);
        if(0!=ret) {
            printf("parse error %d 
    ",ret);
            return;
        }
        pChar = sdp_message_a_att_field_get(sdp,0,0);
        if (pChar) printf("%s 
    ",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 
    ",ret);
        ret = sdp_message_a_attribute_del (sdp, 0, "sendrecv");
        printf("sdp_message_a_attribute_del %d 
    ",ret);
    
        ret = sdp_message_to_str(sdp,&pChar);
        if(0!=ret) {
            printf("sdp_message_to_str  %d 
    ",ret);
            return;
        }
        printf("sdp_message_to_str: %s 
    ",pChar);
        osip_free(pChar);
    
        sdp_message_free(sdp);
    
    }
    

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

  • 相关阅读:
    Linux 进程学习(四) sigaction 函数
    Netty 编解码奥秘
    我的博客即将同步至 OSCHINA 社区,这是我的 OSCHINA ID:护国小将,邀请大家一同入驻:https://www.oschina.net/sharingplan/apply
    Netty数据如何在 pipeline 中流动
    PLM系统安装四:主卷服务安装(FSC缓存服务器plm4IP:42.20)
    Linux系统信息和进程相关命令(CPU,内存,进程)
    SAN交换机配置的备份还原,固件升级
    san交换机的级联
    PLM系统安装五(2):Corporate服务安装plm1IP:42.106
    第三步:服务器虚拟化XenServer实施部署文档
  • 原文地址:https://www.cnblogs.com/swing07/p/10835866.html
Copyright © 2011-2022 走看看