live555二次开发经验总结:RTSPClient客户端与RTSPServer服务器
来源:互联网 发布:wings战队 知乎 编辑:程序博客网 时间:2024/05/19 05:30
live555介绍
安防领域的流媒体开发者估计没有谁不知道live555的,可能并不是因为其架构有多牛,代码有多好看,而是因为这玩意存在的年限实在是太长了,从changelog来看,live555从2002年至今2017年,已经整整15年的时间了,这还不是关键,关键是现在还一直保持着迭代更新!!!在经历过如此浮躁的互联网时代,还能不忘初心地坚持,真的是少见。
自2011年我研究live555,也对live555做过不少的二次开发,其中最大的体会就是:老牌架构但还能有一技之长!live555被广大开发者吐槽的主要是他的架构模型:单线程,这就导致整个程序的开发是一个阻塞式的流程,或者说live555其实就是一个披着C++外衣的C程序,各种嵌套、各种继承,开发者在调试live555的时候,可能稍不留神就跟丢了,二次开发也是最好是在外围打转,不要轻易涉足到内核部分!
live555能干啥?
是啊,live555能干啥?主要有两个方向:RTSPClient客户端和RTSPServer服务器,live555的核心工程也基本上就是围绕着RTSPClient.cpp和RTSPServer.cpp两个类来展开的;
先说道RTSPClient:个人认为live555最大的优势就是RTSPClient,为啥?因为兼容性强,整个安防的10多年都被他包括在里面了,各种各样RTSP的兼容,各种各样的场景,可以说开发到现在已经没有遇到过live555不能请求到的IPC了,可能大部分的IPC的内置服务器还是基于live555的RTSPServer来二次开发实现的!我经常在博客中描述我遇到的各种各样的奇葩IPC接入情景,有的IPC写的非常灵活,整个OPTIONS/DESCRIBE/SETUP/PLAY/TEARDOWN/GET_PARAMETER/SET_PARAMETER都实现了,而且收发消息都非常正常,而有的摄像机就是固定一条道,如果在这个过程中穿插着发了个OPTION或者GET_PARAMETER,那不得了,摄像机直接就无响应了,所以,我在做EasyRTSPClient的时候,开发了各种各样的选项,例如是否发保活、url是否带用户名密码等等!
再说RTSPServer:上面也说了,目前在市面上还是运行了很多基于live555的RTSPServer.cpp类二次开发的摄像机/NVR的流媒体服务器,这些服务器能跟vlc(vlc的RTSPClient部分是基于live555)很亲密的交互,因为都是一套架构流程的产物。基于live555实现RTSPServer服务器的经验总结下来,应该就是几点:1、外围调用;2、发送优化;在博客《EasyIPCamera高性能摄像机RTSP服务器RTSPServer解决方案》 中描述了我基于live555开发的一套RTSPServer组件的框架模型,而在内核方面,我修改了live555在网络发送方面,不在是单个RTP包发送,而是将所有数据都累积到4096才调用底层的发送,这样就大大提升了发送的效率,经过测试EasyIPCamera在网络使用率上非常好,千兆网络带宽使用率超过80%,也能PK海康、大华的IPC性能,高清同步输出超过4路!
关于EasyRTSPClient
EasyRTSPClient是一套非常稳定、易用、支持重连的RTSPClient工具,SDK形式提供,接口调用非常简单,再也不用像调用live555那样处理整个RTSP OPTIONS/DESCRIBE/SETUP/PLAY的复杂流程,担心内存释放的问题了,全平台支持(包括Windows/Linux 32&64,ARM各平台,Android,iOS),支持RTP Over TCP/UDP,支持断线重连,连续维护与迭代超过5年,能够接入市面上99%以上的IPC,调用简单且成熟稳定!
关于EasyIPCamera
EasyIPCamera是一套非常稳定、易用、支持多种平台(包括Windows/Linux 32&64,Android,ARM hisiv100/hisiv200/hisiv400等平台)的RTSP Server组件,适用于IPCamera、内网RTSP服务等小型RTSP流媒体服务器,接口调用非常简单成熟,无需关注RTSPServer中关于客户端监听接入、音视频多路复用、RTSP具体流程、RTP打包与发送等相关问题,支持多种音视频格式,再也不用像调用live555 RTSPServer那样处理整个RTSP OPTIONS/DESCRIBE/SETUP/PLAY/RTP/RTCP的复杂流程和担心内存释放的问题了!
获取更多信息
邮件:support@easydarwin.org
WEB:www.EasyDarwin.org
Copyright © EasyDarwin.org 2012-2017
- live555二次开发经验总结:RTSPClient客户端与RTSPServer服务器
- live555二次开发经验总结:RTSPClient客户端与RTSPServer服务器
- live555学习之一RTSPServer的创建监听并监听客户端
- live555库的rtsp服务器源码分析总结------RTSPServer
- Live555 RTSPServer 分析
- live555 源码分析:RTSPServer
- Live555 RtspClient会话管理
- live555 RTSPServer H264-live-streamimg
- Live555 Live555Server And playCommon (RTSPClient)
- EasyRTSPClient:基于live555封装的支持重连的RTSP客户端RTSPClient
- live555库的rtsp服务器源码分析总结,流程详解RTSPServer
- live555库的rtsp服务器源码分析总结,流程详解RTSPServer
- live555库的rtsp服务器源码分析总结,流程详解RTSPServer .
- live555库的rtsp服务器源码分析总结,流程详解RTSPServer
- live555库的rtsp服务器源码分析总结,流程详解RTSPServer
- 基于live555实现的跨平台高性能RTSPServer流媒体服务器EasyIPCamera
- 基于live555实现的跨平台高性能RTSPServer流媒体服务器EasyIPCamera
- live555库的rtsp服务器源码分析总结,流程详解RTSPServer
- JZOJ5358. 【NOIP2017提高A组模拟9.12】BBQ
- ThreadLocal源码分析
- Dialog详解(实时更新,未完待续...)
- Python初学笔记3
- java实现签名和解签
- live555二次开发经验总结:RTSPClient客户端与RTSPServer服务器
- 为什么STM32从Flash地址0x08000000的启动重映射
- BeanUtil
- [java] 微服务架构连载No1 spring-cloud服务发现之Eureka
- 项目3的程序2——复杂度为O(nlogn)的快速排序程序
- Centos配置yum源|个人整理
- jvm、jre、jdk的区别
- 高性能mysql-第五章索引(3)
- 考研数学