• 沒有找到結果。

二、 連線建立與 RTSP 信令溝通

2.3 串流伺服器的溝通協調

2.3.4 SDP

SDP 是一種以文字格式(Text-based)描述多媒體會議(session)的通訊協定。SDP 可 以被包含在SIP、RTSP、SAP、HTTP 甚至E-Mail 等各種協定中,其內容包含各種有關

session的描述,比如說媒體種類(Video/Audio)、媒體傳輸協定(RTP/UDP/IP 等)、媒體格 式(H.261 video/MPEG video/G.723.1 audio )等。

下圖2.14是一個用SDP 描述RTSP “DESCRIBE” method的範例,紅色框框內的就是 一個SDP格式的內容,我們實際擷取RTSP DESCRIBE的封包來分析說明:

圖2.14 SDP content 1. v=0,表示 SDP version number 為 0

2. o表示 owner (session creator)連線建立者的相關資訊:

一開始為其 session id ,IN:Internet Network type 為 Internet 版本為為 IPv4, server 的 address 為 140.113.13.97

3. session name:執行程式:testOnDemandRTSPServer,連線名稱:mpeg1or2A/Vtest

4. session information : 連線相關的資訊為mpeg1or2AudioVideoTest 5.Time Description : 對於時間的描述

6.Session Attribute: 連線的一些屬性資訊,比如說:

tool(連線所使用的工具版本):Live555的版本為V2006.08.06

type(傳送方式): broadcast ,range(欲播放的範圍): Normal Play Time(NPT)

7.Media Description (關於媒體的種類以及格式):

在解釋之前我們必須要先介紹一下 RTP payload type (7 bits),其定義在 RFC1890[14]

中。如下表 2.1 所示,Payload Type 提供了 128 種可能的 encoding 的方法,此欄位表示 了 RTP 的 payload 為何種格式,故用戶端可以藉此明白該用什麼 decoder 來解碼。

表2.1 payload type table

故一個SDP其內容(content)主要可歸納成三部分:

„ Information about the bandwidth to be used by the conference -- 可用以限制 session 耗用的流量

„ Contact information for the person responsible for the session -- 跟 session 的負責 人聯絡的資訊

第二部分是組成該會議的媒體種類以及接收這些媒體的控制信息:

„ The type of media -- video 、audio或是 white board

„ The transport protocol -- RTP/UDP/IP, H.320…etc.

„ The format of the media -- H.261 video、MPEG video… etc 第三部分是控制信息相關的 :

IP multicast (群播) 以及 unicast(點播)等。

„ Multicast address and transport port for media

„ Contact address and transport port for media

要特別注意的是因為RTSP是一個文字為主(Text-Based)的協定,故我們在撰寫RTSP 這邊的程式時要特別注意其文字格式要完全依照RFC 2327 SDP所規定的格式來

coding,如果未依照標準格式coding的話,則會發生server RTSP parser無法解析該字串訊 息的情形發生。

當有這種情形發生時,代表雙方在『DESCRIBE』 SDP時無法傳送或解析,這也意 謂著其後的『SETUP』與『PLAY』無法繼續下去,如下圖2.15所示『RTSP Unauthorized』

的部分。

圖 2.15 RTSP Unauthorized

瞭解了 RTSP 協定的原理之後,我們接下來看 Live555 是如何實現『DESCRIBE』

SDP 的功能。在收到 client 傳過來的『DESCRIBE』訊息後,server 端即進入

『handleCmd_DESCRIBE{}』的 block 中,在該 block 主要利用* session(會談連線指標)

來指向一個 ServerMediaSession(伺服器媒體會談連線)物件,ServerMediaSession 是 Live555 實現的一種表示『連線會談』的資料結構。

如下紅框所示,ServerMediaSession 建構子也包含了設置串流名稱以及顯示 Live 目 前的版本資訊的串流初始工作。

Live555 在使用 ServerMediaSession 建構子完成目前串流連線的一些基本資訊後,

server 便呼叫 generateSDPDescription()產生一個以 SDP 文字為主的封包給 client 接收。

如下程式碼所示,generateSDPDescription()函數的執行的內容即是產生一個符合標準 SDP 格式的字串檔案,並且把這些 SDP 字串檔案封包再經由 socket API(send())傳送給 client 去接收,client 再依這個 SDP 協定內容(DESCRIBE response)去做設置 SETUP 的動 作,故下一小節 2.4 中我們會以 client 為主來觀察其 RTSP 信令的互動情形 。

在文檔中 串流伺服器特性剖析 (頁 37-43)

相關文件