Live555编译实现过程

本文介绍了Live555,一个跨平台的开源C++流媒体库,支持RTP/RTCP、RTSP、SIP等协议。Live555能处理多种音视频编码格式,并被VLC和MPlayer等广泛应用。文章详细阐述了Live555的整体框架,包括UsageEnvironment、TaskScheduler、GroupSock和MediaSession等关键模块,以及OpenRTSP客户端的流程。此外,还提供了在Windows环境下使用VS2010编译Live555的步骤。
摘要由CSDN通过智能技术生成

简介:

  Live555是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议和RTP/RTCP、RTSP、SIP等的支持。Live555实现了对多重音视频编码格式的音视频数据的流化、接收和处理等支持,包括MPEG、H.263+、DV、JPEG视频和多重音频编码。同时由于良好的设计,Live555非常容易扩展对其他格式的支持。目前,Live555已经被用于多款播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer。


  Live555 Streaming Media is a set of open source(LGPL) C++ libraries for multimedia streaming. The libraries support open standards such as RTP/RTCP and RTSP for streaming, and can also manage video formats such as H.264, MPEG, VP8, and DV, and audio formats such as MPEG, AMR, AC-3 and Vorbis. It is designed in such a way that it can be easily extended to support more formats.


  Its RTSP/RTP/RTCP client implementation is used by VLC media player and MPlayer.


Live555 Streaming Media 整体框架

  UsageEnvironment模块是对系统环境的抽象,包括抽象类UsageEnvironment和TaskScheduler。

  UsageEnvironment主要用于消息的输入输出和用户交互功能;

  TaskScheduler实现事件的异步处理、事件函数的注册等,它通过维护一个异步读取源实现对诸如通信消息到达等事件的处理,通过使用DelayQueue实现对其他注册函数延时调度。该模块还包含一个HashTable类,在整个项目中都可以用到它。程序设计者通过自定义该抽象了类UsageEnvironment和TaskScheduler类的子类,就可以在特定环境(如GUI环境)中运行,不需要进行过多的修改。

  BasicUsageEnvironment模块是UsageEnvironment的一个控制台应用的实现。它针对控制台的输入输出和信号响应进行具体实现。

  GroupSock模块用于实现数据包的发送和接受。GroupSock主要被设计用来以支持多播,但它也完全支持单播通信。

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

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

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

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

                Source和Sink:这两个概念类似DirectShow中的Filter。Source抽象了数据源,比如通过RTP读取数据。Sink是数据消费者的抽象,比如把接受到数据存储到文件,该文件就是一个Sink。数据的流动可能经过多个Source和Sink。MediaSink是各种类型的Sink的基类,MediaSource是各种类型Source的基类&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值