Live555库结构及其核心概念

Live555库结构及其核心概念

核心概念:

  1. 会话(Session): 会话是LIVE555中的核心概念之一,代表了一个媒体流的抽象。会话可以包含一个或多个媒体子会话,每个子会话表示媒体流的一部分,如音频或视频。一个会话可以被媒体服务器(如RTSP服务器)发布和管理。

  2. 媒体子会话(Media Subsession): 媒体子会话是会话的一部分,代表了一个具体的媒体流,如音频或视频流。每个媒体子会话包含了与特定媒体流相关的信息,如传输协议、端口号、编码格式等。

  3. 会话管理器(Session Manager): 会话管理器是用于创建、管理和控制会话的对象。它允许你添加、删除和配置会话,以及为会话分配唯一的会话标识符。

  4. 任务调度器(Task Scheduler): 任务调度器是LIVE555库的核心组件之一,用于管理不同任务的执行。它负责调度、排队和执行任务,包括媒体数据的发送和接收,以及定时任务的处理。

  5. RTP(Real-time Transport Protocol): RTP是一种用于实时传输音频和视频数据的协议。LIVE555提供了RTP协议的实现,使你可以轻松地发送和接收RTP数据包。

  6. RTCP(RTP Control Protocol): RTCP是RTP的控制协议,用于监视和管理RTP流。LIVE555库包括了RTCP协议的实现,以支持流媒体的质量控制和同步。

  7. RTSP(Real-Time Streaming Protocol): RTSP是用于流媒体控制和会话管理的协议。LIVE555库提供了一个RTSP服务器和客户端的实现,允许你创建和管理实时流媒体会话。

库结构:

LIVE555库的结构包括以下关键组件:

UsageEnvironmen

用于调度延迟事件,为异步读取事件分配处理程序,以及输出错误/警告消息。此外,“HashTable”类定义了一个泛型哈希表的接口,供其余代码使用。这些都是抽象基类;它们必须被子类化才能在实现中使用。这些子类可以利用程序运行环境的特定属性——例如,它的GUl和/或脚本环境。

UsageEnvironmen

  • COPYINGCOPYING.LESSER: 许可证文件的符号链接,指向根目录的许可证文件。
  • HashTable.cpp: 包含哈希表的实现。
  • include: 包含了头文件,定义了使用Live555库的环境组件的接口。
  • Makefile、Makefile.head 和 Makefile.tail: 用于构建使用环境组件的Makefile文件。
  • strDup.cpp: 包含字符串复制相关的代码。
  • UsageEnvironment.cpp: 包含使用Live555库的环境组件的实现。

Groupsock

此库中的类封装了网络接口和套接字。特别地,“Groupsock”类封装了一个用于发送(和/或接收)多播数据报的套接字。

  • GroupEId.cpp: 实现了组播地址的管理。
  • Groupsock.cpp: 包含了多播组套接字的实现。
  • GroupsockHelper.cpp: 包含多播组套接字辅助功能的实现。
  • include: 包含了头文件,用于声明多播组相关组件的接口。
  • inet.c: 包含了与网络地址相关的C语言代码。
  • IOHandlers.cpp: 实现了输入/输出处理器。
  • Makefile、Makefile.head 和 Makefile.tail: 用于构建 groupsock 组件的 Makefile 文件。

liveMedia

这个库定义了一个类层次结构——植根于“Medium”类——用于各种流媒体类型和编解码器。

  • AudioInputDevice.cpp: 处理音频输入设备相关的功能。
  • RTPSink.cppRTPSource.cpp: 实现了 RTP 数据包的发送和接收。
  • RTSPServer.cpp 和其他文件: 实现了 RTSP 服务器相关功能。
  • H264VideoFileSink.cpp 和其他文件: 处理 H.264 视频相关的功能。
  • MPEG1or2AudioRTPSink.cpp 和其他文件: 处理 MPEG1/2 音频数据的 RTP 发送。
  • MP3FileSource.cpp 和其他文件: 处理 MP3 音频文件相关的功能。
  • VP8VideoRTPSink.cpp 和其他文件: 处理 VP8 视频相关的 RTP 发送。
  • include: 包含了大量头文件,声明了各种媒体类型、协议和功能的接口。
  • Makefile、Makefile.head 和 Makefile.tail: 用于构建 liveMedia 组件的 Makefile 文件。

BasicUsageEnvironment

这个库定义了“UsageEnvironment”类的一个具体实现(即子类),用于简单的控制台应用程序。读取事件和延迟操作使用select()循环处理。

