我为什么选择采用node.js来做新一代的EasyDarwin RTSP开源流媒体服务器
在去年我们还未开始开发基于node.js的新版本EasyDarwin RTSP开源流媒体服务器的时候,我写了一篇博客《对EasyDarwin开源项目后续发展的思考:站在巨人的肩膀上再跳上另一个更高的肩膀》,思考了为什么要基于node.js来做像RTSP、SIP、GB28181这种信令协议的流媒体服务器,现在新版本的EasyDarwin(based on node.js)已经全线替换了原来基于Apple的Darwin Streaming Server的流媒体服务器版本,体验及效果非常好,而且相较于之前的C++版本,新版本极大地降低了开发门槛,很多开发者都踊跃加入了进来!
总结与思考
“
EasyDarwin是从安防行业发展过来的,经过多年的发展,还是有非常强的安防属性在里面,我一直在思考EasyDarwin的发展定位,首先,我们要做的是Easy,如何Easy,一方面是使用者要Easy,非常Easy进行编译、部署和运行,另一方面,如何二次开发Easy:
使用Easy:这个就要靠完善的使用文档、视频教程、简易的部署向导来实现了,这个相信是在现有架构基础上可以再继续优化的;
二次开发Easy:这个就费劲了,现在的情况是一个企业要找那么一两个会C++的开发,已经非常困难了,要对EasyDarwin做一点点的功能扩展,难于登天!当然,这不仅仅是EasyDarwin是这样的,国内、国外很多其他类型的开源项目都面临了这个问题,使用方便,但查问题、改问题就找不到人手了;
还有一个问题,就是现在大部分的流媒体服务器没有非常好的后台和权限管理功能,而这个又跟具体流媒体服务器是无关的,所以,做上吧,怕是鸡肋,不做吧,感觉很深奥,入门困难;
”
以上都是之前的思考,现在看来,都是比较有前瞻性的:
- RTSP、SIP、GB28181这种文本类型的通信协议,是非常适合于js这种语言进行解析和处理的;
- 前端与后端的结合更加方便了,实际上,我们在开发流媒体系统比较多了之后就会发现,大部分的流媒体系统,其实核心底层的东西并不多,大部分都还是上层的业务逻辑的控制,这种情况下,采用js、Python、golang这些语言都能很快搞定业务逻辑,比C++来开发效率要高多了;
- 再也不用担心底层性能和稳定性的问题了,都是站在巨人的肩膀上,只要安心做逻辑就好了;
后续我们会继续按照之前的思路往前推进:
使用类似于node.js框架进行网络I/O;
使用C++编写node插件进行流媒体关于复杂计算类型的功能;
使用node.js后端语言进行管理页面和权限控制的开发;
优势:
即使EasyDarwin上层的逻辑开发停滞了,但是node.js体系还在推进,也就是说EasyDarwin的底层还是在不断优化和发展的;
不再仅仅是C++的开发才能参与到项目的开发了,各种前端、后端的开发都能加入进来了,开发群体和开发门槛大大改观;
node.js配套组件非常多,很多接口化、管理化、数据库相关的操作,都不用再经过底层C++了,上层直接就搞定了,底层只需要关注核心流媒体部分的功能!
获取更多信息
Copyright © EasyDarwin.org 2012-2017

