一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(二)用户接口层之RtspClient类及其构造函数

RtspClient类是myRTSPClient函数库所有特性集中实现的地方。

主要为用户提供:

1. RTSP协议通信接口函数,如DoOPTIONS();

2. RTSP账号、密码设置函数,如SetUsername();

3. 音视频码流接收函数,如GetVideoData()。

本篇主要介绍RtspClient的构造函数和析构函数。

一、RtspClient::RtspClient()

 RtspClient::RtspClient():
RtspURI(""), RtspCSeq(), RtspSockfd(-), RtspIP(""), RtspPort(PORT_RTSP), RtspResponse(""), SDPStr(""),
VPS(""), SPS(""), PPS(""), CmdPLAYSent(false), GetVideoDataCount(GET_SPS_PPS_PERIOD),
Username(""), Password(""), Realm(""), Nonce("")
{
MediaSessionMap = new map<string, MediaSession>;
AudioBuffer.Size = ;
VideoBuffer.Size = ;
if((AudioBuffer.Buf = (uint8_t *)malloc(BUFSIZ)))
AudioBuffer.Size = BUFSIZ;
if((VideoBuffer.Buf = (uint8_t *)malloc(BUFSIZ)))
VideoBuffer.Size = BUFSIZ; }

其中GetVideoDataCount是一个计数周期长度,仅当接收H264/H265视频数据时有用。在调用GetVideoData()时,表示每当接收到"GetVideoDataCount"个NALU数据包之后,重新将SPS和PPS(针对H265还有VPS)加入到下一个接收到的NALU数据包中。该功能是为了防止SPS和PPS(针对H265还有VPS)丢失。可以通过GetVideoData()的参数开启/关闭,默认是开启的。

MediaSessionMap是一个媒体会话映射表,一般就audio和video这2个值,其中保存着和音视频通信会话相关的基本信息,并提供“RTP音视频传输解析层”的相关接口。

AudioBuffer和VideoBuffer是用于暂存一帧数据的缓冲区,最好保证其大小大过一帧数据。

二、RtspClient::RtspClient(string uri)

相较于RtspClient::RtspClient(),该构造函数不同的一点就是指定了RtspURI这个成员变量,如"rtsp://127.0.0.1/ansersion"。该变量也可通过SetURI()设置。

三、RtspClient::~RtspClient()

释放构造函数申请的内存。

上一篇                       回目录                      下一篇

上一篇:《Programming WPF》翻译 第6章 4.应用程序全球化


下一篇:MyEclipse Server view报错解决方法