在去年我们还未开始开发基于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是这样的,国内、国外很多其他类型的开源项目都面临了这个问题,使用方便,但查问题、改问题就找不到人手了;

还有一个问题,就是现在大部分的流媒体服务器没有非常好的后台和权限管理功能,而这个又跟具体流媒体服务器是无关的,所以,做上吧,怕是鸡肋,不做吧,感觉很深奥,入门困难;



以上都是之前的思考,现在看来,都是比较有前瞻性的:

  1. RTSP、SIP、GB28181这种文本类型的通信协议,是非常适合于js这种语言进行解析和处理的;
  2. 前端与后端的结合更加方便了,实际上,我们在开发流媒体系统比较多了之后就会发现,大部分的流媒体系统,其实核心底层的东西并不多,大部分都还是上层的业务逻辑的控制,这种情况下,采用js、Python、golang这些语言都能很快搞定业务逻辑,比C++来开发效率要高多了;
  3. 再也不用担心底层性能和稳定性的问题了,都是站在巨人的肩膀上,只要安心做逻辑就好了;

后续我们会继续按照之前的思路往前推进:

  1. 使用类似于node.js框架进行网络I/O;

  2. 使用C++编写node插件进行流媒体关于复杂计算类型的功能;

  3. 使用node.js后端语言进行管理页面和权限控制的开发;

优势:

  • 即使EasyDarwin上层的逻辑开发停滞了,但是node.js体系还在推进,也就是说EasyDarwin的底层还是在不断优化和发展的;

  • 不再仅仅是C++的开发才能参与到项目的开发了,各种前端、后端的开发都能加入进来了,开发群体和开发门槛大大改观;

  • node.js配套组件非常多,很多接口化、管理化、数据库相关的操作,都不用再经过底层C++了,上层直接就搞定了,底层只需要关注核心流媒体部分的功能!

获取更多信息

邮件:support@easydarwin.org

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2017

我为什么选择采用node.js来做新一代的EasyDarwin RTSP开源流媒体服务器的更多相关文章

  1. Node.js可以做些什么?

    就像 JavaScript 至client天生,Node.js 生于网络.Node.js 我们可以做更多的不是开发一个网络 站这么简单,采用 Node.js.您可以轻松地开发:  具有复杂逻辑的站点 ...

  2. Node.js能够做什么?

    正如 JavaScript 为client而生.Node.js 为网络而生.Node.js 能做的远不止开发一个网 站那么简单,使用 Node.js,你能够轻松地开发:  具有复杂逻辑的站点:  ...

  3. Node.js学习笔记(4)——除了HTTP(服务器和客户端)部分

    很多node入门的书里面都会在介绍node特性的时候说:单线程,异步式I/O,事件驱动. Node不是一门语言,它是运行在服务器端的开发平台,官方指定语言为javascript. 阻塞和线程: 线程在 ...

  4. Node.js CMS——基于 NestJS/NuxtJS 的完整开源项目

    这是一款轻量级的基于 Node.js 的开源 CMS,采用前后端分离开发模式,集成了 API.后台管理.WEB 展示三个完整项目.开箱即是一套完整的企业网站,适合企业.个人直接使用或二次开发. API ...

  5. 使用node.js 文档里的方法写一个web服务器

    刚刚看了node.js文档里的一个小例子,就是用 node.js 写一个web服务器的小例子 上代码 (*^▽^*) //helloworld.js// 使用node.js写一个服务器 const h ...

  6. node.js + mongodb 做项目的详解(一)

    想写博客很长时间了,因为一直身患懒癌,所以一直拖到了现在.markdown的语法也是刚刚学,试验一下效果好了不说了,直接上干货了.----------------------------------- ...

  7. node.js + mongodb 做项目的详解(二)

    这次内容是结合bootstrap把登陆注册做好,还有就是express的中间件等问题. 看这篇博客之前建议先看我上篇写的那篇博客http://www.cnblogs.com/hubwiz/p/4118 ...

  8. node.js之nodemon 代码热更新 修改代码后服务器自动重启

    1.安装nodemon: npm install -g nodemon //全局安装 npm install nodemon --save //局部安装 2.在项目根目录下创建 nodemon.jso ...

  9. 解决用EasyDarwin开源流媒体服务器做HLS直播时Flash Player卡住的问题

    最近在开发EasyDarwin开源流媒体服务器HLS直播的时候发现一个现象:在PC上用flash player播放HLS和在ios上面播放HLS时,效果明显不同,在ios上播放非常稳定,而在flash ...

随机推荐

  1. python gzip压缩

    1 import urllib2 2 from StringIO import StringIO 3 import gzip 4 5 def loadData(url): 6 request = ur ...

  2. cubemap

    cubemap 画的时候 是一张一张画 并不是画成 ------- |       | |       |        |       |       | |        | 这样一个位置 而是一 ...

  3. http://www.cnblogs.com/dolphin0520/p/3949310.html

    http://www.cnblogs.com/dolphin0520/p/3949310.html

  4. 通过脚本发送zabbix邮件报警

    zabbix原生的报警媒介类型中,邮件报警是我们常用的方式.当我们在CentOS6上面安装zabbix3.0并配置邮件报警的时候,在邮件配置正确的前提下,不管触发器如何触发,邮件总是发送不出去,但是在 ...

  5. [Algorithm] Median Maintenance algorithm implementation using TypeScript / JavaScript

    The median maintenance problem is a common programming challenge presented in software engineering j ...

  6. A read-only user or a user in a read-only database is not permitted to disable

    A read-only user or a user in a read-only database is not permitted to disable 出现如题的问题通常是由于db.lck的所属 ...

  7. 倍福TwinCAT(贝福Beckhoff)基础教程 松下驱动器试运行提示过速度保护怎么办

    在试运行的时候,取消勾选自动设定,然后可以自己设置过速度等级设置和过载等级设置     更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaoh ...

  8. javascript 设计模式 -- 发布/订阅模式

    直接上代码: index.html : <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  9. vue 的 起手式

    代码: vue.js // vue 起手势 (function(root,factory) { root.Vue = factory(); })(this,function(){ // 设置基础的默认 ...

  10. Oracle 导入导出数据库

    imp userid=yrsuser/yrsuser2587 fromuser=yrsuser touser=yrsuser file=E:\yrs.dmp exp userid=yrsuser/yr ...