修改SDP 读取SDP

http://www.cnblogs.com/jizha/archive/2013/06/07/freeswitch_sdp.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SDP(Session Description Protocol)是一种文本协议,用于描述多媒体会话的参数,如音频、视频和数据流的编解码格式、传输方式等。C++中可以使用第三方库来解析SDP文件。 以下是使用libosip2库解析SDP文件的示例代码: ```c++ #include <iostream> #include <osip2/osip.h> #include <osipparser2/osip_parser.h> int main(int argc, char **argv) { osip_message_t *msg = nullptr; std::string sdp_file_path = argv[1]; // 读取SDP文件 FILE *sdp_file = fopen(sdp_file_path.c_str(), "rb"); if (sdp_file == nullptr) { std::cerr << "Failed to open SDP file." << std::endl; return -1; } fseek(sdp_file, 0, SEEK_END); long sdp_file_size = ftell(sdp_file); rewind(sdp_file); char *sdp_buffer = new char[sdp_file_size + 1]; fread(sdp_buffer, sdp_file_size, 1, sdp_file); sdp_buffer[sdp_file_size] = '\0'; fclose(sdp_file); // 解析SDP文件 int result = osip_message_init(&msg); if (result != 0) { std::cerr << "Failed to initialize osip message." << std::endl; return -1; } osip_message_parse(msg, sdp_buffer, sdp_file_size); // 获取SDP信息 osip_body_t *body = nullptr; result = osip_message_get_body(msg, 0, &body); if (result != 0) { std::cerr << "Failed to get osip message body." << std::endl; return -1; } char *sdp = nullptr; osip_body_to_str(body, &sdp); std::cout << sdp << std::endl; // 释放资源 osip_free(sdp_buffer); osip_message_free(msg); return 0; } ``` 需要注意的是,该示例代码中使用的是libosip2库,需要先安装该库。在Ubuntu上可以使用以下命令进行安装: ``` sudo apt-get install libosip2-dev ``` 在Windows上可以使用Cygwin或MinGW等工具进行编译。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值