开源项目live555学习心得(一)

最近因项目开发需要,开始学习开源项目 live555 ,特别将个人的一些学习心得做一下记录,如有理解不正确之处,欢迎各位朋友指出。

首先是源码的下载,这可以从 http://www.live555.com 上下载,同时上面亦提供了相关的文档,文档虽较为粗糙,但总比找不到任何文档说明强。当然,我在学习的过程中,也从网上查找了一段时间,收获还是有一点的,其中就有诸如: RTSP 服务器实例 live555 源代码分析、 live555 源代码简介、 live555 代码解读系列、基于 live555 rtp-rtcp 研究等文章。

我的学习是在 VS2008 环境下进行的,要能够在 VS 环境下顺利进行,还得做相关工作。 live 开源虽说是用 C++ 写的,代码风格也非常优秀,但是其是用 makefile 文件来做的,而对未接触过 makefile 文件的我是一个问题。幸运的是在网上偶然发现了一篇介绍在 VC6 环境下编译 live 的文章,然后照着上面所说的做,磕磕碰碰,编译成功了四个库并转移到了 VS2008 环境中。更幸运的是又是偶然在网上发现了一篇介绍用 VS2008 编译 live 的文章并提供了编译后的工程下载, download ,然后就开始了相对漫长的学习过程。

从程序的结构来看, live 项目包括了四个基本库、程序入口类(在 mediaServer 中)和一些测试代码(在 testProgs 中)。四个基本库是 UsageEnvironment BasicUsageEnvironment groupsock liveMedia

UsageEnvironment 包括抽象类 UsageEnvironment 和抽象类 TaskScheduler ,这两个类用于事件调度,其中包括实现了对事件的异步读取、对事件句柄的设置及对错误信息的输出等;该库中还有一个 HashTable ,这是一个通用的 HashTable ,在整个项目中都可以使用它,当然该 HashTable 也是一个抽象类。

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

groupsock ,顾名思义,用于数据包的接收和发送,其同时支持多播和单播。 groupsock 库中包括了 GroupEId Groupsock GroupsockHelper NetAddress NetInterface 等类,其中 Groupsock 类有两个构造函数,一个是“ for a source-independent multicast group ”,另一个是“ for a source-specific multicast group ”;而 GroupsockHelper 类主要用于读写 Socket

liveMedia 是很重要的一个库,其不仅包含了实现 RTSP Server 的类,还包含了针对不同流媒体类型(如 TS 流、 PS 流等)编码的类。在该库中,基类是 Medium ,层次关系非常清晰。在该库中,有几个很重要的类,如 RTSPServer ServerMediaSession RTPSink RTPInterface FramedSource 等。

http://www.live555.com 上的相关文档中提到穿透防火墙的问题,方法是开启一个 HTTP tunnel ,然后我们可以在 liveMedia 库中找到一个 RTSPOverHTTPServer 的类,该类解决了这样的问题。

mediaServer 下的 live555MediaServer 提供了 main 函数, DynamicRTSPServer 继承了 RTSPServer 并重写了虚函数 lookupServerMediaSession

整个项目的程序结构大体上就是这样,至于其中的一些具体实现细节,还需要进一步学习研究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值