幾種開源的媒體服務器對比

javase 6年前發布 | 30K 次閱讀 開源 RTMP webRTC

1 概念

1.1 RTP

實時傳輸協議 - 維基百科,自由的百科全書

實時傳輸協議(Real-time Transport Protocol或簡寫RTP)是一個網絡傳輸協議,它是由IETF的多媒體傳輸工作小組1996年在RFC 1889中公布的。

RTP協議詳細說明了在互聯網上傳遞音頻和視頻的標準數據包格式。它一開始被設計為一個多播協議,但后來被用在很多單播應用中。RTP協議常用于流媒體系統(配合RTSP協議),視頻會議和一鍵通(Push to Talk)系統(配合H.323或SIP),使它成為IP電話產業的技術基礎。RTP協議和RTP控制協議RTCP一起使用,而且它是創建在 UDP 協議上的。

1.2 RTMP

實時消息協議 - 維基百科,自由的百科全書

實時消息協議(英語:Real-Time Messaging Protocol,縮寫RTMP)也稱實時消息傳輸協議,是最初由Macromedia為通過互聯網在Flash播放器與一個服務器之間傳輸流媒體音頻、視頻和數據而開發的一個專有協議。Macromedia后被Adobe Systems收購,該協議也已發布了不完整的規范供公眾使用。

RTMP協議有許多變種:

  1. 默認使用TCP端口1935的純粹(plain)協議。
  2. RTMPS ,通過一個TLS/SSL連接傳輸RTMP。
  3. RTMPE ,使用Adobe自有安全機制加密的RTMP。雖然實現的細節為專有,但該機制使用行業標準的密碼學原函數。
  4. RTMPT ,用HTTP封裝以穿透防火墻。RTMPT通常在TCP通信端口80和443上使用明文請求來繞過大多數的公司流量過濾。封裝的會話中可能攜帶純粹的RTMP、RTMPS或RTMPE數據包。
  5. RTMFP , 使用UDP而非TCP的RTMP,取代RTMP Chunk Stream。Adobe Systems開發了安全的實時媒體流協議包,可以讓最終用戶直接地相互連接(P2P)。

1.3 WebRTC

https://webrtc.org/

WebRTC is a free, open projectthat provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.

Our mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.

The WebRTC initiative is a project supported by Google , Mozilla and Opera , amongst others.

支持的瀏覽器和平臺:

  • Chrome
  • Firefox
  • Opera
  • Android
  • iOS

