Live555源码阅读笔记(一):源码介绍文档 及 源码目录结构

简介: Live555源码阅读笔记(一):源码介绍文档 及 源码目录结构

一、Live555介绍

1、Live555项目介绍

       Live555 是一个开源的流媒体项目,包括了几个使用开放标准协议(RTP/RTCP、RTSP、SIP)的 C++ 库。这些库可以在 Unix(包括 Linux 和 Mac OS X)、Windows 以及其他 POSIX 兼容系统编译,并用于构建流应用程序,例如源码里实现的程序 live555MediaServer 和 live555ProxyServer。另外,这些库还可用于流式传输、接收和处理 MPEG、H.265、H.264、H.263+、DV 或 JPEG 视频以及多种音频编码。它们可以轻松扩展以支持其他(音频/视频)编解码器,也可用于构建基本的 RTSP 或 SIP 客户端和服务器。在现有的媒体播放器程序中利用这些库添加多媒体流支持的有“VLC ”和“MPlayer”等。

2、官网及帮助文档介绍

Live555的官网地址: http://www.live555.com

Live555源码下载地址:http://www.live555.com/liveMedia/public/

Live555描述文档地址:http://www.live555.com/liveMedia/#description

Live555数据结构说明:http://www.live555.com/liveMedia/doxygen/html/annotated.html

Live555类层次结构介绍:http://www.live555.com/liveMedia/doxygen/html/inherits.html

Live555源文件简要说明:http://www.live555.com/liveMedia/doxygen/html/files.html


二、源码目录结构

源码解压后,进入live目录,会有几个文件夹,每个目录的源码会组成一个单独的库或多个应用程序。下面对几个重要文件夹做个简单介绍,更详细的介绍可以看官网的描述文档。

2018122814580746.png

1、UsageEnvironment

2018122814580746.png

这个目录包括了8个源码文件,编译完成后会生成 libUsageEnvironment.a 库文件,根据官网说明,这个库包含3个类,“UsageEnvironment”类和“TaskScheduler”类用于调度延迟任务、为异步读取事件分配任务 以及 输出错误/警告消息。 此外,“HashTable”类定义了通用哈希表的接口,供其余代码使用。

这几个都是抽象基类(有纯虚函数);它们必须在子类实例化后才能使用。 这些子类可以利用程序运行环境的特定属性,例如它的 GUI 和/或脚本环境。

2、BasicUsageEnvironment

2018122814580746.png

BasicUsageEnvironment 目录总共有12个源码文件,编译后生成libBasicUsageEnvironment.a,该库定义了“UsageEnvironment”类的一个具体实现(即子类),用于简单的控制台应用程序。 使用 select() 循环处理读取事件和延迟操作。

3、groupsock

2018122814580746.png

groupsock 目录总共有12个源码文件,编译后生成 libgroupsock.a,这个库中的类封装了网络接口和套接字,尤其是“Groupsock”类封装了一个用于发送/或接收多播数据报的套接字。

4、liveMedia

liveMedia目录的源码文件在300个左右,是Live555的核心库,定义了从“Medium”类继承的各个层次的类,主要用于处理各种流媒体类型和多媒体流的编解码

5、mediaServer

mediaServer目录包含4个文件,编译完成后生成 live555MediaServer,是利用前面的4个库实现的流媒体服务器

6、proxyServer

proxyServer目录包含1个源文件,编译完成后生成 live555ProxyServer,是利用前面的4个库实现的流媒体转发服务器

7、testProgs

该目录实现了一些简单的程序来演示如何使用这些库开发应用程序。例如:

testRTSPClient 演示了如何打开和接收由 RTSP URL(rtsp://xx.xx.xx.xx) 指定的媒体流;
testOnDemandRTSPServer 创建一个 RTSP 服务器,该服务器可以通过 RTP 单播从各种类型的媒体文件中按需流式传输。
playSIP 是一个命令行程序(类似于“openRTSP”),它调用 SIP 会话(使用 sip: URL),然后(可选)将传入的媒体流记录到文件中。
testMP3Streamer 反复读取 MP3 音频文件(名为“test.mp3”),并使用 RTP 将其流式传输到多播组 239.255.42.42,端口 6666(RTCP 使用端口 6667)。 该程序还有一个(可选的)内置 RTSP 服务器。
testMP3Receiver 则相反,它读取 MP3/RTP 流(来自同一个多播组/端口),并将重构的 MP3 流输出到“stdout”。 它还发送 RTCP 接收报告。 ◦ 或者,可以使用这些工具之一播放 MP3/RTP 流。

文件夹内,还有多个其他的演示程序,读者可以在需要用到时查询官网的说明文档。

8、WindowsAudioInputDevice

这是“liveMedia”库的“AudioInputDevice”抽象类的一个实现。 Windows 应用程序可以使用它从输入设备读取 PCM 音频样本。这个目录会构建了两个库:“libWindowsAudioInputDevice_mixer.lib”使用 Windows 的内置混音器;“libWindowsAudioInputDevice_noMixer.lib”不使用 Windows 的内置混音器。

总结

Live555的源码目录有8个文件夹,其中 UsageEnvironment、BasicUsageEnvironment、groupsock、liveMedia 四个目录比较重要,会生成4个库,我们在利用Live555开发自己的程序时会用到这几个库。

Live555源码阅读笔记(一):源码介绍文档 及 源码目录结构

Live555源码阅读笔记(二):UsageEnvironment 目录详解

Live555源码阅读笔记(三):BasicUsageEnvironment 目录详解

目录
相关文章
|
域名解析 网络协议 安全
Live555源码阅读笔记(四):groupsock 目录详解
Live555源码阅读笔记(四):groupsock 目录详解
348 0
Live555源码阅读笔记(四):groupsock 目录详解
|
存储 调度
Live555源码阅读笔记(三):BasicUsageEnvironment 目录详解-BasicTaskScheduler、DelayQueue、HandlerSet
Live555源码阅读笔记(三):BasicUsageEnvironment 目录详解-BasicTaskScheduler、DelayQueue、HandlerSet
174 0
Live555源码阅读笔记(三):BasicUsageEnvironment 目录详解-BasicTaskScheduler、DelayQueue、HandlerSet
|
调度 C++
Live555源码阅读笔记(二):UsageEnvironment 目录详解
Live555源码阅读笔记(二):UsageEnvironment 目录详解
155 0
Live555源码阅读笔记(二):UsageEnvironment 目录详解
|
数据安全/隐私保护 开发者 Windows
|
API C++ Windows
【Live555】Live555 Windows下使用VS2017编译教程
【Live555】Live555 Windows下使用VS2017编译教程
【Live555】Live555 Windows下使用VS2017编译教程
|
数据建模 C++ Windows
live555开发笔记(一):live555介绍、windows上msvc2017编译和工程模板
live555开发笔记(一):live555介绍、windows上msvc2017编译和工程模板
live555开发笔记(一):live555介绍、windows上msvc2017编译和工程模板