`

live555 分析—— OpenRtsp

 
阅读更多

通过分析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

原文地址:http://blog.chinaunix.net/uid-22535463-id-262464.html

分享到:
评论

相关推荐

    live555 的openRTSP 改写

    【标题】"live555 的openRTSP 改写" 在实时流媒体领域,live555是一个广泛使用的开源库,它提供了多种协议(如RTSP、RTCP、RTP)的支持,使得开发者能够创建复杂的多媒体应用。openRTSP是live555库中的一个命令行...

    live555通过VS2013编译,自己整理的,附加openRTSP项目

    《使用Live555在VS2013下编译及OpenRTSP实践》 Live555是一个开源的多媒体框架,广泛应用于实时流媒体协议的实现,如RTSP(Real-Time Streaming Protocol)、RTCP(Real-Time Transport Control Protocol)以及RTP...

    live555(2015.11月的live555,比较新的) 可以在VS2010下直接编译的工程

    本文将详细介绍如何利用VS2010编译这个版本的Live555,并特别关注OpenRtsp的编译和使用。 首先,我们需要了解Live555的核心功能。Live555提供了一整套用于处理实时流媒体协议的API,包括RTSP (Real Time Streaming ...

    基于Live555的从多个摄像头实时获取H264/265数据并转发的Rtsp服务器

    【标题】"基于Live555的从多个摄像头实时获取H264/265数据并转发的Rtsp服务器"所涉及的核心技术主要包括以下几个方面: 1. **Live555**: Live555是一个开源的多媒体流媒体库,主要用于实现Real-Time Transport ...

    live555在mips嵌入平台上的移植

    执行`make`命令,编译生成Live555相关的库文件和可执行程序,如`libliveMedia.a`、`libgroupsock.a`、`libBasicUsageEnvironment.a`、`libUsageEnvironment.a`及`openRTSP`、`live555ProxyServer`等。 ### 8. 部署...

    openRTSP使用流程解析

    在 live555 中,openRTSP 是一个常用的 RTSP 客户端工具,用于接收和播放 RTSP 流媒体。下面我们将详细介绍 openRTSP 的使用流程。 首先,在命令行中输入 openRTSP 的命令,例如:openRTSP rtsp://192.168.1.103/...

    live555 内部结构分析

    《live555内部结构分析》 在深入探讨live555之前,我们先要理解其核心概念。Live555是一个开源的C++库,主要用于实现实时流媒体协议(如RTSP、RTP和RTCP)的服务端和客户端应用。它在流媒体领域具有广泛的应用,因...

    windows 可编译的openrtsp源码

    OpenRTSP的源代码包含在Live555库中,它是一个简单的命令行程序,可以用来测试RTSP服务器的功能。源代码提供了学习RTSP协议和Live555库工作原理的机会,对于开发者来说,它是理解和调试RTSP流媒体服务的重要工具。 ...

    rtsp客户端 openRtsp

    【压缩包子文件的文件名称列表】"live"可能指的是与Live555库相关的文件,包含了openRtsp的源代码、编译脚本、文档和其他辅助文件。这些文件可能包括: 1. 源代码文件:通常以.c或.cpp为扩展名,包含了openRtsp和...

    live.2017.06.04.tar.gz_Windows live555_live555_live555 2017_live

    live555 源码,包括各种测试程序,源代码,可兼容windows,linux,unix,ios系统

    live555简介

    Live555是一个强大的开源库,专为流媒体服务而设计,它支持多种标准协议,如RTP(Real-time Transport Protocol)、RTCP(Real-time Transport Control Protocol)和RTSP(Real-Time Streaming Protocol)。...

    live555经典代码分析

    live555是一个开源的流媒体处理库,主要支持实时流协议(RTSP)和实时传输协议(RTP),广泛应用于流媒体的转发和点播。live555的源代码主要由四个核心库构成,它们分别是UsageEnvironment&TaskScheduler、groupsock...

    vs2008下的live555工程

    windows下的live555工程,直接用vs2008打开, BasicUsageEnvironment、UsageEnvironment、groupsock、liveMedia以及mediaServer与openRTSP。

    Live555简单介绍

    **Live555 简介** Live555 是一个功能强大的开源C++库,专为流媒体处理提供服务,适用于多种操作...openRTSP客户端展示了如何利用Live555库进行RTSP通信的典型步骤,从初始化环境到接收流媒体数据,整个过程清晰明了。

    live555.20170912_for_vs2010工程

    为初学live555小伙伴整理了一个live555 for ...live555.20170912 for vs2010工程,可正常编译出openrtsp和mediaserver 目前测试过 win10 64位 vs2020旗舰版本(精简版) 生成的openRTSP.exe和mediaServer.exe可正常使用。

    openRTSP.exe

    windows下编译的live555命令行程序 代码是live.2010.07.29.tar.gz

    openRTSP.7z

    2. **数据记录**:它可以记录RTSP流到本地文件,便于离线分析或回放。 3. **流解码与播放**:openRTSP支持多种编码格式,如H.264、AAC等,可以将接收到的流解码并显示或播放。 4. **故障排查**:在开发或调试RTSP...

    openRTSP 利用rtsp 得到摄像头的录像mp4文件

    openRTSP是Live555 Media Server项目的一部分,它提供了一个命令行工具,能够播放、录制RTSP流。 首先,让我们详细了解RTSP。RTSP是一种应用层协议,由IETF定义,其主要目的是提供对连续媒体(如音频、视频)的实时...

    windows 下 编译的 openrtsp.exe

    自己编译的,用于调试live555.lib

Global site tag (gtag.js) - Google Analytics