live555学习笔记(二)

live555学习笔记之源码结构分析


live项目包括了四个基本库、程序入口类(mediaServer)和一些测试代码(testProgs)。

四个基本库:

1、UsageEnvironment

环境类,用于错误信息的输出

包括三个抽象类UsageEnvironment、TaskScheduler、HashTable

UsageEnvironment、TaskScheduler用于事件调度,其中包括实现了对事件的异步读取、对事件句柄的设置及对错误信息的输出等;

HashTable

LIVE555内部实现了一个简单哈希表类BasicHashTable。在LIVE555中,有很多地方需要用到该哈希表类。如:媒体文件名与MediaSession的映射,SessionIDClientSession的映射,UserNamePassword的映射等。

2、BasicUsageEnvironment


主要是对UsageEnvironment中对应类的实现

包含具体环境类和具体TaskScheduler类。UsageEnvironment用于对错误信息的处理,BasicUsageEnvironment类用于以控制台方式输出错误信息。因此想要以其他方式输出错误信息的类,可以从UsageEnvironment派生。BasicTaskSchedule类继承自TaskScheduler抽象类,用以定义具体的调度策略。任何基于LIVE555的应用程序均需要定义自己的BasicEnvironmentTaskScheduler库。如果创建窗口应用程序,在重定义TaskScheduler时,需要与图形环境自己的事件处理框架集成。BasicTaskSheduler使用select模型实现事件的获取和处理。如果想使用更高效的IOCP模型,可以定义自己的BasicTaskScheduler类。BasicTaskScheduler内部有一个循环,循环读取队列中的消息并处理。整个基于BasicTaskScheduler的程序只有一个线程驱动。

3、groupsock

对各种socket操作的封装,用于收发数据。主要面向组播,但也可以进行单播的收发数据,仅支持UDP,不支持TCP

顾名思义,用于数据包的接收和发送,其同时支持多播和单播。

groupsock库中包括了GroupEIdGroupsockGroupsockHelperNetAddressNetInterface等类

其中Groupsock类有两个构造函数,一个是“for a source-independent multicast group”,另一个是“for a source-specific multicast group”;GroupsockHelper类主要用于读写Socket

4、liveMedia

其不仅包含了实现RTSP Server的类,还包含了针对不同流媒体类型(如TS流、PS流等)编码的类。在该库中,基类是Medium,层次关系非常清晰。

在该库中,有几个很重要的类,如RTSPServerServerMediaSessionRTPSinkRTPInterfaceFramedSource等。


SDP

    SDP是Session Description Protocol的缩写。是一个用来描述多媒体会话的应用层协议,它是基于文本的,用于会话建立过程中的媒体类型和编码方案的协商等。客户端会通过DESCRIBE命令请求查询指定文件的媒体信息。有不明白的可以看下上一篇介绍RTSP、RTP、RTCP的文章。


 

附:

RTSP服务器实例live555源代码分析

http://hi.baidu.com/studyarea/item/68b7ab3ff02bb8be134b1433

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值