我為什么選擇采用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是這樣的,國內、國外很多其他類型的開源項目都面臨了這個問題,使用方便,但查問題、改問題就找不到人手了;

還有一個問題,就是現在大部分的流媒體服務器沒有非常好的后台和權限管理功能,而這個又跟具體流媒體服務器是無關的,所以,做上吧,怕是雞肋,不做吧,感覺很深奧,入門困難;


以上都是之前的思考,現在看來,都是比較有前瞻性的:

  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

EasyDarwin


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM