硬刚live555源码(七)--testRTSPClient之DESCRIBE处理

本文详细分析了RTSP协议中DESCRIBE命令的处理过程,通过响应的SDP描述创建MediaSession和MediaSubsession。主要内容包括SDP行的解析、子会话的创建、端口和协议的设定,以及RTP和RTCP套接字的初始化。通过对m开头行的处理,确定音视频媒体传输协议,并进行源对象的创建,如H264VideoRTPSource。
摘要由CSDN通过智能技术生成
  • 功能描述

   RTSP中的一个步骤,describe命令可以让rtsp播控器从服务器获取媒体资源的信息;根据应答的SDP描述建立session和对应的音视频的subsession;

抓包获取describe命令应答如下:

每行都有携带不同的信息。其中最重要的是m开头的两行内容,描述了音视频媒体传输使用的协议等信息m=video 0 RTP/AVP 96 和 m=audio 0 RTP/AVP 14。

二、代码分析   

命令describe的应答回调函数continueAfterDESCRIBE,主要的操作建立session和subsession,然后遍历subsession,初始化和发送setup命令。取主要的代码分析。

void continueAfterDESCRIBE(RTSPClient* rtspClient, int resultCode, char* resultString) {

  …

  // 根据应答的sdp建立session 和subsession

  // MediaSession* newSession = new MediaSession(env);

  // newSession->initializeWithSDP(sdpDescription)

  scs.session = MediaSession::createNew(env, sdpDescription);

  …

  setupNextSubsession(rtspClient);

  …

}

解析sdp内容,建立MediaSession

Boolean MediaSession::initializeWithSDP(char const* sdpDescription) {

   // 解析每行内容,碰到m开头的进行特殊处理

while (1) {

  // 获取一行字符串

      if (!parseSDPLine(sdpLine, nextSDPLine)) return False;

      //##### We should really check for the correct SDP version (v=0)

      // m开头的退出

      if (sdpLine[0] == 'm') break;

      sdpLine 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值