开源项目live555学习心得(一)
2011-02-28 11:36
204 查看
http://blog.csdn.net/huangxinfeng/archive/2010/03/11/5369391.aspx
最近因项目开发需要,开始学习开源项目
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
。
整个项目的程序结构大体上就是这样,至于其中的一些具体实现细节,还需要进一步学习研究。
最近因项目开发需要,开始学习开源项目
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
。
整个项目的程序结构大体上就是这样,至于其中的一些具体实现细节,还需要进一步学习研究。
相关文章推荐
- 开源项目live555学习心得(二)
- 开源项目live555学习心得(二)
- 开源项目live555学习心得3
- 开源项目live555学习心得(三)
- 开源项目live555学习心得(二)
- 开源项目live555学习心得(一)
- 开源项目live555学习心得
- 开源项目live555学习心得
- 开源项目live555学习心得(二)
- 开源项目live555学习心得(三)
- 开源项目live555学习心得(一)
- 开源项目live555学习心得
- 开源项目live555学习心得(二)
- 开源项目live555学习心得(二)
- (重要)开源项目live555学习心得
- 开源项目live555学习心得(一)
- 开源项目live555学习心得(一)
- 开源项目live555学习心得(三)
- 开源项目live555学习心得1
- Go语言开源项目vitess学习心得