特點:

  • 基于瀏覽器,且主流瀏覽器都支持,跨平臺能力強
  • 默認P2P,但是需要TURN服務器作為fallback
  • 自適應碼率 </li> </ul>

    相關資料:

    1.4 HLS

    HTTP Live Streaming - 維基百科,自由的百科全書

    HTTP Live Streaming(縮寫是HLS)是一個由蘋果公司提出的基于HTTP的流媒體網絡傳輸協議。它的工作原理是把整個流分成一個個小的基于HTTP的文件來下載,每次只下載一些。當媒體流正在播放時,客戶端可以選擇從許多不同的備用源中以不同的速率下載同樣的資源,允許流媒體會話適應不同的數據速率。在開始一個流媒體會話時,客戶端會下載一個包含元數據的extended M3U (m3u8) playlist文件,用于尋找可用的媒體流。

    HLS只請求基本的HTTP報文,與實時傳輸協議(RTP)不同,HLS可以穿過任何允許HTTP數據通過的防火墻或者代理服務器。它也很容易使用內容分發網絡(CDN)來傳輸媒體流。

    2017年8月, RFC 8216 發布,描述了HLS協議第7版的定義

    RFC 8216

    2 開源方案

    2.0 開源方案選型要考慮的因素:

    10 Tips for Choosing the Right WebRTC Open Source Media Server Framework

    1. 你是否深刻理解其代碼?
    2. 代碼版本是否足夠新?
    3. 有誰在使用它?
    4. 它的文檔是否齊全?
    5. 它可以debug嗎?
    6. 它可以伸縮嗎?
    7. 它使用哪種語言?
      • 對于媒體服務器而言,這種語言的性能是否足夠?
      • 團隊是否足夠了解這門語言?
    8. 是否適應你現有的Signaling范式?
      • 你在看的Media Server是否容易與你決定使用的STUN/TURN服務器集成
    9. 許可證是否適合你?
    10. 誰在提供支持?
      • 很多成功的、被良好維護的開源項目背后都有一個商業模式,尤其是中小型的項目,這意味著有一個團隊以此為謀生手段。
      • 具備可選的付費支持意味著:
        • 有人愿意全職來改善這東西,而不是作為愛好來維護。
        • 如果你需要緊急幫助,只要花錢就能得到。

    2.1 Red5

    官網 http://red5.org/

    Github https://github.com/Red5

    非官方資料:

    特性:

    • Server
      • 自動伸縮集群
      • Adaptive Stream Rebuffering
      • 支持多協議:
        • WebRTC
        • RTMP
        • RTSP
        • HLS
        • FLV
        • MP4
        </li>
      • 實時流錄制
      • 離線部署
      • </ul> </li>
      • Browser
        • 定制化HTML5播放器,支持旋轉
        • 實時HLS流
        • 支持Flash作為后備方案
        • </ul> </li>
        • 移動端SDK(iOS, Android)
          • 自適應比特率發布
          • 硬件編碼和解碼
          • 定制視頻源
          • 直播攝像頭切換
          • 雙路視頻聊天
          • 多方視頻會議
          • Adaptive Stream Rebuffering
          • 低延遲播放器
          • 高級通知API
          • 消息與RPC
          • HD h.264, AAC編碼高達4k
          • </ul> </li> </ul>

            粗略的特性收費情況調查結果:

            - 開源版本 付費版本
            自動伸縮集群 不支持 \$279/MO
            多協議支持 支持 支持
            轉碼 不支持 \$109/MO
            離線部署 支持 \$999+/MO

            來自 Red5 open source vs Red5pro · rajdeeprath/red5-development-series Wiki 的數據

            FEATURES RED5 OS RED5 PRO
            實時流 ? ?
            視頻錄制 ? ?
            WebSockets ? ?
            移動端回放(HLS) Community ?
            Adobe Flash 支持 ? ?
            WebRTC ? ?
            第二屏 ? ?
            自動伸縮 ? ?
            集群 ? ?
            移動端SDK ? ?
            擴展文檔 ? ?
            客戶支持 Community ?
            管理API (RESTful) ? ?

            缺點:

            • 開源版本很難用,官方幾乎沒有文檔,即使有,也是幾年前的了,也沒有教程。

            考察點總結:

            考察點 OS PRO
            語言 Java Java
            最新發布日期 2017-01-12 ?
            誰在用 ? Intel, LimeLight,…,etc(最經典的方案)
            文檔 ? ?
            伸縮 ? ?
            debug ? ?
            許可證 Apache License v2 付費
            網絡協議 HLS, WebSockets, RTSP, RTMP, RTMPT, RTMPS, RTMPE HLS, WebSockets, RTSP, RTMP, RTMPT, RTMPS, RTMPE, WebRTC
            自適應碼率 ? ?
            流控 ? ?
            錄制 ? ?
            回放 ? ?

            2.2 kurento

            主頁: http://www.kurento.org/

            github: https://github.com/kurento

            服務端采用C++實現: https://github.com/Kurento/kurento-media-server

            特性:

            • 支持HTTP、RTP和WebRTC
            • 集成OpenCV,支持分析圖像抽取信息
            • 轉碼(這個是剛需了)
            • 廣播
            • 提供Kurento API,可以在此基礎上構建服務器的高層邏輯,并提供了Java和NodeJS的實現,基于此可以實現權限校驗等業務邏輯
            • 支持NAT穿越

            文檔地址: http://readthedocs.org/projects/doc-kurento/downloads/pdf/stable/

            考察點總結:

            考察點 情況
            語言 C++
            最新發布日期 2018-03-21
            誰在用 沒有業界權威在用,Github 800+Star
            文檔 比較全
            伸縮 ?
            debug
            許可證 LGPL v2.1
            網絡協議 HTTP, RTP, WebRTC
            自適應碼率 ?
            流控 ?
            錄制 ?
            回放 ?

            2.3 RestComm

            官網 https://www.restcomm.com/

            GitHub https://github.com/RestComm

            文檔 https://www.restcomm.com/docs/

            免費版本功能受限

            考察點總結:

            考察點 情況
            語言 Java
            最新發布日期 2018-04-20
            誰在用 ?
            文檔 齊全
            伸縮 付費
            debug
            許可證 AGPL-3.0
            網絡協議 WebRTC
            自適應碼率 ?
            流控 ?
            錄制 ?
            回放 ?

            2.4 Ant Media Server

            官網 https://antmedia.io/

            文檔 https://antmedia.io/documentation

            Github https://github.com/ant-media/ant-media-server

            Star Fork

            服務端采用Java實現,是Red5-server的分叉版本

            特性:

            • 實時流發布
            • 支持RTMP、RTSP、WebRTC、HLS
            • WebRTC轉RTMP適配器
            • IP攝像頭支持
            • 錄制實時流(FLV、MP4和HLS容器)
            • 同步重制流到社交媒體(企業版里非死book和油Tube)
            • 低延遲1:N WebRTC實時流(企業版)
            • 實時流自適應比特率轉換(FLV、MP4、HLS)(企業版)

            考察點總結:

            考察點 情況
            語言 Java
            最新發布日期 2018-05-01
            誰在用  
            文檔 齊全
            伸縮 收費
            debug ?
            許可證 Apache License v2
            網絡協議 RTMP、RTSP、WebRTC、HLS
            自適應碼率 ?
            流控 ?
            錄制 ?
            回放 ?

            2.5 BigBlueButton

            官網 https://bigbluebutton.org/

            文檔 http://docs.bigbluebutton.org/

            github https://github.com/bigbluebutton/bigbluebutton

            Star Fork

            采用Java開發,主要針對場景是授課

            特性:

            • 實時添加字幕
            • 屏幕共享
            • 分組討論室
            • 錄制與回放

            考察點總結:

            考察點 情況
            語言 Java
            最新發布日期  
            誰在用  
            文檔  
            伸縮  
            debug  
            許可證  
            網絡協議  
            自適應碼率  
            流控  
            錄制  
            回放

            2.6 NextRTC

            主頁 https://nextrtc.org/

            Github https://github.com/mslosarz/nextrtc-signaling-server

            考察點總結:

            考察點 情況
            語言 Java
            最新發布日期 2018-04-05
            誰在用 (估計沒人)
            文檔 簡單
            伸縮 ?
            debug ?
            許可證 MIT
            網絡協議 WebRTC
            自適應碼率 ?
            流控 ?
            錄制 ?
            回放 ?

            2.7 OpenBroadcaster

            https://obsproject.com/

            https://github.com/obsproject

            TBD

            Comparison of streaming media systems - Wikipedia

            名稱 創建者 最新穩定版(發布日期) 最新發布日期 價錢 (USD) 許可證 支持媒體
            Cameleon Yatko 1.0.7 (2016-11-11) 2016-11-11 Free 專有 Audio/Video
            Helix Universal Server RealNetworks 15.2.1 (2014-09-16) 2014-09-16 Free for 12 months (Basic) and \$1,000-\$10,000 專有 Audio/Video
            IIS Media Services Microsoft 4.1 (2011-11-09) 2011-11-09 Free 專有 Audio/Video/Data
            Nimble Streamer WMSPanel 2.15.1-3 (2016-03-21) 2016-03-21 Free 專有 Audio/Video
            Open Broadcaster Software OBS Project 0.657 (2015-11-24) 2015-11-24 Free GPL v2 Audio/Video
            OpenBroadcaster OpenBroadcaster 5.0.0 (2018-01-27) 2018-01-27 Free AGPLv3 Audio/Video
            Plex (software) Plex Media Server 1.0.3.2461-35f0caa (2016-07-28) 2016-07-28 Free GPL Audio/Video
            Red5 (open source) Infrared5/community 1.0.6 (2015-09-08) 2015-09-08 Free Apache License v2 Audio/Video/Data
            Unified Streaming Platform Unified Streaming 1.7.18 (2016-04-11) 2016-04-11 Free Trial license; Perpetual License; Amazon EC2 with embedded license; Microsoft Azure 專有 Audio/Video
            Unreal Media Server Unreal Streaming Technologies 12.0 (2017-04-03) 2017-04-03 \$995 perpetual license 專有 Audio/Video
            VLC media player VideoLAN 2.2.4 (2016-06-05) 2016-06-05 Free GPL v2 Audio/Video
            Wowza Streaming Engine Wowza Media Systems 4.5.0 build 18676 (2016-06-23)[2] 2016-06-23 Free Developer and Trial licenses; Subscription Licenses at \$65/month; Perpetual Pro License at \$1995; Amazon EC2 with embedded license starting at \$0.15/hour 專有 Audio/Video/Data

            -

             

            來自:http://bungder.github.io/2018/05/06/compare-of-some-open-source-media-server/

             

 本文由用戶 javase 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!