对rtmp/http-flv/hls这三种协议不熟悉的同学,强烈建议先看看网友写的这篇文章科普下:理解RTMP.HttpFlv和HLS的正确姿势 .   srs可以同时支持这3种协议,只要修改conf配置文件即可,默认情况下加载的是 /usr/local/srs/conf/srs.conf,参考下图: 修改该文件: listen 1935; max_connections 200; srs_log_tank file; srs_log_file ./objs/srs.log; http_api…
SRS(Simple RTMP Server)  是国人写的一款非常优秀的开源流媒体服务器软件,可用于直播/录播/视频客服等多种场景,其定位是运营级的互联网直播服务器集群. 一.安装 官网提供了3种安装方式: 从源码编译安装.利用docker(学习用) .直接下载安装包安装 相信很多人主要目的是出于学习srs如何使用,对c++语言本身可能并不擅长,所以本文仅介绍"如何利用安装包"安装部署. 先从官网下载最新的稳定发布版本(目前是2.0r6) http://ossrs.net/srs.r…
单台服务器做直播,总归有单点风险,利用SRS的Forward机制 + Edge Server设计,可以很容易搭建一个大规模的高可用集群,示意图如下 源站服务器集群:origin server cluster,可以借助forward机制,仅用少量的服务器,专用于处理推流请求. 边缘服务器集群:edge server cluster,可以用N台机器,从源站拉流,用于较大规模的实时播放. 源站前置负载均衡(硬件或软件负载均衡都行),上图中用haproxy来实现tcp的软负载均衡. 边缘服务器前置反向代…
按上回继续,安全论证是绝大多数应用的基本要求,如果任何人都能无限制的发布/播放视频,显然不适合.SRS中可以通过HTTPCallback机制来实现,参考下面的配置: ... vhost __defaultVhost__ { ... # http回调 http_hooks{ enabled on; on_connect http://192.168.7.100:9000/srs_http_call_back; on_close http://192.168.7.100:9000/srs_http_…
1.首先要了解HLS延时的机制,也就是为什么会延时,延时主要发生在什么地方. HTTP Live Streaming 并不是一个真正实时的流媒体系统,这是因为对应于媒体分段的大小和持续时间有一定潜在的时间延时.在客户端,至少在一个分段媒体文件被完全下载后才能够开始播放,而通常要求下载完两个媒体文件之后才开始播放以保证不同分段音视频之间的无缝连接.此外,在客户端开始下载之前,必须等待服务器端的编码器和流分割器至少生成一个TS文件,这也会带来潜在的时延.服务器软件将接收到的流每缓存一定时间后包装为一…
背景 近期跟开源团队商量,想在EasyDarwin上继续做一些功能扩展,目前EasyDarwin开源流媒体服务器只能够实现高效的RTSP推流直播转发/分发功能,输入与输出都是RTSP/RTP流,不能够很好滴满足当下日益火热的互联网直播/录播的需求,我们计划在当前节点EasyDarwin-v7.3.17.0325基础上继续扩展几个功能: EasyDarwin服务器端直播存储功能: 对RTSP直播推流同步输出RTMP.HLS直播功能: 直接接入RTSP IPCamera输出RTMP.HLS直播功能:…
title: Node版本EasyDarwin开发心得 date: 2018-03-27 22:46:15 tags: 年后着手Node版本EasyDarwin的开发工作,截止到今天2018年03月27日上线了第一个版本,今天小米发布了MIX2S, 致敬! 致敬! 关于RTSP协议 目前这个第一版暂时仅支持RTSP Over TCP, 不过RTSP Over UDP也会很快实现.总体来说, RTSP协议比较简单.开发过程中对RTSP协议的理解主要参考了 rtsp协议详解 这篇文章.sdp的解析一…
EasyDarwin开源流媒体服务器(www.easydarwin.org)现在使用Go版本实现了.最新的代码提交,已经支持了推流(或者拉流)的同时进行本地存储. 本地存储的原理,是在推流的同时启动ffmpeg作为一路Client来做存储.ffmpeg在demux和mux的工作方面已经十分成熟,我们没必要再重复发明轮子.因此这种做法十分取巧而且简单有效,也不会侵入原来的代码架构.如下图所示: RTSP摄像机EasyDarwin本地存储推流使用ffmpeg进行拉流和存储RTSP摄像机EasyDar…
EasyDarwin开源流媒体服务器(www.easydarwin.org),拉转推是一个很有意义的功能,它可将一个独立的RTSP数据源"拉"到服务器,再通过转发协议转发给多个客户端,或者通过EasyDarwin的本地存储功能进行存储.国内大多摄像机都支持RTSP协议,通过拉转推可将第三方摄像机接入到EasyDarwin服务器. IPCEasyDarwin第三方RTSP源本地存储Client1Client2Client3拉流拉流ffmpeg转发转发转发IPCEasyDarwin第三方R…
在去年我们还未开始开发基于node.js的新版本EasyDarwin RTSP开源流媒体服务器的时候,我写了一篇博客<对EasyDarwin开源项目后续发展的思考:站在巨人的肩膀上再跳上另一个更高的肩膀>,思考了为什么要基于node.js来做像RTSP.SIP.GB28181这种信令协议的流媒体服务器,现在新版本的EasyDarwin(based on node.js)已经全线替换了原来基于Apple的Darwin Streaming Server的流媒体服务器版本,体验及效果非常好,而且相较…
本文转自EasyDarwin开源团队成员Alex的博客:http://blog.csdn.net/cai6811376/article/details/52400226 EasyDarwin团队的Babosa对EasyDarwin流媒体服务器的性能瓶颈进行了分析,并提出了优化方案.EasyDarwin开源流媒体服务器性能瓶颈分析及优化方案设计 这里,根据Babosa提出的优化方案,以及Work-stealing的算法特性,提出用Work-stealing算法对EasyDarwin进行优化. 什么…
欢迎加入我们的开源流媒体服务器项目:EasyDarwin, EasyDarwin是在Apple开源流媒体服务器Darwin Streaming Server(v6.0.3)基础上进行开发和维护的免费开源.高效.易扩展的面向企业级的流媒体平台框架,EasyDarwin开始于2013年,遵循 Apple开源License APSL,为了敏捷流媒体服务器开发和简化企业流媒体应用开发而诞生的. EasyDarwin一直以来保持Darwin原有体系结构和设计思想,在保持出色的性能和简洁的代码同时,也在不断…
本文来自EasyDarwin团队Fantasy(fantasy(at)easydarwin.org) 一. EasyDarwin网络模型介绍 EventContext负责监听所有网络读写事件,EventContext::RequestEvent每次插入一个监听事件到 监听列表(select 文件描述符集合),EventThread::Entry()死循环监听添加到该FD_SET的所有文件描述符的 事件.Entry()->select_waitevent()每次返回下一个要处理的事件节点,包括事件…
经过春节前后将近2个月的开发和稳定调试.测试,EasyDarwin开源流媒体服务器终于成功将底层select网络模型修改优化成epoll网络模型,将EasyDarwin流媒体服务器在网络处理的效率上提升到了另一个档次(这里得感谢EasyDarwin开源团队成员Fantasy的无私贡献,是他牺牲宝贵的业余休息时间,连夜奋战开发和调试,才能取得EasyDarwin底层改造的成果). 众所周知,select模型在处理大并发量的网络请求上具有一些瓶颈,默认在Linux上同时能够处理的网络连接数FD_SE…
最近在开发EasyDarwin开源流媒体服务器HLS直播的时候发现一个现象:在PC上用flash player播放HLS和在ios上面播放HLS时,效果明显不同,在ios上播放非常稳定,而在flash player上播放会经常性卡住,需要重新刷新网页才能够正常播放.经过不断跟踪调试,发现问题主要出在浏览器上,浏览器在请求.更新m3u8文件的过程中,有缓存,导致请求到的m3u8列表是过期的,里面的ts列表有文件已经被删除了,导致m3u8播放器请求已经不存在的ts文件,就卡住了,所以我们测试过,比较…
我们已经出台SlidingMenu使用:Android开源项目SlidingMenu本学习笔记(一个),接下来再深入学习下.依据滑出项的Menu切换到相应的页面 文件夹结构: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGVuZzB6aGFvdGFp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt=""> 点击B…
直接进入正题 我们在使用开源规则引擎 Drools 的时候, 启动的时候可能会抛出如下异常: Caused by: java.lang.ClassCastException: cn.com.chengzi.drools.domain.cofing.DroolsAutoConfiguration$1 cannot be cast to org.drools.compiler.kie.builder.impl.InternalKieModule at org.drools.compiler.kie.…
在Laravel框架上开发了几天,不得不说,确实比较优雅,处理问题逻辑比较清楚.     今天打算在CentOS 7上配置一个Laravel,之前都是在本机上开发,打算实际配置一下.     1)系统上已经安装了Apache.PHP.mysql,安装命令为yum install httpd php mysql           因为CentOS 7自带的php模块很少,如果需要增加模块,需要编译才行,所以需要php-devel模块,用yum install php-devel命令就可以了.  …
Linux学习笔记(11)linux网络管理与配置之一——配置路由与默认网关,双网卡绑定(5-6) 大纲目录 0.常用linux基础网络命令 1.配置主机名 2.配置网卡信息与IP地址 3.配置DNS客户端 4.配置名称解析顺序 5.配置路由与默认网关 6.双网卡绑定 5.配置路由与默认网关 5.1 临时: [1]临时网关配置:route add/del default gw 10.10.10.1 [2]临时路由配置: (1)通过网卡设备出去:route add/del -net 10.10.1…
Linux学习笔记(10)linux网络管理与配置之一——主机名与IP地址,DNS解析与本地hosts解析 大纲目录 0.常用linux基础网络命令 1.配置主机名 2.配置网卡信息与IP地址 3.配置DNS客户端 4.配置名称解析顺序 5.配置路由与默认网关 6.双网卡绑定 本章目录 #新添加了一张网卡eth1,IP地址为10.10.10.1,具体操作设置请看 1中操作 1.配置主机名 1.1 修改主机名称 [1]hostname new_hostname #直接修改本地主机名    [2]v…
一. lal 简介 lal是开源直播流媒体网络传输项目,主要由三部分组成: lalserver:流媒体转发服务器.类似于nginx-rtmp-module等服务,但支持更多的协议,提供更丰富的功能. demo:一些小应用,比如推.拉流客户端,压测工具,流分析工具,调度示例程序等.类似于ffmpeg.ffprobe等应用. pkg:流媒体协议库.类似于ffmpeg的libavformat等库. lal github地址: https://github.com/q191201771/lal 以下是l…
背景分析 在之前的一篇博客<web无插件播放RTSP摄像机方案,拒绝插件,拥抱H5!>中,描述了实现一套H5无插件直播方案的各个组件的参考建议,又在博客<EasyNVR H5流媒体服务器方案架构设计之视频能力平台>中对整体的架构设计思路做了总结,做高内聚.低耦合的视频能力平台,不涉足业务部分!那么今天,我们来公开一下EasyNVR到底是如何实现这些功能的: 一.程序框架 熟悉EasyDarwin的同学都知道,EasyDarwin作为老牌的流媒体功能框架,在很多领域是完全能够满足开发…
EasyPusher主要有三部分组件组成:采集,编码,叠加,上传.在这个基础上同时支持本地存储\后台预览的功能.主要业务模块与相关类之间的关系如图所示: Created with Raphaël 2.1.0StreamActivityStreamActivity摄像头线程摄像头线程BackgroundCameraServiceBackgroundCameraService编码线程编码线程PusherPusherMuxerMuxer音频线程音频线程音频编码线程音频编码线程TxtOverlayTxt…
本文转自EasyDarwin团队成员Penggy的博客:http://www.jianshu.com/p/f63f5b7c691b 问题描述: 近期我开发了一款新一代的RTMP/HLS流媒体服务器软件EasyDSS,详细情况大家可以到www.easydss.com获取,EasyDSS中的RTMP直播流播放尝试过好几款flash播放器,最终我们选型用VideoJS,兼容PC/Android/iOS全平台的WEB终端播放,非常好用! 浏览器中使用videojs 播放rtmp流时,出现了一个奇怪的现象…
EasyDarwin现有架构介绍 EasyDarwin的现有架构对网络事件的处理是这样的,每一个Socket连接在EasyDarwin内部的对应存在形式就是一个Session,不论是RTSP服务对应的RTSPSession,还是HTTP服务对应的HTTPSession,都是一个继承自Task类的具体应用层对象: EasyDarwin有一个专门的网络事件处理的线程:EventThread(网络事件线程),EventThread一方面采用select(Windows)或者epoll(Linux)的网…
EasyHLS  Github:https://github.com/EasyDarwin/EasyHLS EasyHLS是什么? EasyHLS是EasyDarwin开源流媒体社区开发的一款HLS打包库,接口非常简单,只需要传入打包的文件名.切片存放的目录.打包间隔以及切片数,EasyHLS库就能轻松将H264+AAC的流媒体切片,提供给WEB服务器进行HLS流媒体发布,我们提供了两套操作示例: EasyHLS_RTSP:以RTSPClient的形式,从RTSP URL将摄像机音视频获取到本地…
前言 前一段时间,我们为EasyDarwin实现了客户端快速显示画面/听到同步声音的缓存关键帧检索方案,具体的实现方法分别在<EasyDarwin手机直播是如何实现的快速显示视频的方法>和<EasyDarwin手机直播转发快速显示问题之音频处理过程>两篇博客中可以了解到具体的实现原理,实现的方法代码也可以在EasyDarwin的ReflectorStream类中找到: 问题需求 经过了一段时间的测试和项目检验,按照上述描述的流程,能够很好地实现快速显示功能,但转发过程中,还会出现随…
-本篇由团队成员Fantasy供稿! 原始版本 在Darwin Streaming Server版本中,推送端DoAnnounce的时候后服务器会根据easydarwin.xml中配置的movies_folder目录生成一个sdp文件,存放推送流的sdp文件信息,在拉取客户端,Darwin Streaming Server接收到DESCRIBE请求,检查服务器movies_folder目录下是否有对应请求路径的sdp文件,如果有则返回对应的sdp文件: 原始版本问题 很多时候,Darwin St…
简介 Spring Cloud Config为分布式系统中的外部化配置提供了服务器端和客户端支持,服务器端统一管理所有配置文件,客户端在启动时从服务端获取配置信息.服务器端有多种配置方式,如将配置文件存储在本地或者存储在远程Git仓库等等,并且在配置文件被更改时,可以通过多种途径如actuator的/refresh端点或者Spring Cloud Bus来动态刷新客户端的配置,而无需重新启动客户端. 项目介绍 sc-parent,父模块(请参照SpringCloud学习笔记(1):Eureka注…
自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我的一个博文系列<Hadoop学习笔记系列>.其实,早在2014年Hadoop2.x版本就已经开始流行了起来,并且已经成为了现在的主流.当然,还有一些非离线计算的框架如实时计算框架Storm,近实时计算框架Spark等等.相信了解Hadoop2.x的童鞋都应该知道2.x相较于1.x版本的更新应该不是一丁半点,最显著的体现在两点: (1)H…