BasicUsageEnvironment: 这是一个文件夹,包含了与 Live555 库的基本使用环境组件相关的文件。

  • BasicHashTable.cpp: 实现了一个基本的哈希表数据结构。
  • BasicTaskScheduler0.cppBasicTaskScheduler.cpp: 实现了任务调度器相关的功能。
  • BasicUsageEnvironment0.cppBasicUsageEnvironment.cpp: 包含了用于基本使用环境的实现代码。
  • COPYING 和 COPYING.LESSER: 这两个文件是许可证文件的符号链接,指向上层目录的许可证文件。
  • DelayQueue.cpp: 包含了延迟队列的实现。
  • include: 这是一个文件夹,包含了头文件(.hh 文件),用于声明各种 BasicUsageEnvironment 组件的接口。
  • Makefile、Makefile.head 和 Makefile.tail: 这些是用于构建 BasicUsageEnvironment 组件的 Makefile 文件。

testProgs

这个目录实现了一些简单的程序,它们使用“BasicUsageEnvironment”来演示如何使用这些库开发应用程序

RTSP client

testRTSPClient是一个命令行程序,它向您展示了如何打开和接收由RTSP URL指定的媒体流-即,以RTSP://l开头的URL。在这个演示应用程序中,对接收到的音频/视频数据不做任何处理。但是,您可以在自己的应用程序中使用和调整此代码,例如解码和播放接收到的数据。

openRTSP类似于“testRTSPClient”,但是有更多的特性。它是一个命令行程序,与“testRTSPClient”不同,它打算作为一个完整的、功能齐全的应用程序使用(而不是在其他应用程序中使用它的代码)。有关“openRTSP”的更多信息-包括它的许多命令行选项请参阅在线文档。

RTSP server

testOnDemandRTSPServer创建一个RTSP服务器,它可以通过RTP单播从各种类型的媒体文件按需流式传输。(支持的媒体类型包括:MPEG-1或2音频或视频(基本流),包括MP3音频;MPEG-4视频(基本流);H.264视频(基本流);H.265视频(基本流);MPEG程序或传输流,包括VOB文件;DV视频;AMR音频;WAV (PCM)音频。服务器也可以从Matroska或WebM文件流(通过解复用和流的轨道内的文件)。MPEG传输流也可以在原始UDP上进行流传输,如果需要的话——例如,通过机顶盒。o此服务器应用程序还演示了如何通过RTSP交付MPEG传输流,该流作为UDP (raw-UDP或RTP/UDP)多播或单播流到达服务器。特别是,默认情况下,它被设置为接受来自“testMPEG2TransportStreamer”演示应用程序的输入。

RTSP server

playSIP是一个命令行程序(类似于“openRTSP”),它调用SIP会话(使用SIP: URL),然后(可选地)将传入的媒体流记录到文件中。

MP3 audio test programs

反复读取MP3音频文件(名为“test.mp3”),并使用RTP将其流式传输到多播组239.255.42.42,端口6666 (RTCP使用端口6667)。这个程序也有一个(可选的)内置RTSP服务器。testMP3Receiver做相反的事情:它读取MP3/RTP流(来自相同的多播组/端口),并将重组的MP3流输出到“stdout”。它还发送RTCP接收报告。

WindowsAudiolnputDevice

这是“liveMedia”库的“AudiolnputDevice”抽象类的实现。这可以被Windows应用程序用来从输入设备读取PCM音频样本。(这个项目构建了两个库:libWindowsAudiolnputDevice_mixer。libWindowsAudiolnputDevice_noMixer. lib”,它使用Windows的内置混音器,以及“libWindowsAudiolnputDevice_noMixer. lib”。

mediaServer

分别是媒体服务器

  • COPYINGCOPYING.LESSER: 许可证文件的符号链接,指向根目录的许可证文件。
  • DynamicRTSPServer.cppDynamicRTSPServer.hh: 可能包含动态RTSP(Real-Time Streaming Protocol)服务器的实现。
  • live555MediaServer.cpp: 包含了Live555媒体服务器的实现。
  • Makefile、Makefile.head 和 Makefile.tail: 用于构建媒体服务器的Makefile文件。
  • test.mp4: 一个测试用的MP4格式媒体文件。
  • version.hh: 包含了版本信息的头文件。

proxyServer/:

代理服务器

  • COPYINGCOPYING.LESSER: 许可证文件的符号链接,指向根目录的许可证文件。
  • live555ProxyServer.cpp: 包含了Live555代理服务器的实现。
  • Makefile、Makefile.head 和 Makefile.tail: 用于构建代理服务器的Makefile文件。
  • test.mp4: 一个测试用的MP4格式媒体文件。

hlsProxy/

这个目录包含了一个HLS代理服务器的实现。

  • live555HLSProxy.cpp: 包含了 HLS 代理服务器的实现。
  • Makefile、Makefile.head 和 Makefile.tail: 用于构建 HLS 代理服务器的 Makefile 文件。

猜你喜欢

转载自blog.csdn.net/qq_45865950/article/details/132765543