LIVE555 Streaming Media简介和框架

Live555 简介

概述

Live555 是一个为流媒体提供解决方案的跨平台C++开源项目

特点

针对流媒体处理的C++库的集合
•跨平台:Unix, linux, Mac OS X, Windows, QNX and other POSIX-compliant systems
•使用开源标准协议:RTP/RTCP, RTSP, SIP
•用于音视频数据的流化、接收
•处理MPEG, H.265, H264, H263+, DV, JPEG视频和多种音频编解码
•良好的音视频编解码扩展支持

•用于播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer。

Live555 框架

Live555 包含如下几个库

•UsageEnvironment

该库是对系统环境的抽象,包括抽象基类“UsageEnvironment”,“TaskScheduler”和“HashTable”
– “UsageEnvironment”和“TaskScheduler”类的功能
»调试延迟事件
»指定异步读取事件处理程序
»输出错误或警告信息
–“HashTable”类的功能
»定义了一个通用哈希表的接口,在整个代码环境中都可以使用
–这些抽象基类必须在实现中被子类化应用,这些子类可以利用程序所运行环境的属性(如:图形用户界面或脚本环境)

•groupsock

–该库中的类封装了网络接口和套接字,用于实现数据包的发送和接收
–“Groupsock”类封装了一个用于收发多播数据报的套接字

•livemedia

–该库中定义了一个类层次结构,根源于抽象类“Medium”,它适用于各种流媒体类型和编解码器
–其他所有类都是通过“Medium”类派生的,其中几个派生类如下:
»RTSPClient: 该类实现RTSP请求的发送和响应的解析,同时根据解析的结果创建对就的RTP会话
»MediaSession: 用于表示一个RTP会话,一个MediaSession可能包含多个子会话(MediaSubSession)
»RTCPInstance: 该类实现RTCP协议的通信
»Source和Sink: Source抽象了数据源,比如通过RTP读取数据。Sink是数据消费者的抽象,比如把接收到数据存储到文件,该文件就是一个Sink. 数据的流动可能经过多个Source和Sink. MediaSink是各种类型的Sink的基类,MediaSource是各种类型Source的基类,各种类型的流媒体格式和编码的支持即是通过对这两个类的派生实现的。Source和Sink通过RTP子会话(MediaSubSession)联系在一起。

•BasicUsageEnvironment

–该库是“UsageEnvironment”类库子类化的一个用于简单控制台应用的具体实现
–读取事件和延迟操作使用一个select()循环处理

•testProgs

–该目录实现了用“BasicUsageEnvironment”展示如何利用这些库开发应用的一些简单程序
–测试程序介绍如下:
»RTSP client
•testRTSPClient是一个命令行程序,它展示了如何打开和接收指定RTSP URL的流媒体(e.g. rtsp://开头的URL)。这个演示应用程序对接收到的音视频数据什么处理都没做,但是可以在自己的应用中使用和改编这个代码来解码和播放接收的数据。
•openRTSP类似testRTSPClient,但有更多的的功能。它不像testRTSPClient, 旨在作为一个完整的,全功能的应用程序,而不是在其它应用中使用的代码。
»RTSP server
•testOnDemandRTSPServer创建了一个RTSP服务器,它可以流化媒体,通过RTP单播,从不同类型的媒体文件点播。(支持媒体类型包括:MPEG-1/MPEG-2音视频(基本流),包括MP3音频;MPEG-4视频(基本流); H.264视频(基本流);H.265视频(基本流);MPEG节目或者传输流,包括VOB文件;DV视频;AMR音频; WAV(PCM)音频)。
•这个服务器也可以从一个Matroska或者WebM文件(通过解复用和流化文件音轨)流化媒体。 MPEG传输流也可以通过原始UDP被流化,如果需要,例如通过一个机顶盒。
•这个RTSP服务器应用程序同时演示了如何通过RTSP传递一个(作为一个UDP原始UDP或者RTP/UDP)多播或者单播流到达服务器的) MPEG传输流。特别地,它被默认设置接受来自“testMPEG2TransportStreamer”演示应用程序的输入。
»SIP client
•playSIP是一个类似openRTSP的命令行程序,它产生一个SIP会话调用(使用一个sip:URL),并且记录收到的媒体流到一个文件中(可选项)。

