我为什么选择采用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 ...
随机推荐
- ES,ZK,Mysql相关参数优化
1.ES 内存调优: vi config/jvm.options -Xms16g -Xmx16g 2.Zookeeper参数配置调优 2.1\在conf目录下 vi java.env export J ...
- Apache环境下搭建KodExplorer网盘
Apache环境下搭建KodExplorer网盘 环境说明: 系统版本 CentOS 6.9 x86_64 软件版本 yum安装httpd和php kodexplorer4.25 1 ...
- 怎么windows10下设置始终以管理员身份运行
怎么windows10下设置始终以管理员身份运行 学习了:https://jingyan.baidu.com/article/e2284b2b6e6df8e2e7118d7a.html 可以对快捷方式 ...
- [Tools] Support VS Code Navigation and Autocomplete Based on Webpack Aliases with jsconfig.json
It's common to setup Webpack aliases to make imports much more convenient, but then you lose the abi ...
- Android SqliteOpenHelper详解
一. SQLite介绍 SQLite是android内置的一个很小的关系型数据库. SQLite的官网是http://www.sqlite.org/,可以去下载一些文档或相关信息. 博客中有一篇有稍微 ...
- Protractor(angular定制的e2e)的简易入门
这周项目终于上了e2e的测试,之前一直都没有测试的概念. 感谢我的领导和同志引入这样的理念和思想. 多的不说. 具体的环境搭建可以参考 http://jackhu.top/article/5607fa ...
- C++ 大规模数据排序(100G数据 使用 4G 内存 排序)
思路很简单,先分段排序,存储到临时文件中,然后合并. 使用10000个整数来模拟大数据,每次读取100个到内存中. #include <stdint.h> #include <std ...
- goruntine
一.出让时间片 runtime.Gosched() 二.同步锁 Go语言包中的sync包提供了两种锁类型:sync.Mutex和sync.RWMutex.Mutex是最简单的一种锁类型,同时也比较暴力 ...
- 【IOS】mac终端运行.sh文件总是提示permission denied
如果我目录jni有一个list.sh文件 我直接 nxgametekiMacBook-Air:jni luonan$ ./list.sh ../../Classes 提示 permission de ...
- ubuntu下设置静态ip
直接修改系统配置文件ubuntu的网络配置文件是:/etc/network/interfacesubuntu命令行修改网络配置方法前面auto eth?,让网卡开机自动挂载. 为网卡配置静态IP地址 ...