Live555是一款开源的RTSP服务器,下载地址http://www.live555.com/liveMedia/public/ 下载下来的代码只有源文件,没有工程文件。 那么如何使用VS 调试live555的源代码呢,下面将一步一步进行介绍。 使用的编译环境为win7 + vs2008 第一步打开vs2008,新建一个解决方案,目录为解压之后的代码目录,名称为live555,类型为win32 控制台程序 这样会生成一个空的解决方案,并且会有一个工程为 .hh与.cpp文件 BasicUsageEnvironment 工程对应的代码目录为BasicUsageEnvironment groupsock工程对应的代码目录为groupsock live555 选择live555, 将其他几个工程勾选上。表示在最后连接阶段,需要用到其他几个工程生成的库文件。
搭建环境为Centos 7.2 64bit 一.安装gcc编译器 yum install gcc-c++ 二.安装live555 wget http://www.live555.com/liveMedia cd mediaServer 进入此文件夹 启动live555服务器 ./live555MediaServer 看到如下提示便是启动成功: ?
综合考虑后,基本都是在基于live555的基础上进行开发,在进行Live555本身的优化以及程序内部视频数据传输的优化后,不仅实现了需求而且性能还超出预期,实现了8Mbps~10Mbps高码率的1080p Live555架构和RTSP数据流程 Live555的核心模块 ? RTSP服务器和客户端的交互流程 ? Live555流媒体模块及服务端的处理流程 Live555的流媒体模块基本分为Source和Sink两大部分,当然他们也有一个共同的基类Medium。 高码率视频数据传输的优化点 对高清高码率的视频画面,每一帧的视频数据就会比较大,这个数值往往会超出live555内部默认的内存处理大小,因为对于live555的优化,主要就是集中在内存缓冲大小的扩大,以及避免内存数据拷贝 对于应用程序将数据从自己的线程传递给Live555的时候,应该尽量减少内存拷贝,最好是通过内存池的形式,以避免拷贝内存阻塞Live555事件循环 经过以上修改,以及应用程序内部代码的优化,在实际应用中,
服务器端 服务器端主要是下载安装live555,其过程也比较简单,主要分为以下步骤: 下载live555源码 wget wget http://www.live555.com/liveMedia/public 验证是否成功 cd mediaServerls 这时会生成一个名称为live555MediaServer的一可执行程序,这个就是live555的流媒体服务器,如果正常生成了这个可执行文件,则说明我们的安装是成功的 启动 接下来启动live555服务器 ./live555MediaServer & 成功启动的样子 ? ? 基于live555的点播服务搭建完毕,可以将自己的视频资源文件上传到服务器端与live555MediaServer的同一级目录下,然后就可以播放了。
基于live555的视频直播 DM368IPNC RTSP分析 本文是 我对TI DM368IPNC RTSP直播部分的代码分析。 appro IPNC视频流直播部分用的RTSP,基于live555,通过改写wis-streamer实现的,在live555官网上有wis-streamer的代码下载,appro将其修改,在framedsource 感慨:C++ 真的太好用了 现在懒了,文字部分就直接复制出来,源文档使用的是excel, 基于live555的视频直播 DM368IPNC RTSP分析 一、描述 appro利用live555实现了三种视频流以及一种音频流的直播 1、MJPEG Video 2、H264 Video 3、MPEG4 Video 4、PCM Audio live555是一个开源的RTSP C++类库,默认实现音视频文件的点播,但是可以通过继承相关类 ,重写相关方法实现视频直播 live555提供的实现直播的通用步骤是: 截图来自之前的《live555分析与开发.xlsx》 appro也是按照此种方法实现 二、Appro的添加的live555
一、操作 OPTIONS rtsp://192.168.99.162:5544/live/YKiavBi7g RTSP/1.0 CSeq: 2 User-Agent: LibVLC/3.0.12 (LIVE555 并且对应的类型为96: DESCRIBE rtsp://192.168.99.162:5544/live/YKiavBi7g RTSP/1.0 CSeq: 3 User-Agent: LibVLC/3.0.12 (LIVE555 SETUP rtsp://192.168.99.162:5544/live/YKiavBi7g/streamid=0 RTSP/1.0 CSeq: 4 User-Agent: LibVLC/3.0.12 (LIVE555 SETUP rtsp://192.168.99.162:5544/live/YKiavBi7g/streamid=1 RTSP/1.0 CSeq: 5 User-Agent: LibVLC/3.0.12 (LIVE555 六、结束 TEARDOWN rtsp://192.168.99.162:5544/live/YKiavBi7g RTSP/1.0 CSeq: 7 User-Agent: LibVLC/3.0.12 (LIVE555
综合考虑后,基本都是在基于live555的基础上进行开发,在进行Live555本身的优化以及程序内部视频数据传输的优化后,不仅实现了需求而且性能还超出预期,实现了8Mbps~10Mbps高码率的1080p Live555架构和RTSP数据流程 Live555的核心模块 [live555-rtsp1.jpg] RTSP服务器和客户端的交互流程 [rtsp协议交互] Live555流媒体模块及服务端的处理流程 Live555的流媒体模块基本分为Source和Sink两大部分,当然他们也有一个共同的基类Medium。 高码率视频数据传输的优化点 对高清高码率的视频画面,每一帧的视频数据就会比较大,这个数值往往会超出live555内部默认的内存处理大小,因为对于live555的优化,主要就是集中在内存缓冲大小的扩大,以及避免内存数据拷贝 对于应用程序将数据从自己的线程传递给Live555的时候,应该尽量减少内存拷贝,最好是通过内存池的形式,以避免拷贝内存阻塞Live555事件循环 经过以上修改,以及应用程序内部代码的优化,在实际应用中,
Live555接收RTSP直播流,转换Http Live Streaming(iOS直播)协议 RTSP协议也是广泛使用的直播/点播流媒体协议,之前实现过一个通过live555接收RTSP协议,然后转换为 我们不需要从零做起,网络上有很多和RTSP相关的开源项目可以使用或借鉴,我选择了Live555。 Live555实现了RTSP包括服务器-客户端的整套结构,是很知名的一个开源项目。网上有很多关于Live555学习和使用的文章,我就不具体介绍了。 他所使用的live555变量,这里ourRTSPClient实际就是RTSPClient的简单继承 ? 3.RtspCapture调用live555的主要流程 1. 还有一个关键点,就是要在自己的线程循环中,调用live555 environment的事件循环,就像这样 ? 4.
Onvif的设备,就要自己拼接各个厂家的RTSP地址规则了,例如:海康、大华IpCamera RTSP地址和格式,雄迈/巨峰摄像机RTSP地址格式; 接入RTSP方面,目前市面上兼容性最强的两个组件:live555 和ffmpeg,各有利弊,live555结构复杂、ffmpeg整体庞大,最终我们选择了以live555作为摄像机RTSP接入的方案,能非常方便实现部分功能的定制,例如本文重点提到的OPTIONS发送的问题 : 当我们采用RTP over UDP/TCP方式在取流的过程中,RTSPClient(live555)可能长时间都在从RTSPServer(IPC/NVR)取流,但缺没有向RTSPServer发送保活报文 ,如果服务器端启动了Session保活检测机制(参看live555中RTSPServer中noteliveness实现),服务器端长时间没有收到客户端发送的数据包,就会认为客户端连接是假连接,主动断开与客户端的连接
我们不需要从零做起,网络上有很多和RTSP相关的开源项目可以使用或借鉴,我选择了Live555。 Live555实现了RTSP包括服务器-客户端的整套结构,是很知名的一个开源项目。网上有很多关于Live555学习和使用的文章,我就不具体介绍了。 调用live555的主要流程 1. 还有一个关键点,就是要在自己的线程循环中,调用live555 environment的事件循环,就像这样 [hgaixa1rvw.jpeg] 4. 里面的parse函数,是live555自带的。
一、操作 OPTIONS rtsp://192.168.99.162:5544/live/YKiavBi7g RTSP/1.0 CSeq: 2 User-Agent: LibVLC/3.0.12 (LIVE555 并且对应的类型为96: DESCRIBE rtsp://192.168.99.162:5544/live/YKiavBi7g RTSP/1.0 CSeq: 3 User-Agent: LibVLC/3.0.12 (LIVE555 SETUP rtsp://192.168.99.162:5544/live/YKiavBi7g/streamid=0 RTSP/1.0 CSeq: 4 User-Agent: LibVLC/3.0.12 (LIVE555 SETUP rtsp://192.168.99.162:5544/live/YKiavBi7g/streamid=1 RTSP/1.0 CSeq: 5 User-Agent: LibVLC/3.0.12 (LIVE555 六、结束 TEARDOWN rtsp://192.168.99.162:5544/live/YKiavBi7g RTSP/1.0 CSeq: 7 User-Agent: LibVLC/3.0.12 (LIVE555
客户端向服务器询问有哪些方法可以使用 OPTIONS rtsp://222.201.145.236/slamtv60.264 RTSP/1.0 CSeq: 2 User-Agent: LibVLC/1.1.11 (LIVE555 DESCRIBE rtsp://222.201.145.236/slamtv60.264 RTSP/1.0 CSeq: 3 User-Agent: LibVLC/1.1.11 (LIVE555 Streaming Content-Length: 527 v=0 o=- 1331092087436965 1 IN IP4 222.201.145.236 s=H.264 Video, streamed by the LIVE555 SETUP rtsp://222.201.145.236/slamtv60.264/track1 RTSP/1.0 CSeq: 4 User-Agent: LibVLC/1.1.11 (LIVE555 SETUP命令所设置的进行 PLAY rtsp://222.201.145.236/slamtv60.264/ RTSP/1.0 CSeq: 5 User-Agent: LibVLC/1.1.11 (LIVE555
比较常见的流媒体服务器框架基本上就是live555和librtmp了,live555主要针对rtsp实现流媒体服务器的功能;近几年来,直播越来越火,rtmp也比较广泛的应用,于是librtmp也越来越流行 live555官网:http://www.live555.com/ live555源代码下载:http://www.live555.com/liveMedia/public/ librtmp官网:http
流程如下: 步骤1:客户端发送DESCRIBE请求到服务端 DESCRIBE rtsp://10.175.30.35 RTSP/1.0 CSeq: 6 User-Agent: LibVLC/2.2.4 (LIVE555 -- DESCRIBE rtsp://192.168.0.112:540/live/h264_ulaw/VGA RTSP/1.0 CSeq: 6 User-Agent: LibVLC/1.1.11 (LIVE555 192.168.0.112:540/live/h264_ulaw/VGA", response="1ac6f141f4c740ba54088914941f094f" User-Agent: LibVLC/1.1.11 (LIVE555 192.168.0.112:540/live/h264_ulaw/VGA/", response="ff71e2de4489997fa2fd058462ca48df" User-Agent: LibVLC/1.1.11 (LIVE555 192.168.0.112:540/live/h264_ulaw/VGA/", response="ff71e2de4489997fa2fd058462ca48df" User-Agent: LibVLC/1.1.11 (LIVE555
RTSP服务采用开源的LIVE555(需要自己修改和实现部分代码)。 RTMP服务采用开源CRtmpServer。 具体的实现细节就不细说了,大概的步骤如下: 1. 推送H264到LIVE555(自己实现),同时通过推送FLV流到CRtmpServer(通过FFmpeg) 因为CRtmpServer和LIVE555都是开源的,网上有很多资料;并且FFmpeg的H264
【漏洞】流行播放器媒体库曝高危漏洞 MPlayer 和 VLC 等流行播放器使用的一个媒体串流库 LIVE555 曝出了远程代码执行的高危漏洞。 LIVE555 支持 RTP/RTCP、RTSP 或 SIP 协议,能处理 MPEG、H.265、H.264、H.263 +、VP8、DV、JPEG、MPEG、AAC、AMR、AC-3 和 Vorbis LIVE555 作者称,该漏洞只影响库的 RTSP 服务器端实现,不影响 RTSP 客户端实现。新版 LIVE555 已经释出修复了漏洞。 ?
https://gitee.com/mirrors/SRS.git obs studio地址 实时流媒体和屏幕录制:https://gitee.com/jarbean/obs-studio.git live555 :https://github.com/rgaufman/live555 media-server:https://github.com/ireader/media-server 流媒体支持三种主流协议
uri="rtsp://10.3.8.202:554", response="3fc4b15d7a923fc36f32897e3cee69aa" User-Agent: LibVLC/2.2.8 (LIVE555 uri="rtsp://10.3.8.202:554/", response="ddfbf3e268ae954979407369a104a620" User-Agent: LibVLC/2.2.8 (LIVE555 uri="rtsp://10.3.8.202:554/", response="b5abf0b230de4b49d6c6d42569f88e91" User-Agent: LibVLC/2.2.8 (LIVE555 uri="rtsp://10.3.8.202:554/", response="bb2309dcd083b25991c13e165673687b" User-Agent: LibVLC/2.2.8 (LIVE555 uri="rtsp://10.3.8.202:554/", response="e08a15c27d3daac14fd4b4bcab424a5e" User-Agent: LibVLC/2.2.8 (LIVE555
WEBSOCKET代理;流媒体服务器多协议转发RTMP/HTTP-FLV/HLS/WS-FLV;前端H5无插件取流播放;技术实现RTSP拉流目前市面上能非常兼容地拉取各个厂家的RTSP流的方案总结来说有两种:**Live555 **Live555取流实时性高,但是兼容性差,对某些小众厂家的RTSP流或者标准性较差的RTSP流可能存在拉不到流的问题;**FFmpeg**FFmpeg拉流稳定性高,兼容性强,实时性相对较低,我们通常可以通过调整参数来提高实时性 3.流媒体服务器RTSP转发+WEBSOCKET代理SkeyeSMS支持RTSP转发流媒体服务,我们参考Live555的轻量级RTSPServer流媒体服务设计思想,充分吸收其超低延迟的特点,在此基础上设计多线程分发策略 ,提高RTSP流媒体分发并发能力和分发效率,弥补Live555单线程分发的并发不足的缺陷。
本篇文章使用开源框架live555开发一个属于自己的视频流服务器。 安装环境依赖 live555的使用需要较多的环境依赖,一下安装都是编译依赖相关内容。