liveMedia 项目(http://www.live555.com/)的源码包括四个基本的库、测试代码及Media Server。 四个基本库分别是:UsageEnvironment&TaskScheduler、groupsock、liveMedia、BasicUsageEnvironment。

    (1) UsageEnvironment 和TaskScheduler类,用于事件调度,实现异步读取事件的句柄的设置、错误信息输出。还有一个HashTable类,定义了一个通用的hash表。这些都是抽象类,在程序中实现自己的子类。

    (2) groupsock类,是对网络接口的封装,用于收发数据包。主要面向多播数据的收发,同时也支持单播数据的收发。

    (3) liveMedia库,是Live555最重要的模块。该模块声明了一个抽象类Medium,其他所有类都派生自该类,下面简要介绍这些类:

? RTSPClient:该类实现RTSP请求的发送和响应的解析,同时根据解析的结果创建对应的RTP会话。   

  1) MediaSession:用于表示一个RTP会话,一个MediaSession可能包含多个子会话(MediaSubSession),子会话可以是音频子会话、视频子会话等。   

  2) RTCPInstance:该类实现RTCP协议的通信。   

   3) Source和Sink:Source抽象了数据源,比如通过RTP读取数据。Sink是数据消费者的抽象,比如把接收到数据存储到文件,该文件就是一个 Sink。数据的流动可能经过多个Source和Sink。MediaSink是各种类型的Sink的基类,MediaSource是各种类型 Source的基类,各种类型的流媒体格式和编码的支持即是通过对这两个类的派生实现的。Source和Sink通过RTP子会话 (MediaSubSession)联系在一起。


(4) BasicUsageEnvironment 是UsageEnvironment 和TaskScheduler类的一个基本实现。

(5) 测试代码,在testProgram目录下,比如openRTSP等,这些代码有助于理解liveMedia的应用。

(6) Media Server是一个纯粹的RTSP服务器。支持多种格式的媒体文件:

      * TS流文件,MPEG传输流文件,扩展名 ts 
      * MPEG-1 or 2 Rogram (audio+video)流文件,扩展名 mpg 
      * MPEG-4视频基本流文件,扩展名 m4e 
      * H.264 视频基本流文件,扩展名 .264 
      * DV视频文件,扩展名 .dv
      * MP3文件,扩展名 mp3 
      * WAV文件(PCM),扩展名 wav 
      * AMR音频文件,扩展名 amr 
      * AAC文件,ADTS格式,扩展名 aac

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