live555
目录
live555简介
Live555 Streaming Media整体框架
openRTSP客户端流程
编辑本段live555简介
Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。Live555实现了对多种音视频编码格式的音视频数据的流化、接收和处理等支持,包括MPEG、H.263+、DV、JPEG视频和多种音频编码。同时由于良好的设计,Live555非常容易扩展对其他格式的支持。目前,Live555已经被用于多款播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer。
编辑本段Live555 Streaming Media整体框架
live555StreamingMedia框架
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的基类,各种类型的流媒体格式和编码的支持即是通过对这两个类的派生实现的。Source和Sink通过RTP子会话(MediaSubSession)联系在一起。
编辑本段openRTSP客户端流程
1、创建TaskScheduler和BasicUsageEnvironment类; 2、命令行解析,获取流媒体地址和其他选项; 3、创建RTSPClient对象; 4、如果需要,RTSPClient对象发送OPTIONS命令并解析服务端响应,获取可以使用命令集。 5、RTSPClient对象发送DESCRIBE命令,并从获服务端反馈中获取流媒体相关描述SDP字串。 6、创建MediaSession对象,解析SDP字串,创建了相应的子会话对象。在这个过程中还完成了RTP和RTCP通信使用的GroupSock对象的创建,包括协议和端口的选择。 7、根据流媒体不同类型,实例化具体的RTP会话的Source和Sink对象。 8、RTSPClient对象发送SETUP和PLAY命令,服务端开始传输流媒体数据。 9、TaskScheduler开始事件处理循环,通过select监听数据包到达并调用注册函数进行处理。
分享到:
相关推荐
live555断线重连,以及实现基本过程,详细的需要各位进一步填充了
Windows下利用live555实现H264H265实时流RTSP发送,利用本地文件读入模拟,环境为VS2010。这是对大神代码的整理,可以直接编译运行。源于https://blog.csdn.net/weixinhum/article/details/38067743#comments 环境从...
采用live555和 ffmpeg结合,通过ffmpeg获取文件视频流(mp4等)或者网络流(rtsp,rtmp等),利用live555 rtsp服务器进行转发。 本例通过ffmpeg实现了两路流的接收和转发,音话同步。 1.获取本地文件1.mp4,然后转发成:...
关于live555的移植和使用 实现从海思共享内存获取数据给rtsp服务器进行流转发
live555源码包~
C++ Live555 类库实现的网络直播系统。 Live555主要有四个类库: libUsageEnvironment.lib;libliveMedia.lib;libgroupsock.lib;libBasicUsageEnvironment.lib 将这四个类库以及相关的头文件导入VC++2010之后,...
此源码为linux下live555的Qt工程,可添加进Qt Creator ,编译使用。
[免费]VS2013下编译好的live555完整工程(live555.2014.5.14版).rar [免费]VS2013下编译好的live555完整工程(live555.2014.5.14版).rar
使用live555 硬件平台:arm9 海思HISI3511 操作系统:linux 功能:嵌入式 视频监控 rtsp
live555 使用ffmpeg实现mp4文件点播
live555Camera用live555摄像头直播,全源代码,播放时有延时,希望大家改进。
live555demo版支持断线重连,多路接入 live555demo版支持断线重连,多路接入 live555demo版支持断线重连,多路接入 live555demo版支持断线重连,多路接入 断线重连并没有完全实现,但是整个思路已经很清晰。上层已...
live555(2015.11月的live555) 可以在VS2010下直接编译的工程。 其中OpenRtsp 可以直接在VS2010下编译出exe, 可以直接使用 OpenRtsp.exe URL
这是使用live555实现的一个推流的小框架,其详细的说明见作者的博客《 使用live555实现实时流的推流服务器》
将live555源码编译成可供android-ndk使用的动态库 1、linux下新建jni, 将Android.mk、build.sh放在jni目录,然后将live555源码下的目录 BasicUsageEnvironment、groupsock、liveMedia、UsageEnvironment也复制到jni...
1、使用FFMPEG进行编码(ffmpeg版本为ffmpeg-5.0) 2、使用LIVE555建立RTSP服务器(live555版本为live.2022.02.07) 实现实时桌面视频流,Visual Studio为Visual Studio 2022版本
解压后直接把需要点播的视频放在与live555的exe同目录下,点击启动live555后,可在局域网用vlc打开串流观看视频,注意:不支持mp4封装格式
本资源是aac音频通过live555读取内存发送源码,源码本人亲自试用可行,但需要添加进自己项目。
基于live555 testRtspClient.cpp 改造, 已经封装成 dll 模块,提供了视频帧回调接口. live555 需要编译成静态库, 请自行编译,网上很多例子,比较简单
VS2017编译Live555源码,此项目为搭建完成后的工程,只需加载即可运行,加载步骤: 1.解压项目,找到live555Win工程文件夹。 2.运行live555Win文件夹下的live555Win.sln。 即可加载工程。 压缩包中live555Win文件夹...