»MP3 audio test programs
•testMP3Streamer反复读取一个MP3音频文件(test.mp3),并使用RTP流化它到多播组239.255.42.42,端口6666(使用RTCP的话端口号为6667)。该程序还有一个可选的内置RTSP服务器
•testMP3Receiver则相反:它从相同多播组/端口读取MP3 / RTP流,并输出复原的MP3流到“标准输出”。它还会发送RTCP接收报告。
•此外,MP3 / RTP流可使用这些工具之一进行播放。
»MPEG video test programs
•testMPEG1or2VideoStreamer从MPEG-1或2的视频文件(名为“test.mpg”)反复读取和(使用端口8889与RTCP)流它,使用RTP,到组播组239.255.42.42,端口8888。此程序还具有一个(选配)内置的RTSP服务器。
默认情况下,输入文件被假定为MPEG视频基本流。但是,如果它是一个MPEG程序流,那么你也可以插入一个解复用滤波器提取的视频基本流。 (详情请参阅“testMPEG1or2VideoStreamer.cpp”。)
 苹果的“QuickTime播放器”可用于接收和查看该流式视频(假设它是MPEG-1,而不是MPEG-2)。要使用此功能,必须QuickTime播放器打开文件“testMPEG1or2Video.sdp”。 (如果“testMPEG1or2VideoStreamer的”RTSP服务器已经启用,则QuickTime播放器也可以使用“RTSP://” URL播放流。)
开源“VLC”和“MPlayer的”媒体播放器也可以使用。
RealNetworks公司的“RealPlayer的”也可以被用来播放流。(推荐使用最新版本。)
•testMPEG1or2VideoReceiver则相反:它读取MPEG视频/ RTP流(从相同多播组/端口),并输出复原的MPEG视频(基本)流到“标准输出”。它还会发送RTCP接收报告。
•testMPEG4VideoStreamer从MPEG-4的基本码流的视频文件(名为“test.m4e”)反复读取,并使用RTP多播流化。此程序还具有一个内置的RTSP服务器。
苹果的“QuickTime播放器”可用于接收和播放该音频流。要使用此功能,让播放器打开会话“RTSP://”的URL(当它开始流化时该程序打印出来的)。
开源“VLC”和“MPlayer的”媒体播放器也可以使用。
•testH264VideoStreamer从H.264的基本流的视频文件(名为“test.264”)反复读取,并使用RTP组播流化。此程序还具有一个内置的RTSP服务器。
苹果的“QuickTime播放器”可用于接收和播放该音频流。要使用此功能,让播放器打开会话“RTSP://”的URL(当它开始流化时该程序打印出来的)。
开源“VLC”和“MPlayer的”媒体播放器也可以使用。
•testH265VideoStreamer从H.265基本流的视频文件(名为“test.265”)反复读取,并使用RTP组播流化。此程序还具有一个内置的RTSP服务器。
»MPEG audio+video (Program Stream) test programs

testMPEG1or2AudioVideoStreamer读取MPEG-1或2程序流文件(名为“test.mpg”),从该音频和视频基本流中提取,并且使用RTP流化到组播组239.255.42.42,端口6666/6667(对于音频流)和8888/8889(用于视频流)。此程序还具有一个可选的内置RTSP服务器。
苹果的“QuickTime 播放器”可用于接收和查看该流式视频(假设它是MPEG-1,而不是MPEG-2)。要使用此功能,使用QuickTime播放器打开文件“testMPEG1or2AudioVideo.sdp”。 (如果“testMPEG1or2VideoStreamer的”RTSP服务器已经启用,则QuickTime播放器也可以播放以“rtsp://”开头的URL的流) 
开源“VLC”和“MPlayer的”媒体播放器也可以使用。

 
testMPEG1or2Splitter读取MPEG-1或2程序流文件(名为“in.mpg”),并从中提取出一个音频和一个视频基本流。这两个基本流分别写入命名为“out_audio.mpg”和“out_video.mpg”的文件。 

»MPEG audo+video (Transport Stream) test programs

testMPEG2TransportStreamer读取MPEG传输流文件(名为“test.ts”),并且使用RTP流化它到组播组239.255.42.42,端口1234(RTCP使用端口1235)。此程序还具有一个(可选的)内置的RTSP服务器。 
开源“VLC”媒体播放器,可用于播放此流。 

testMPEG2TransportReceiver则相反:它读取MPEG传输/ RTP流(从相同多播组/端口),并输出复原MPEG传输流到“标准输出”。它还会发送RTCP接收报告。 testMPEG1or2ProgramToTransportStream读取MPEG-1或2程序流文件(名为“in.mpg”),并且将其转换为等效的MPEG传输流文件,命名为“out.ts”。 

testH264VideoToTransportStream读取H.264视频基本流文件(名为“in.264”),并且将其转换为等效的MPEG传输流文件,命名为“out.ts”。 

testH265VideoToTransportStream读取H.265视频基本流文件(名为“in.265”),并且将其转换为等效的MPEG传输流文件,命名为“out.ts”。

»PCM audio test program

•testWAVAudioStreamer从WAV格式的音频文件(名为“test.wav”)读出,并使用内置的RTSP服务器通过IP多播流化封闭的PCM音频流。
该程序支持8位或16位PCM数据流,单声道或立体声,在任何采样频率。 
苹果的“QuickTime播放器”可用于接收和播放该音频流。要使用此功能,让播放器打开会话“rtsp://”的URL(当它开始流时该程序打印出来的)。
可选地,16位PCM数据流可以被转换为8位的u-law格式优先流化。 (有关如何执行此操作说明,请参阅“testWAVAudioStreamer.cpp”。) 
开源“VLC”和“MPlayer的”媒体播放器也可以使用。

»AMR audio test program

testAMRAudioStreamer读取AMR-格式的音频文件(名为“test.amr”)- 定义在RFC3267,第5章- 并且使用内置的RTSP服务器经由IP多播流化封闭的音频流。 

苹果的“QuickTime播放器”可用于接收和播放该音频流。要使用此功能,让播放器打开会话“rtsp://”的URL(当它开始流化时该程序打印出来的)。

»DV video test program

testDVVideoStreamer读取DV视频文件(名为“test.dv”),并使用的是内置的RTSP服务器通过IP组播流化。 

目前,我们知道没有广泛使用的媒体播放器客户端,可以播放该流。 

»Matroska (or ‘Webm’) streaming test program

•testMKVStreamer读取“Matroska”(或“WEBM”)文件(名为“test.mkv”),并使用的是内置的RTSP服务器通过IP组播流化它。

»VOB (DVD) streaming test program

•vobStreamer读取一个或多个“.VOB”的文件(例如,从DVD),提取音频和视频流,并且使用RTP多播发送。

»Support for server ‘trick play’ operations on MPEG Transport Stream files

•应用程序MPEG2TransportStreamIndexer和testMPEG2TransportStreamTrickPlay

»Miscellaneous test programs

testRelay反复读取UDP多播套接字和转发(“中继”)每个数据包的有效载荷到一个新的(多播或单播)地址和端口。 

testReplicator类似于testRelay,不同之处在于它使用“FrameReplicator”类复制输入流并转发一个副本流至另一个(多播或单播)地址和端口,同时将其他副本流写入一个文件。 

sapWatch读取并打印默认SAP的目录(224.2.127.254/9875)的SDP/ SAP公告 

registerRTSPStream发送自定义的RTSP“REGISTER”命令到指定的RTSP客户端(或代理服务器),要求它流化一个给定的“rtsp://”URL

•WindowsAudioInputDevice

–该库是基于“liveMedia”库的抽象类“AudioInputDevice”的一个实现
–Windows 应用程序可以使用它从一个输入设备读取PCM音频采样
–该项目创建了两个库:
»libWindowsAudioInputDevice_mixer.lib :使用windows内置调音台
»libWindowsAudioInputDevice_noMixer.lib :不使用windows内置调音台



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值