【RTSP/RTP流媒体】9、编写简单的RTSP服务器

9.1、RTSP服务器类结构

【RTSP/RTP流媒体】9、编写简单的RTSP服务器_第1张图片

类名

功能

CThread

线程类,用于创建线程

CSock

套接字基类

CListenSock

监听套接字类,继承自CSock,用于监听并创建新的套接字

CTcpSock

TCP套接字类,继承自CSock,完成TCP连接、数据收发

CUdpSock

UDP套接字类,继承自CSock,完成UDP数据包收发

CRtspSvr

RTSP服务,创建并管理RTSP会话

CRtspSession

RTSP会话类,处理RTSP请求、响应

CDataSrc

数据源类,完成RTP打包

CTsFileReader

TS文件读取类,完成TS文件数据的读取

9.2、RTTSP服务器时序

【RTSP/RTP流媒体】9、编写简单的RTSP服务器_第2张图片

l  USER调用CRtspSvr::Start启动RTSP服务。

l  RTSP CLIENT请求建立TCP连接。

l  CRtspSvr创建CRtspSession对象。

l  CRtspSvr调用CRtspSession::Start启动RTSP会话。

l  RTSP CLIENT发送OPTIONS请求。

l  CRtspSession生成OPTIONS响应并回复。

l  RTSP CLIENT发送DESCRIBE请求。

l  CRtspSession调用CDataSrc::Init初始化数据源。

l  CDataSrc调用CTsFileReader::Init打开并初始化TS文件。

l  CDataSrc调用CTsFileReader::GetRange获取TS文件时长。

l  CRtspSession调用CDataSrc::GetSdp获取SDP信息。

l  CRtspSession生成DESCRIBE响应并回复。

l  RTSP CLIENT发送SETUP请求。

l  CRtspSession生成SETUP响应并回复。

l  RTSP CLIENT发送PLAY请求。

l  CRtspSession调用CDataSrc::GetRange获取媒体时长。

l  CRtspSession调用CDataSrc::PerPlay播放前准备。

l  CDataSrc调用CTsFileReader::SeekByTime将文件定位到对应位置。

l  CRtspSession调用CDataSrc::GetMediaInfo获取媒体信息。

l  CRtspSession调用CDataSrc::Play开始打包并发送数据。

l  CRtspSession生成PLAY响应并回复。

l  RTSP CLIENT发送PAUSE请求。

l  CRtspSession调用CDataSrc::Pause暂停发送数据。

l  CRtspSession生成PAUSE响应并回复。

l  RTSP CLIENT发送TEARDOWN请求。

l  CRtspSession调用CDataSrc::Pause暂停发送数据。

l  CRtspSession生成TEARDOWN响应并回复。

l  CRtspSession回调CRtspSvr::notify_fun通知CRtspSvr。

l  CRtspSvr销毁CRtspSession对象。

9.3、RTSP服务器源码

你可能感兴趣的:(RTSP/RTP)