串流即透過網路來撥放影音檔案,將即時影音資料壓縮後,以串流方式傳送至用戶端(client)電腦中,以Time Stamp方式來控制影音串流的播放。

讓用戶端在沒完全接收影音數據資料之前,可以透過播放程式解壓縮開始播放。

要能夠一邊下載一邊播放,時間的掌握非常重要,
這個協定是架在RTP/RTCP上,使得影音撥放具有即時性。

==========================================
RTP即時傳輸協定(Real-time Transport Protocol)

從圖中可以看出,RTP被劃分在傳輸層,建立在TCP/UDP上。

20131107180309937

被定義為傳輸音頻、視頻、模擬數據等實時數據的傳輸協議,
RTP位於傳輸層(通常是TCP/UDP)之上,應用程序之下,
即時影音經過轉換和壓縮編碼處理後,先送給RTP封裝成為RTP數據單元,RTP數據單元被封裝為UDP數據,
然後再向下遞交給IP封裝為IP數據包。

在TCP/UDP協定中只定義了來源端和目的端的port,並沒有定義需要使用的解碼方式,因此出現了即時傳輸協定RTP。
RTP重點在於端點到端點間的串流媒體傳輸,定義了傳輸串流媒體的封包標準(參數標準),
RTP可以算是一種流容器,不過需為無損編碼,每次傳進來的聲音都可以直接解碼,而有損編碼會依賴前後的資料無法直接解碼。
由RTCP來保證其服務質量。

RTP封包會像是這樣子:
  RTP 表頭 + UDP/TCP 表頭 + 表身(就是資料)

RTP的通常使用UDP來傳送資料。
  RTP over UDP:效率較好但品質較差
  RTP over TCP:效率較差但品質較好

RTCP(RTP Control Protocol)

因為RTP只負責傳送並不保證串流中間有沒有封包遺失,因此為了確保RTP的服務品質(Qos, Quality of Service)而有了RTCP。

在 RTCP 協議中:
  「接收方」每收到一個 RTP 封包時就會產生 RR 報告(包含SSRC和流失率)
  「發送方」每傳出一個 RTP 封包時則會發出 SR 讓接收方知道發送方的資訊。

==========================================

如何選擇的RTSP/RTP傳輸通訊協定?

裝置 > 進階 > RTSP&RTP 設定
UDP:提供較低的延遲,網路環境不佳或裝置間經過較多路由器時,容易遺失封包而導致影像掉幀。
TCP:提供穩定可靠的連線與品質,網路頻寬不足時,可能導致延遲時間較長。

==========================================
TCP 和UDP 區別

一張圖看懂TCP與UDP的區別

305248b6a2c3ba0aa

1. 連接
TCP 是面向連接的傳輸層協議,傳輸數據前先要建立連接。
UDP 是不需要連接,即刻傳輸數據。

2. 服務對象
TCP 是一對一的兩點服務,即一條連接只有兩個端點。
UDP 支持一對一、一對多、多對多的交互通信

3. 可靠性
TCP 是可靠交付數據的,數據可以無差錯、不丟失、不重複、按需到達。
UDP 是盡最大努力交付,不保證可靠交付數據。

4. 擁塞控制、流量控制
TCP 有擁塞控制和流量控制機制,保證數據傳輸的安全性。
UDP 則沒有,即使網絡非常擁堵了,也不會影響UDP 的發送速率。

5. 首部長度
TCP 首部長度較長,會有一定的開銷,首部在沒有使用「選項」字段時是 20 個字節,如果使用了「選項」字段則會變長的。
UDP 首部只有8 個字節,並且是固定不變的,開銷較小。

6. 傳輸方式
TCP 是流式傳輸,沒有邊界,但保證順序和可靠。
UDP 是一個包一個包的發送,是有邊界的,但可能會丟包和亂序。

7. 分片不同
TCP 的數據大小如果大於MSS 大小,則會在傳輸層進行分片,目標主機收到後,也同樣在傳輸層組裝TCP 數據包,如果中途丟失了一個分片,只需要傳輸丟失的這個分片。
UDP 的數據大小如果大於MTU 大小,則會在IP 層進行分片,目標主機收到後,在IP 層組裝完數據,接著再傳給傳輸層。

TCP 和UDP 應用場景:
TCP 是面向連接,能保證數據的可靠性交付,因此經常用於:
  1. FTP文件傳輸
  2. HTTP/HTTPS
UDP 面向無連接,它可以隨時發送數據,再加上UDP本身的處理既簡單又高效,因此經常用於:
  1. 包總量較少的通信,如DNS、SNMP等
  2. 視頻、音頻等多媒體通信
  3. 廣播通信

arrow
arrow
    全站熱搜

    Auster 發表在 痞客邦 留言(0) 人氣()