Darwin Streaming Server
流媒体服务器小结
Darwin Streaming Server
(简称
DSS
)是
QuickTime Streaming Server
开放式源代
码的版本,同时支持
FreeBSD
、
Linux
、
Solaris
、
Windows
NT
和
Windows
2000
等多个操作系统,是当前所有同类产品中支持平台最多的一个。
DSS
源代码完全采用标准
C++
语言写成,每个
C++
类都对应着一对和类同名
的
.h/.cpp
文件。
整个服务器包括多个子系统,
分别存放在独立的工程内,
其中,
最为重要的是基
础功能类库(
CommonUtilitiesLib
)和流化服务器(
StreamingServer
)两个工程,
前者是整个系统的通用代码工具箱,
包括了线程管理、
数据结构、
网络和文本分
析等多个功能模块。后者包含了
DSS
对多个国际标准的实现,是整个服务器的
主工程。
DSS
实现了四种
IETF
制定的国际标准,
分别是:
实时流传输协议
RTSP
(
Real-time
Streaming
Protocol,
RFC
2326
)、实时传输协议(
RTP
Real-time
Transfer
Protocol
,
RFC
1889
)、实时传输控制协议
RTCP
(
Real-time
Transport
Control Protocol
,
RFC 1889
)
、
会话描述协议
SDP
(
Session Description Protocol
,
RFC 2327
)。
核心服务器通过创建四种类型的线程来完成自己的工作,具体如下:
1.
主线程
(main
thread):
这个线程负责检查服务器是否需要关闭,
记录状态信息,
或者打印统计信息。
2.
空闲任务线程
(Idle
Task
thread):
空闲任务线程管理一个周期性的任务队列,
该任务队列有两种类型:超时任务和套接口任务。
3.
事件线程
(Event
thread):
事件线程负责侦听套接口事件,
比如收到
RTSP
请求
和
RTP
数据包,然后把事件传递给任务线程。
4.
一个或多个任务线程
(Task
threads):
任务线程从事件线程中接收
RTSP
和
RTP
请求,然后把请求传递到恰当的服务器模块进行处理,把数据包发送给客户端。