通过分析live库提供的例子程序 OpenRTSP,可以清晰地了解客户端接收来自网络上媒体数据的过程。注意,RTP协议和RTCP协议接收的数据分别是视音频数据和发送/接收状况的相关信息,其中,RTP协议只负责接收数据,而RTCP协议除了接收服务器的 消息之外,还要向服务器反馈。
main函数流程
void main(int argc,char *argv[])
{
1. 创建BasicTaskScheduler对象
2. 创建BisicUsageEnvironment对象
3. 分析argv参数,(最简单的用法是:openRTSP rtsp://172.16.24.240/mpeg4video.mp4)以便在下面设置一些相关参数
4. 创建RTSPClient对象
5. 由RTSPClient对象向服务器发送OPTION消息并接受回应
6. 产生SDPDescription字符串(由RTSPClient对象向服务器发送DESCRIBE消息并接受回应,根据回应的信息产生 SDPDescription字符串,其中包括视音频数据的协议和解码器类型)
7. 创建MediaSession对象(根据SDPDescription在MediaSession中创建和初始化MediaSubSession子会话对 象)
8. while循环中配置所有子会话对象(为每个子会话创建RTPSource和RTCPInstance对象,并创建两个GroupSock对象,分别对应 RTPSource和RTCPInstance对象,把在每个GroupSock对象中创建的socket描述符置入 BasicTaskScheduler::fReadSet中,RTPSource对象的创建的依据是SDPDescription,例如对于MPEG4 文件来说,视音频RTPSource分别对应MPEG4ESVideoRTPSource和MPEG4GenericRTPSource对象。 RTCPInstance对象在构造函数中完成将Socket描述符、处理接收RTCP数据的函数 (RTCPInstance::incomingReportHandler)以及RTCPInstance本身三者绑定在一个 HandlerDescriptor对象中,并置入BasicTaskScheduler::fReadHandler中。完成绑定后会向服务器发送一条 消息。)
9. 由RTSPClient对象向服务器发送SETUP消息并接受回应。
10. while循环中为每个子会话创建接收器(FileSink对象),在FileSink对象中根据子会话的codec等属性缺省产生记录视音频数据的文件 名,视音频文件名分别为:video-MP4V-ES-1和audio-MPEG4-GENERIC-2,无后缀名
11. while循环中为每个子会话的视音频数据装配相应的接收函数,将每个子会话中的RTPSource中的GroupSock对象中的SOCKET描述符, 置入BasicTaskScheduler::fReadSet中,并将描述符、处理接收RTP数据的函数 (MultiFramedRTPSource::networkReadHandler)以及RTPSource本身三者绑定在一个 HandlerDescriptor对象中,并置入BasicTaskScheduler::fReadHandler中,并将FileSink的缓冲区 和包含写入文件操作的一个函数指针配置给RTPSource对象,这个缓冲区将会在networkReadHandler中接收来自网络的视音频数据(分 析和去掉RTP包头的工作由RTPSource完成),而这个函数指针在networkReadHandler中被调用以完成将缓冲区中的数据写入文件。
12. 由RTSPClient对象向服务器发送PLAY消息并接受回应。
13. 进入while循环,调用BasicTaskScheduler::SingleStep()函数接受数据,直到服务器发送TREADOWN消息给客户 端,客户端接收到该消息后释放资源,程序退出。
}
live555源代码(VC6):http://download.csdn.net/detail/leixiaohua1020/6374387
相关推荐
对live555中的实例openRTSP进行了修改,使用类的形式形成客户端
live555(2015.11月的live555) 可以在VS2010下直接编译的工程。 其中OpenRtsp 可以直接在VS2010下编译出exe, 可以直接使用 OpenRtsp.exe URL
网上关于live555的资料相对较少,无奈只能自己下载源码,然后整理编译成库,为了大家使用live555方便,特意整理了openRTSP项目,亲测无误
详细介绍live555中openRTSP例子的一些具体细节,适合新人阅读。
live555 源码,包括各种测试程序,源代码,可兼容windows,linux,unix,ios系统
windows下的live555工程,直接用vs2008打开, BasicUsageEnvironment、UsageEnvironment、groupsock、liveMedia以及mediaServer与openRTSP。
windows 可编译的openrtsp源码,调试研究live555库的好工具。
为初学live555小伙伴整理了一个live555 for ...live555.20170912 for vs2010工程,可正常编译出openrtsp和mediaserver 目前测试过 win10 64位 vs2020旗舰版本(精简版) 生成的openRTSP.exe和mediaServer.exe可正常使用。
windows下编译的live555命令行程序 代码是live.2010.07.29.tar.gz
已经配置好的VC6、VC8、Mobile 6的可编译工程代码,包含配置以及mediaServer/openRTSP测试说明文档。
前段时间因工作需要,研究了一下liveMedia源代码,文档中介绍了一些流媒体协议,对代码结构进行了详细阐述,尤其是对live555MediaServer和openRTSP代码的分析。
自己编译的,用于调试live555.lib
openRtsp 跨平台的rtsp客户端
这是一个编译好的在windows平台运行的openrtsp工具,方便在进行Rtsp开发和测试过程中进行问题的排查和检验。
openRTSP 利用rtsp 得到摄像头的录像mp4文件 工程中有openRTSP的windows 重新 编译的exe
is a command-line program that can be used to open, stream, receive, and (optionally) record media streams that are specified by a RTSP URL - i.e., an URL that begins with rtsp://
OpenRTSP C++源码, 亲测VS2013成功编译
liv555的vs2008工程,openRTSP,testRTSPClient,mediaServer
20120724_RTSP录像的几种方式1
使用rtsp点播的VC源代码!!!!!!