天天看點

我為什麼選擇采用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++了,上層直接就搞定了,底層隻需要關注核心流媒體部分的功能!

擷取更多資訊

郵件:[email protected]

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2017

我為什麼選擇采用node.js來做新一代的EasyDarwin RTSP開源流媒體伺服器

繼續閱讀