HLS-M3U8
HLS(HTTP Live Streaming)是蘋果公司針對iPhone、iPod、iTouch和iPad等移動設備而開發的基於HTTP協議的流媒體解決方案。在 HLS 技術中 Web 服務器向客戶端提供接近實時的音視頻流。但在使用的過程中是使用的標准的 HTTP 協議,所以這時,只要使用 HLS 的技術,就能在普通的 HTTP 的應用上直接提供點播和直播。在App Store中的視頻相關的應用,基本都是應用的此種技術。該技術基本原理是將視頻文件或視頻流切分成小片(ts)並建立索引文件(m3u8)。支持的視頻流編碼為H.264,音頻流編碼為AAC。
HLS視頻架構
HLS視頻切片結構決定其播放延時會比較大,其延時在10S級別。
FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,並能將其轉化為流的開源計算機程序。
RTMP
RTMP(Real Time Messaging Protocol)實時消息傳送協議是Adobe Systems公司為Flash播放器和服務器之間音頻、視頻和數據傳輸 開發的開放協議。
它有三種變種:
1)工作在TCP之上的明文協議,使用端口1935;
2)RTMPT封裝在HTTP請求之中,可穿越防火牆;
3)RTMPS類似RTMPT,但使用的是HTTPS連接;
RTMP協議(Real Time Messaging Protocol)是被Flash用於對象,視頻,音頻的傳輸.這個協議建立在TCP協議或者輪詢HTTP協議之上.
RTMP協議就像一個用來裝數據包的容器,這些數據既可以是AMF格式的數據,也可以是FLV中的視/音頻數據.一個單一的連接可以通過不同的通道傳輸多路網絡流.這些通道中的包都是按照固定大小的包傳輸的.
RTMP協議延時在1-3秒左右,好的可以做到1S以下。
RTSP
RTSP(Real-TimeStream Protocol )是一種基於文本的應用層協議,在語法及一些消息參數等方面,RTSP協議與HTTP協議類似。RTSP被用於建立的控制媒體流的傳輸,它為多媒體服務扮演“網絡遠程控制”的角色。盡管有時可以把RTSP控制信息和媒體數據流交織在一起傳送,但一般情況RTSP本身並不用於轉送媒體流數據。媒體數據的傳送可通過RTP/RTCP等協議來完成。
rtsp中定義的方法有:OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, SCALE, GET_PARAMETER ,SET_PARAMETER。@link
一次基本的RTSP操作過程是:首先,客戶端連接到流服務器並發送一個RTSP描述命令(DESCRIBE)。流服務器通過一個SDP描述來進行反饋,反饋信息包括流數量、媒體類型等信息。客戶端再分析該SDP描述,並為會話中的每一個流發送一個RTSP建立命令(SETUP),RTSP建立命令告訴服務器客戶端用於接收媒體數據的端口。流媒體連接建立完成后,客戶端發送一個播放命令(PLAY),服務器就開始在UDP上傳送媒體流(RTP包)到客戶端。 在播放過程中客戶端還可以向服務器發送命令來控制快進、快退和暫停等。最后,客戶端可發送一個終止命令(TERADOWN)來結束流媒體會話。@link
該協議用於C/S模型, 是一個基於文本的協議, 用於在客戶端和服務器端建立和協商實時流會話。

@link
RTCP實時傳輸控制協議(Real-time Transport Control Protocol或RTP Control Protocol或簡寫RTCP)是實時傳輸協議(RTP)的一個姐妹協議。RTCP為RTP媒體流提供信道外(out-of-band)控制。
RTCP本身並不傳輸數據,但和RTP一起協作將多媒體數據打包和發送。RTCP定期在流多媒體會話參加者之間傳輸控制數據。RTCP的主要功能是為RTP所提供的服務質量(Quality of Service)提供反饋。
RTCP收集相關媒體連接的統計信息,例如:傳輸字節數,傳輸分組數,丟失分組數,jitter,單向和雙向網絡延遲等等。網絡應用程序可以利用RTCP所提供的信息試圖提高服務質量,比如限制信息流量或改用壓縮比較小的編解碼器。實現實時視頻流時,先用采集設備,直接把視頻做成 H.264 的 NAL unit,而后通過 RTP打包,傳輸給客戶端。
參考:
