SRS(Simple RTMP Server)  是国人写的一款非常优秀的开源流媒体服务器软件,可用于直播/录播/视频客服等多种场景,其定位是运营级的互联网直播服务器集群. 一.安装 官网提供了3种安装方式: 从源码编译安装.利用docker(学习用) .直接下载安装包安装 相信很多人主要目的是出于学习srs如何使用,对c++语言本身可能并不擅长,所以本文仅介绍"如何利用安装包"安装部署. 先从官网下载最新的稳定发布版本(目前是2.0r6) http://ossrs.net/srs.r…
对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的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_…
EasyDarwin开源流媒体服务器(www.easydarwin.org),拉转推是一个很有意义的功能,它可将一个独立的RTSP数据源"拉"到服务器,再通过转发协议转发给多个客户端,或者通过EasyDarwin的本地存储功能进行存储.国内大多摄像机都支持RTSP协议,通过拉转推可将第三方摄像机接入到EasyDarwin服务器. IPCEasyDarwin第三方RTSP源本地存储Client1Client2Client3拉流拉流ffmpeg转发转发转发IPCEasyDarwin第三方R…
Tomcat安装 通常情况下我们要配置Tomcat是很容易的一件事情,但是如果您要架设多用户多服务的Java虚拟主机就不那么容易了.其中最大的一个问题就是Tomcat执行权限.普通方式配置的Tomcat是以root超级管理员的身份运行的,显然,这是非常危险的,可想而知,一但网站被挂马,您的整个服务器都可以被黑客控制了.而通过编译或在线(例如redhat系列的yum, debian系列的apt-get)的方式安装,一个服务器上又只能装一个tomcat的服务,如果将多个网站放到同一个tomcat服务…
EasyDarwin开源流媒体服务器(www.easydarwin.org)现在使用Go版本实现了.最新的代码提交,已经支持了推流(或者拉流)的同时进行本地存储. 本地存储的原理,是在推流的同时启动ffmpeg作为一路Client来做存储.ffmpeg在demux和mux的工作方面已经十分成熟,我们没必要再重复发明轮子.因此这种做法十分取巧而且简单有效,也不会侵入原来的代码架构.如下图所示: RTSP摄像机EasyDarwin本地存储推流使用ffmpeg进行拉流和存储RTSP摄像机EasyDar…
OracleDesigner学习笔记1――安装篇   QQ:King MSN:qiutianwh@msn.com Email:qqking@gmail.com 一.       前言 Oracle是当今最流行的关系型数据库之一,和很多朋友一样,我也是一个Oracle的爱好者,从开始的7.3(我所接触的第一个版本)到现在的10G,可以说Oracle公司每推出一个新的版本,都有很多令人激动的新东西带给我们,这可能也是令广大朋友着迷的地方吧. 众所周之,Oracle公司并仅仅是一个关系型数据库厂商,她…
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的解析一…
在去年我们还未开始开发基于node.js的新版本EasyDarwin RTSP开源流媒体服务器的时候,我写了一篇博客<对EasyDarwin开源项目后续发展的思考:站在巨人的肩膀上再跳上另一个更高的肩膀>,思考了为什么要基于node.js来做像RTSP.SIP.GB28181这种信令协议的流媒体服务器,现在新版本的EasyDarwin(based on node.js)已经全线替换了原来基于Apple的Darwin Streaming Server的流媒体服务器版本,体验及效果非常好,而且相较…
背景 近期跟开源团队商量,想在EasyDarwin上继续做一些功能扩展,目前EasyDarwin开源流媒体服务器只能够实现高效的RTSP推流直播转发/分发功能,输入与输出都是RTSP/RTP流,不能够很好滴满足当下日益火热的互联网直播/录播的需求,我们计划在当前节点EasyDarwin-v7.3.17.0325基础上继续扩展几个功能: EasyDarwin服务器端直播存储功能: 对RTSP直播推流同步输出RTMP.HLS直播功能: 直接接入RTSP IPCamera输出RTMP.HLS直播功能:…
本文转自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.…
数据库学习笔记3 基本的查询流 2   order by子句对查询结果集进行排序 多列和拼接 多列的方式就很简单了 select firstname,lastname from person.person order by lastname,firstname; 这句话表示根据lastname和firstname两列进行排序,并且是先按照lastname进行排序如果有相同的值就按照firstname进行排序. 拼接很有意思,可以写成这个样子 select lastname+','+firstna…
javaSE学习笔记(15) ---缓冲流.转换流.序列化流 缓冲流 昨天复习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流.比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等.这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,相当于是对基本流对象的一种增强. 概述 缓冲流,也叫高效流,是对4个基本的FileXxx 流的增强,所以也是4个流,按照数据类型分类: 字节缓冲流:BufferedInputStream,BufferedOutput…
1 说明与概述 1.1 说明 以下内容大部分来源于TP6完全开发手册,以手册为主附上个人理解,仅作学习使用. 1.2 概述 第一篇学习笔记,主要记录TP6的基础,包括TP6简介,安装,Hello World,目录结构,配置等. 2 TP6 TP是一个免费的开源的,快速的,简单的面向对象的轻量级的PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的.TP遵循Apache2开源许可协议发布,意味着可以免费使用TP,甚至允许基于TP开发的应用开源或商业产品发布/销售. 3 TP6主要新特…
下载地址  http://www.cubrid.org/?mid=downloads&item=any&os=detect&cubrid=9.3.0 选择适合你的服务器版本 linux windows  64等 下面的是工具,也可以选择性下载 二 安装. 我选的是windows 版本. 一路下一步就可以. 其中有2个步骤是可选的,一个是安装路径,一个是是否安装示例数据库. 注:这个软件语言只有英文和韩文 三  查看 安装情况.  右下方的托盘会有个图标. 看看服务是否成功启动. 四…
在windows下安装Nginx其实非常简单,只需如下几个步骤: 1. 在Nginx官网下载相应版本的安装程序,上面有最新版.稳定版等各种版本,正式运营的项目建议下载最新的稳定版 2.将下载后的压缩包解压到将要安装Nginx的硬盘上 Nginx文件夹内的架构目录为: 3.使用命令提示符工具,进入上述Nginx文件夹内,使用命令 start nginx.exe 安装Nginx,具体过程如下 4.安装成功后,会在任务管理器中看到nginx的进程 5.如果进程中没有出现Nginx.exe,说明安装失败…
一. lal 简介 lal是开源直播流媒体网络传输项目,主要由三部分组成: lalserver:流媒体转发服务器.类似于nginx-rtmp-module等服务,但支持更多的协议,提供更丰富的功能. demo:一些小应用,比如推.拉流客户端,压测工具,流分析工具,调度示例程序等.类似于ffmpeg.ffprobe等应用. pkg:流媒体协议库.类似于ffmpeg的libavformat等库. lal github地址: https://github.com/q191201771/lal 以下是l…
零零散散学了几天nodejs,进度一直停滞不前,今天沉下心来好好看了下nodejs的介绍和代码.自己也试着玩了下,算是有点入门了. 这里来做个学习笔记. ———————————————————————————————————————————————————————————— 首先简单介绍下nodejs.引用大牛们的介绍: nodejs是由chrome浏览器,V8引擎,c++编写,本质是一个JavaScript运行环境. 再来说下本菜自己的理解:nodejs是一套支持js语言做服务器端操作的运行环…
技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔记:http://www.open-open.com/lib/view/open1423703640748.html 深入浅出docker:http://www.infoq.com/cn/articles/docker-core-technology-preview 安装 参考:http://www…
github地址:https://github.com/ossrs/srs 1,srs下载 http://ossrs.net/srs.release/releases/index.html 选择正式发形版 2,安装 # unzip SRS-CentOS6-x86_64-1.0.32.zip # cd SRS-CentOS6-x86_64-1.0.32 # bash INSTALL //安装 # /etc/init.d/srs start //启动 3,推流 ffmpeg -re -i "/roo…
EasyPusher主要有三部分组件组成:采集,编码,叠加,上传.在这个基础上同时支持本地存储\后台预览的功能.主要业务模块与相关类之间的关系如图所示: Created with Raphaël 2.1.0StreamActivityStreamActivity摄像头线程摄像头线程BackgroundCameraServiceBackgroundCameraService编码线程编码线程PusherPusherMuxerMuxer音频线程音频线程音频编码线程音频编码线程TxtOverlayTxt…
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将摄像机音视频获取到本地…