How to 技術指南

串流技術簡介- 什麼是 UDP, TCP, Unicast, Multicast, RTP, RTSP, RTMP? | Datavideo

串流技術簡介- 什麼是 UDP, TCP, Unicast, Multicast, RTP, RTSP, RTMP?

Apr 06 2016

傳輸協定

UDP

UDP為使用者資料包通訊協定(User Datagram Protocol),其為一種較不可靠的無連接式傳輸協定。無連接式表示傳送者並不知道接收對象,因在傳送資料前並未事前通知,故其送出資料前並不知道接收者為何人。

UDP協定就像在郵局寄出一封貼著標準郵票的信,您並不會在它送達時收到通知,您只能期待信件能順利送達。

TCP

TCP代表傳輸控制協定(Transmission Control Protocol),是一個基於可靠連接的傳輸協定。既然TCP是基於連接的協定,傳送者完全知道訊息接收者的狀態。在任何資料傳送前,傳送者及接收者需先建立連線並事前通知。

TCP就像是採用掛號附回執聯寄信,信件送寄達時,您會收到通知;如果沒收到通知,您可以再傳送一次。

 

傳輸類型

單點傳播 (Unicast)

單點傳播(Unicast) 是一種在用戶端及伺服器端之間的一對一傳輸,在大多數情況下,伺服器端為影像編碼器。單點傳播利用IP傳輸方式,例如傳輸控制協定(TCP)及用者資料包通訊協定(UDP)。用戶端和伺服器端有著直接關係,每個連接至伺服器的單點傳播用戶都需佔用額外頻寬。例如,如果你有十個用戶端,每個都在播放100Kbps頻寬的串流,這些用戶端組成的用戶群將佔用高達1000Kbps頻寬。如果您只有一位用戶端在播放100Kbps串流,則僅會使用到100Kbps頻寬。

群播(Multicast)

群播為真正的廣播,其在用戶端及伺服器端間並無直接的關係。這就像是調到收音機上的電台,每個收聽群播的用戶端並不會對伺服器造成額外的頻寬佔用。實際上,伺服器僅傳送一路串流,不論是一個或一千個用戶端正在收聽,伺服器所承受的負載都是一樣的。

群播是利用網路交換器或路由器接收來自編碼器的單路串流訊息,然後將其轉發給所有用戶端。

註:一般而言,在網際網路上進行群播是不實用的,因為只有少部份的網際網路支援群播。

即使是在區域網路,操作群播時您也必須留心,因為無法正確處理群播的路由器及交換器會將其視為廣播訊息。這意味著如果您的編碼器連接一台未設定的乙太網路交換器,並送出一組群播訊息,群播將會把這組訊息廣播至所有端口,而整個網路將會被您的串流訊息淹沒。如這個網路是該串流所專用的,那麼則無太大問題。然而,如果此網路是用於其它用途,就會產生效能上的問題。

針對這個問題的解決方法是使用相容IGMP的交換器,這些交換器將會在其接口連接到指定群播群組的設備時,才發送群播流量。換句話說,交換器僅會將串流訊號轉發至接收您的群播串流的設備的端口上。

廣播 (Broadcast)

廣播是指從一台電腦傳送資料,而資料將轉傳至所有裝置的通訊方式。在廣播中,僅有一個傳送者且資料僅傳送一次。但是廣播資料將會傳給所有連接的裝置。

交換器是用來轉傳廣播的流量,而路由器卻會丟失廣播的流量。換句話說,路由器並不允許廣播從一個區域網路(LAN)跨過路由器,連接另一個網段。一台路由器的主要功能為用來將一個大的廣播域劃分為多個小廣播域。

 

其它常用術語

封包丟失 (Packet loss)

封包丟失發生於當一個或多個封包在電腦網路間傳輸時,資料封包無法到達目的地。一般而言,乙太網路(Ethernet)丟失封包是不存在的;對Wi-Fi來說,如果訊號強度夠好,封包丟失的程度是一般的。在網際網路上,封包丟失很大原因取決於電信營運商的路徑,但在較差的網路連線狀態下,封包丟失會更嚴重。

緩衝 (Buffer)

緩衝或快取是在播放開始之前,儲存於記憶體內的影片量。大量的緩衝會導致更多延遲,但當抖動或封包丟失狀況出現時,能夠給予更佳的播放穩定度。

抖動 (Jitter)

抖動是由於封包抵達的時間差而造成,通常肇因於網路擁塞、時序漂移或路線變更。抖動是串流中非常重要的一個因素,因為當網路路徑上的延遲不斷變化時,可能會造成封包延遲抵達,此時編碼器必須要有夠大的緩衝才能在等待延遲的封包時,還能繼續播放影片。

 

串流協定

以下將介紹常用的串流協定,了解它們如何運作以及適用情境。

RTP/RTSP

