live555--WRtspSvr例子

类结构如下:

RTSPServer    Server类

RTSPClientSession  客户会话类

BasicTaskScheduler 用于select模型的SOCKET集的轮循

ServerMediaSession 媒体会话集类

ServerMediaSubsession 媒体会话类

class WAVAudioFileServerMediaSubsession : public ServerMediaSubsession  音频文件会话类

class WAVAudioFileSource  : public FramedSource    source类

StreamState ??

RTPSink 打包类

CBankSocket   SOCKET类,用于select模型的监听端

RTPInterface   SOCKET发送类

CUtility 工具类

 

1 创建RTSPServer    

RTSPServer fRTSPServer(554);

成员CbankSocket用来接收命令。

 2创建MediaSession 

ServerMediaSession* sms

= new ServerMediaSession(streamName,  streamName,descriptionString);

3 添加SubSession

sms->addSubsession(WAVAudioFileServerMediaSubsession::createNew(inputFileName,   reuseFirstSource, "audio",convertToULaw));

对应每个音视频。

4 addServerMediaSession

fRTSPServer.addServerMediaSession(sms);

每个RTSPClientSession对应多个ServerMediaSubsession。

5 开始运行

试用select模型进行SOCKET处理。

handleCmd_DESCRIBE

创建数据源

ServerMediaSession::generateSDPDescription->ServerMediaSubsession::sdpLines->sdpLines

{

   createNewStreamSource

{

WAVAudioFileSource*wavSource=WAVAudioFileSource::createNew(fFileName);

}

}

handleCmd_OPTIONS

发送"OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE";                                                      

handleCmd_SETUP

创建发送工具

subsession->getStreamParameters

{

RTPSink* rtpSink = createNewRTPSink

   New Sink;  //RTPSink用RTPInterface来操作WAVAudioFileSource。

}

}

      new StreamState(rtpSink); 

Sink下有RTPInterface(用来发数据),

RTPSink是ServerMediaSubsession的成员。

handleCmd_PLAY 

开始发送

ServerMediaSubsession::startStream->StreamState::startPlaying->RTPSink::startPlaying->RTPSink::continuePlaying

->RTPSink::buildAndSendPacket->RTPSink::packFrame->afterGettingFrame->afterGettingFrame1->RTPSink::sendPacketIfNecessary->RTPSink::buildAndSendPacket...,已经形成循环。

handleCmd_TEARDOWN

停止发送

fSessionIsActive =False;

紧接着会执行      if (!fSessionIsActive){ delete this; }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山西茄子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值