EasyDarwin流媒体服务器RTSP拉模式流媒体转发模块设计
拉模式转发
拉模式转发,顾名思义就是服务器主动从源端(IPCamera、NVR、或者其他流媒体服务器)通过RTSP/RTP协议将流媒体音视频数据拉取到流媒体转发服务器,再通过内部分发调度机制,分发给请求转发的客户端的过程;
拉模式转发的用途非常广泛:内网直播、服务器级联、NVR等各个方面,结合服务端存储,还可以做成边转发直播、边录像的功能;
EasyDarwin拉模式转发
EasyDarwin的拉模式转发需要做到几点:
- 通用接入:接入市面上大部分的IPCamera及NVR;
- 按需拉取:只有在有用户请求播放数据的时候,EasyDarwin才会向源端获取数据;
- 无请求释放:当某一路转发的用户观看量减少为0时,EasyDarwin需要主动释放对源端的拉取;
- 预配置:拉模式转发模块能够读取预配置的拉模式列表xml配置;
- RESTful接口:EasyDarwin支持RESTful接口调用,增加或者删除拉模式转发;
实现方案
我们为EasyDarwin新增一个模块:EasyRelayModule,在EasyRelayModule中,我们为每一路源的转发都建立一个由live555维护的RTSPClient线程,再由EasyRelayModule对线程进行HashMap维护,启动与停止进行外部干预,从而维护整个EasyDarwin流媒体服务器所有接入的RTSP源;
这里有一个问题需要说明:我们采用live555进行RTSP流媒体数据的获取(支持RTP over TCP || UDP),我们改造了live555通常的RTSP获取流程,直接将live555的sink用simpleRTPSink,直接获取到RTP数据,转发给QTSSReflectorModule进行转发;
EasyDarwin Github
获取更多信息
Copyright © EasyDarwin.org 2012-2016
EasyDarwin流媒体服务器RTSP拉模式流媒体转发模块设计的更多相关文章
- EasyDarwin开源流媒体服务器低延时直播之转发缓存跟进算法
前言 前一段时间,我们为EasyDarwin实现了客户端快速显示画面/听到同步声音的缓存关键帧检索方案,具体的实现方法分别在<EasyDarwin手机直播是如何实现的快速显示视频的方法>和 ...
- 用Darwin开发RTSP级联服务器(拉模式转发)(附源码)
源码下载地址:https://github.com/EasyDarwin orwww.easydarwin.org 在博客 在Darwin进行实时视频转发的两种模式 中,我们描述了流媒体服务器对源端音 ...
- EasyDarwin在做拉模式转发海康RTSP摄像机视频流的过程中出现花屏问题的解决方案
问题描述 在3年前我当时基于EasyDarwin为用户开发了一款RTSP拉模式转发的程序,也发布了一篇博客<用Darwin开发RTSP级联服务器(拉模式转发)>,当时考虑的很简单,只要将R ...
- 用Darwin开发RTSP级联server(拉模式转发)(附源代码)
源代码下载地址:https://github.com/EasyDarwin orwww.easydarwin.org 在博客 在Darwin进行实时视频转发的两种模式 中,我们描写叙述了流媒体serv ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器的视频直播录像、检索、回放方案
需求背景: 近期遇到客户反馈对于直播摄像机录像功能是有一定的需求点的,其实EasyDarwin团队早就研发出对应功能,只是用户对于产品没有足够了解,因此本篇将对录像功能来做一次介绍. 首先,录像就是对 ...
- 复用TCP连接提升流媒体服务器之间流量转发效率
由于媒体推流客户端所在地域不同.所接入网络运营商不同.就近接入原则等因素,导致不同的视频推流客户端会推流至不同的流媒体服务器(本文主要针对目前WEB或手机的基于TCP的流媒体服务器),在某流媒体服务器 ...
- C#调用EasyPusher推送到EasyDarwin流媒体服务器直播方案及示例代码整理
博客一:转自:http://blog.csdn.net/u011039529/article/details/70832857 大家好,本人刚毕业程序猿一枚.受人所托,第一次写博客,如有错误之处敬请谅 ...
- 高性能流媒体服务器EasyDarwin
标准RTSP拉模式直播(EasyRelayModule):适合内部监控 分布式部署(EasyCMSModule):负载均衡主要是用Reids作为负载
- ffmpeg+EasyDSS流媒体服务器实现稳定的rtmp推流直播
本文转自EasyDarwin团队成员Alex的博客:http://blog.csdn.net/cai6811376/article/details/74783269 需求 在做EasyDSS开发时,总 ...
随机推荐
- APUE 学习笔记(十) 高级I/O
1. Unix IPC(InterProcess Communication) 同一主机的各个进程间的IPC:管道.FIFO.消息队列.信号量.共享存储器 不同主机上的各个进程间IPC:socket套 ...
- 【Visual Studio】error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1600”不匹配值“1800” (转)
1.案例一 _MSC_VER 定义编译器的版本.下面是一些编译器版本的_MSC_VER值:MS VC++ 10.0 _MSC_VER = 1600MS VC++ 9.0 _MSC_VER = 1500 ...
- Android 动态隐藏显示导航栏,状态栏
Talk is cheap, show me the code. --Linus Torvalds Okay, here: 一.导航栏: [java] view plain copy private ...
- 大文件LOG持续输出
作了两个版本,一是websocket输出,一是直接显示指定行数. class WebSocketHandler(tornado.websocket.WebSocketHandler): file_co ...
- Android之观察者/被观察者模式Observer/Observable
Android 本身也是有观察者模式的.虽然项目中很多需要通知数据改变的地方,用了EventBus,但是不得不说这个观察者模式还是很好用的.最近在开发新版本的时候引用了腾讯的IM,之前写直播的时候就用 ...
- js-(19,999,999.00)
function price(n, precision) { let s = String(n), int = parseInt(n).toString(), pre = s.split('.')[1 ...
- 作妖系列——更改spyder黑色主题
https://blog.csdn.net/bat67/article/details/83932835 For Anaconda3 users on Windows 10 : 下载安装QDarkSt ...
- PAT 甲级 1087 All Roads Lead to Rome(SPFA+DP)
题目链接 All Roads Lead to Rome 题目大意:求符合题意(三关键字)的最短路.并且算出路程最短的路径有几条. 思路:求最短路并不难,SPFA即可,关键是求总路程最短的路径条数. 我 ...
- [Python Cookbook] Numpy: How to Apply a Function to 1D Slices along the Given Axis
Here is a function in Numpy module which could apply a function to 1D slices along the Given Axis. I ...
- Go语言入门——数组、切片和映射(下)
上篇主要介绍了Go语言里面常见的复合数据类型的声明和初始化. 这篇主要针对数组.切片和映射这些复合数据类型从其他几个方面介绍比较下. 1.遍历 不管是数组.切片还是映射结构,都是一种集合类型,要从这些 ...