Live555库结构及其核心概念

文章目录

    • Live555库结构及其核心概念
      • 核心概念:
      • 库结构:
        • **RTSP client**

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库的结构包括以下关键组件:

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

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

  3. liveMedia

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

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

  5. 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”。Lib”,而不是。)

    mediaServer/proxyServer/

    这些目录包含了LIVE555库提供的实例应用,分别是媒体服务器和代理服务器。

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

你可能感兴趣的:(live555,音视频,实时音视频,h.264,h.265,实时互动)