rtmp協議詳解

rtmp協議介紹
rtmp(Real Time Messaging Protocol)實時消息傳送協議是Adobe Systems公司爲Flash播放器和服務器之間音頻、視頻和數據傳輸開發的私有協議。
它有三種變種:

1. 工作在TCP之上的明文協議,使用端口1935

2. RTMPT封裝在HTTP請求之中,可穿越防火牆;

3. RTMPS類似RTMPT,但使用的是HTTPS連接;

RTMP協議就像一個用來裝數據包的容器,這些數據可以是AMF格式的數據,也可以是FLV中的視/音頻數據。一個單一的連接可以通過不同的通道傳輸多路網絡流。這些通道中的包都是按照固定大小的包傳輸的。

rtmp.jpg

RTMP交互圖

現在主要有兩種rtmp server,商業的和開源的。商業的比開源的支持的功能多

商業的有FMS Wowza
FMS是Adobe公司的產品,license非常昂貴。下面就wowza這個商業軟件講下流媒體Server,不僅僅是RTMP Server,在達到生產環境所需要的功能。wowza最突出的特定是多終端適應性,這個在如今多媒體融合的網絡環境下有很強的實用意義。究其原理並無深入研究。國內
尚爲視訊是其代理公司。

Wowza Media Server是一款高性能、多線程的流媒體服務器軟件。專爲多種終端設備提供音視頻內容播放服務,支持iOS、windows、Android、BlackMerry等系統的終端設備,以HTTP、RTSP/ RTP、RTMP傳輸協議的流播放,還支持利用機頂盒進行播放的IPTV。

開源RTMP server

  1. red5 java  有名

  2. crtmpserver c++ 支持多種rtmp協議,移動設備以及IPTV相關網絡協議; Erlyvideo  erlong有開源和商業版本

  3. aXeVideo haXe 一個實驗性的,輕量級的服務器

  4. FluorineFx .Net To be defined

  5. nginx-rtmp c nginx模塊,支持rtmp和HLS

Nginx rtmp功能點

  • 支持音視頻直播

  • 支持flv/mp4視頻格式,輸入可以是文件或者HTTP流

  • 支持兩種流的分發模式 push and pull

  • 可以將直播流錄製成flv文件

  • H264/AAC編碼

  • 支持在線轉碼 Online transcoding with FFmpeg

  • 支持HLS (HTTP LiveStreaming)需要 libavformat (>= 8. 53.31.100) from ffmpeg (ffmpeg.org)

  • HTTP callbacks (publish/play/record/update etc)

  • 支持外部程序(exec)

  • HTTP control module for recording audio/video and dropping clients

  • 先進內存控制技術,可以在使用少量內存的情況下完成流暢的直播功能。

  • 可以和以下協同工作。FMS server(Wirecast, FMS, Wowza,)Player(JWPlayer, FlowPlayer, StrobeMediaPlayback,)外部程序(ffmpeg,avconv,rtmpdump,flvstreamer )

  • Statistics in XML/XSL in machine- & human- readable form

  • 支持跨平臺 Linux/FreeBSD/MacOS

項目地址:

https://github.com/arut/nginx-rtmp-module
nginx-rtmp-module Directives:

https://github.com/arut/nginx-rtmp-module/wiki/Directives

總的來說Nginx-rtmp是個比較輕量的項目,可以滿足直播的採集,編碼和分發工作,該項目豐富的完善了nginx對視頻的支持,特別的nginx-rtmp實現了對HLS的支持。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章