RTP及RTSP是二種完全不同的協定,一般來說會一起使用。即便RTP能單獨使用,RTSP卻無法在沒有RTP的狀況下使用,這意味著當你見到RTSP這個詞時,它所代表的永遠是RTP/RTSP。

RTP代表即時傳輸協定(Real-Time Transport Protocol),通常用來傳送實際的媒體串流,在大多數狀況下,H264或MPEG4影像封裝於RTP。RTSP為即時串流協定(Real-Time Streaming Protocol)的縮寫,是用來建立並控制媒體串流。

RTP/RTSP實際應用中代表什麼?

RTP本身為一個推流協定。這意味著,如果一台編碼器要利用RTP協定傳送影片給一台解碼器,編碼器需要知道這台解碼器的IP位址,才能將影像推送至接收端的解碼器。

RTP/RTSP是一種拉流的協定,這意味著當解碼器利用RTSP協定與編碼器連接時,編碼器之後會利用RTP協定將影像傳送至解碼器。多台解碼器連接至一台RTSP伺服器是可行的,此為多點對單點傳播。

RTP/RTSP屬於TCP或UDP?

實際上,二者皆可。通常RTSP是藉由TCP運作,而實際的RTP影像串流是藉由UDP傳送,影像和聲音是透過一對UDP連接埠來傳送。透過區域網路進行串流可行,但若透過網際網路可能就有問題,因其需要多個連接埠。此外,當影像和聲音分開傳送時,我們需依賴RTP標頭的時間戳記來進行同步。

所以當透過網際網路使用RTSP協定時,我們可以將RTP影像及聲音串流交錯於由RTSP所使用的TCP連接上。每一個都是透過TCP協定的554號連接埠來運行。

RTP/RTSP適用於何處?

RTSP對於要在區域網路內串流至多個裝置是很好用的,因其能將抖動及封包丟失降到最小。RSTP協定適用於幾乎所有解碼器及軟體播放器。

MPEG-2傳輸串流

因相容於大多數的機上盒及解碼器,MPEG-TS或許是廣播產業最常用的串流協定。雖然在封包裡的影像格式實際上為H.264 / MPEG 4 Part 10,MPEG-TS通常被稱為MPEG 2 傳輸串流(MPEG 2 Transport Stream)。MPEG TS常做為用來將聲音及影像包含在同一串流中的推流協定。

MPEG-2屬於TCP或UDP?

一般來說,它是屬於UDP類,這意味著,如果封包丟失,在串流中將會出現雜訊,因丟失的資料並未被重新傳送。然而,高階的編碼器利用一種叫做FEC(Forward Error Correction)前向錯誤校正的技術來解決這個問題。FEC允許解碼器對於丟失的數據進行推測並填補空缺的資料。

一些設備依然透過TCP支援MPEG-TS,即便這並不是一個常用的標準。例如Teradek的設備就支援在TCP上串流MPEG-TS。

RTMP

RTMP為Flash串流媒體,主要用來將影像導入CDN內容傳遞網路,以傳遞給線上的大量受眾。

RTMP適用於何處?

RTMP在網際網路上是可靠的。它的低延遲及低頻寬佔用特性讓RTMP成為所有主要CDN的串流協定(包含YouTube Live, UStream, Wowza 等等)標準。它也可以用於一些編碼器及解碼器的點對點連線(例如Datavideo NVS及NVD系列產品)。

RTMP是屬於TCP或UDP?

RTMP屬於TCP類。

HTTP即時串流 HTTP Live Streaming (HLS)

HTTP即時串流,此協議用於在iOS設備上使用Safari網路瀏覽器進行影像串流。當HLS以大塊的方式下載影像,可以預期會有數秒的延遲,且播放器必須先下載完一塊影像然後才會播放。

HTTP即時串流適用於何處?

HLS通常用於iOS裝置,且對於延遲可容忍但更重視串流穩定性的情況。HLS 也成為大多數 CDN 用於在幕後傳送影像的標準協議,不過這已超出本文的討論範圍。

HTTP即時串流是屬於TCP或UDP?

HTTP即時串流使用HTTP,是屬於TCP類。

Zixi

此協定是由Zixi設計,在封包丟失及抖動都很高的極差網路環境下,Zixi提供穩定的影像串流服務(例如越洋傳輸)。Zixi運用了非常聰明的錯誤校正機制,即便在大量封包丟失的狀況下,依然能維持穩定的影像。

Zixi適用於何處?

在網路連線狀態極差,例如MPEG-TS 及 RTMP協定都無法順利串流的情況下,可採用低延遲的影像串流。

Zixi是屬於TCP或UDP?

Zixi屬於UDP類,但其「前向錯誤校正」之技術特色,讓Zixi可達到近似於TCP協定的穩定度。

相關產品

您可以找到最符合您需求的相關產品