上次說到了XMPP協議,這個遇到了另一個協議RTP。XMPP:http://blog.csdn.net/shinichr/article/details/23832157
概念:
RTP英文名是Real-Time Stream Protocol,顧名思義是一種即時性很高的協議。這種協議和http協議很類似,都是純文字來發送訊息的,不同的是rtp是有狀態的,http是沒有狀態的。怎麼理解呢?http協議發了之後,串連就斷開了,而且下一次發與上一次沒有什麼依賴關係,而RTP協議需要知道現在是個什麼狀態,可以發送什麼訊息...
RTP用來為IP網上的語音、映像、傳真等多種需要即時傳輸的多媒體資料提供端到端的即時傳輸服務。RTP為Internet上端到端的即時傳輸提供時間資訊和流同步,但並不保證服務品質,服務品質由RTCP來提供。
RTP: Real-time Transport Protocol,即時傳輸協議,一般用於多媒體資料的傳輸。
RTCP: RTP Control Protocol,即時傳輸控制通訊協定,同RTP一起用於資料轉送的監視,控制功能。
RTSP: Real Time Streaming Protocol,即時資料流通訊協定,用於多媒體資料流的控制,如播放,暫停等。
RTP/RTCP相對於底層傳輸層,和RTSP,SIP等上層協議一起可以實現視頻會議,ApsaraVideo for Live等應用。
為什麼要搭配這些協議呢。RTP位於傳輸層(通常是UDP)之上,應用程式之下,即時語音、視頻資料經過模數轉換和壓縮編碼處理後,先送給RTP封裝成為RTP資料單元,RTP資料單元被封裝為UDP資料報,然後再向下遞交給IP封裝為IP資料包。這麼說RTP是沒有保證傳輸成功的,
那怎麼保證呢。就要用到rtcp。
RTCP訊息含有已發送資料的丟包統計和網路擁塞等資訊,伺服器可以利用這些資訊動態改變傳輸速率,甚至改變淨荷的類型。RTCP訊息也被封裝為UDP資料報進行傳輸。
RTP的應用:
RTP用於在單播或多播網路中傳送即時資料。
1:簡單的多播音訊會議.語言通訊通過一個多播地址和一對連接埠實現,一個用於音頻資料rtp,一個用於控制包rtcp
2:音頻視頻會議.這兩種媒體將分別在不同的RTP會話中傳送,同步的話就需要根據RTCP包中的計時資訊了(network time protocol)
3:翻譯器或混合器:
曾經不知邊下邊播是怎麼實現的,不知道現在為止你看了RTP後是怎麼想的了。
當前在internet上傳送音頻和視頻等資訊主要有兩種方式:一是下載,二是串流.
在下載情況下,我們都知道,要下完了,才能播放。在視頻會議中這顯然是不對的。串流才是實現流媒體的關鍵技術.
使用串流才能邊下載邊看流媒體節目。由於internet是基於分組傳輸的,就是一塊一塊的傳的。所以傳遞的包會有你先到,或者我先到的情況。
為了降低延遲和恢複資料包時序,在發送端,我們需要對資料進行儘可能的壓縮,在接收端,為了恢複時序,就需要一個緩衝區了。對緩衝的資料進行排序就可以恢複資料包時序了。
將排好序的的資料再放入播放緩衝,為什麼還要一個播放緩衝呢。這是因為,如果網路不理想(我們國家的網速,就不用貼資料了),我們得到排序好的資料包時間間隔是不等的。如果沒有播放緩衝,播放就會出現時延抖動.使用播放緩衝,在開始播放時,花費幾十秒鐘先將播放緩衝填滿,可以有效地消除時延抖動,從而在不太損失即時性的前提下實現流媒體的順暢播放.