我为什么选择采用node.js来做新一代的EasyDarwin RTSP开源流媒体服务器的更多相关文章
- Node.js可以做些什么?
就像 JavaScript 至client天生,Node.js 生于网络.Node.js 我们可以做更多的不是开发一个网络 站这么简单,采用 Node.js.您可以轻松地开发: 具有复杂逻辑的站点 ...
- Node.js能够做什么?
正如 JavaScript 为client而生.Node.js 为网络而生.Node.js 能做的远不止开发一个网 站那么简单,使用 Node.js,你能够轻松地开发: 具有复杂逻辑的站点: ...
- Node.js学习笔记(4)——除了HTTP(服务器和客户端)部分
很多node入门的书里面都会在介绍node特性的时候说:单线程,异步式I/O,事件驱动. Node不是一门语言,它是运行在服务器端的开发平台,官方指定语言为javascript. 阻塞和线程: 线程在 ...
- Node.js CMS——基于 NestJS/NuxtJS 的完整开源项目
这是一款轻量级的基于 Node.js 的开源 CMS,采用前后端分离开发模式,集成了 API.后台管理.WEB 展示三个完整项目.开箱即是一套完整的企业网站,适合企业.个人直接使用或二次开发. API ...
- 使用node.js 文档里的方法写一个web服务器
刚刚看了node.js文档里的一个小例子,就是用 node.js 写一个web服务器的小例子 上代码 (*^▽^*) //helloworld.js// 使用node.js写一个服务器 const h ...
- node.js + mongodb 做项目的详解(一)
想写博客很长时间了,因为一直身患懒癌,所以一直拖到了现在.markdown的语法也是刚刚学,试验一下效果好了不说了,直接上干货了.----------------------------------- ...
- node.js + mongodb 做项目的详解(二)
这次内容是结合bootstrap把登陆注册做好,还有就是express的中间件等问题. 看这篇博客之前建议先看我上篇写的那篇博客http://www.cnblogs.com/hubwiz/p/4118 ...
- node.js之nodemon 代码热更新 修改代码后服务器自动重启
1.安装nodemon: npm install -g nodemon //全局安装 npm install nodemon --save //局部安装 2.在项目根目录下创建 nodemon.jso ...
- 解决用EasyDarwin开源流媒体服务器做HLS直播时Flash Player卡住的问题
最近在开发EasyDarwin开源流媒体服务器HLS直播的时候发现一个现象:在PC上用flash player播放HLS和在ios上面播放HLS时,效果明显不同,在ios上播放非常稳定,而在flash ...
随机推荐
- 新人补钙系列教程之:Molehill底层API中最重要的Context3D
Context3D,是一个三维空间的处理环境,负责创建并处理三维对象的各个要素如顶点.片段.透视等等,并将处理的结果使用AGAL(Adobe图形汇编语言)上传给显卡进行运算,运算结果最终被回传给CPU ...
- hdu4671 思维构造
pid=4671">http://acm.hdu.edu.cn/showproblem.php? pid=4671 Problem Description Makomuno has N ...
- Spring管理的bean初始化方法的三种方式,以及@PostConstruct不起作用的原因
1:Spring 容器中的 Bean 是有生命周期的,spring 允许 Bean 在初始化完成后以及销毁前执行特定的操作.下面是常用的三种指定特定操作的方法: 通过实现InitializingBea ...
- vue笔记一
一.Vue基本知识点 1.声明式渲染 <div id="app">{{ msg }}</div> <script> var app = new ...
- Vector的一种实现(二)
增加了逆置迭代器的实现 以及swap功能 完整代码如下: #ifndef VECTOR_H_ #define VECTOR_H_ #include <stddef.h> #incl ...
- inspect模块详解
inspect模块主要提供了四种用处: (1).对是否是模块,框架,函数等进行类型检查. (2).获取源码 (3).获取类或函数的参数的信息 (4).解析堆栈 使用inspect模块可以提供自省功能, ...
- Git提交时提示‘The file will have its original line endings in your working directory’
Git提交时提示'The file will have its original line endings in your working directory' Git出现错误 git add -A ...
- JavaScript 数组去重 方法汇总
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- Maven - error in opening zip file
在一个maven工程中,有时执行mvn打包,部署,编译等命令,例如mvn clean install -DskipTests -U等命令时,会报类似(error in opening zip file ...
- 原生JS实现的h5小游戏-植物大战僵尸
代码地址如下:http://www.demodashi.com/demo/12755.html 项目介绍 本项目是利用原生js实现的h5小游戏-植物大战僵尸,主要结合了一下自己对于h5小游戏的理解,结 ...