在上節課中呢,我向你介紹了sdp協議,
那這節課呢,我們再來看看web rtc中。是如何存儲sdp的?也就是sdp的類結構,那在此之前呢?我們先對sdp的內容啊,做一下分類。因為在上節課中呢,雖然我們介紹了它的協議,但是具體對于stp中它到底包含了哪些內容?
實際我們并沒有做詳細的介紹,對吧?那所以呢,我們今天先把這塊內容給大家做一個介紹,之后呢,我們再來看看web rtc是如何存儲它的。好,那這張圖呢?就是對stp內容的一個分類。那從大的方面來看呢?sdp它包括了會話層和媒體層,對吧?那會話層呢?包含的信息比較少。包括了vost這些呢,
我們在上節課中都向你做了介紹,那重點呢是媒體層。那我們對媒體層呢,又做了劃分,分成了四大塊,第一個呢是媒體信息。第二個呢,是網絡描述,第三個呢,是安全描述,最后一個是服務質量。對于媒體信息來說,最關鍵的是m行對吧?等于后邊一堆內容,包括了傳輸協議。
那這些呢?我們在上節課都做過介紹,那除此之外呢?與媒體信息相關的還有很多的屬性。比如說ssrc
rtp map,也就是對pilot type做進一步說明的。還有呢FM tp也就是format parameter,它是對媒體信息一些參數的進一步說明。
好,那對于網絡描述涉及的內容就比較多了,那首先呢是c。它代表的是connection對吧?但是對于外部rtc來說呢,它不使用stp標準中的這個c行。所以對于這一行呢,
我們不必過多的了解,那除了之外呢,跟網絡相關的,還有candidate group。rt cp mu x等等等,這一堆都屬于與網絡相關的內容好,那第三個呢?是安全描述。那我們都知道,對于外部rtc來說呢,它對安全是比較看重的,所以在傳輸數據的時候呢,它會對rtp包的內容進行加密。那在加密時,它使用的一些信息啊,
都是從安全描述這部分內容中提取出來的,比如說用戶在連接的時候。他要發送ice uf rag以及ice password。對這個用戶呢進行驗證,是否是有效的用戶?那除此之外呢,還有fingerprint進行指紋的驗證,這些呢,都是與安全相關的,那后邊兒呢,我們會做詳細介紹。
好,最后一個是服務質量相關的,它通過一系列的rt CP feedback來對外部rtc的服務質量進行控制。那這就是y八二七csdp中媒體相關的內容,
那通過這樣一個分類呢,我們就很容易知道y八二七c的sdp中。包括了哪些內容好?
那下面呢?我們再來看看對于web rtc的stp分類,那我們前面介紹的這些內容呢?是從它的功能上做分類的,那對于外包tc代碼對stp進行分類的時候呢?是有一些區別的,那么來看一下啊,那從大的方面來說,web rtc對stp還是分為繪畫描述和內容描述,這個內容描述呢,實際就是媒體描述。那對于內容描述,
它又分成了內容信息傳輸,信息和內容組這三項。那這就與我們剛才介紹的不太一樣了,對吧?剛才我們介紹的分類呢,是從功能上分成了媒體描述。安全描述,網絡描述,服務質量描述對吧?那對于外部rtc來說呢?它是按照這個內容傳輸和內容組這樣一個分類來進行數據的組織的。那對于這些內容,具體web rtc是如何做的呢?我們來看這張圖就比較清晰了,那這張圖呢?
就是web rtc的sdp類關系圖。那我們可以看到總的點呢,是在這里就是session description,它代表一個sdp,那在這個類中呢?是包括了三大項,那第一項呢?就是content information第二項呢?是transport information。那第三樣呢,是content group對吧?那緊接著是content information類,那在這個類中呢,包括了content的名字。媒體的類型兒協商是否被拒絕?
bandle only代表的是是否共用同一個傳輸通道?那最后一個呢,是媒體的描述,也就是說媒體信息中它包括了哪些內容是在這里做了描述?那對于這個類來說呢,就是對應的stp中的m行,其中的audio呢,表示的就是content information中的media protocol type這個字段。那對于這個媒體中的更詳細的信息呢,是記錄在media content description這個類結構中。那我們來看一下這個類中包含了哪些內容?那比如說包含了rt cp mu xr TCP,reduced size protocol,rtp hydro extension。等等等,
一系列的這個字段,實際這些字段呢,是與sdp中每個媒體流的相關屬性,是一一對應的。比如說在視頻的這個媒體中呢,它包含了rt cp mu x這個屬性,如果有這個屬性,那么對應的。在media content description中呢,它的rt cp mu x這個字段就為true對吧?再比如說rtc pre size。對應的就是media content description中的rtc t reduced size這個字段,那從中呢,我們就可以看到。這個media content description就是sdp中每個媒體的主性定義,
對吧?那我們接著再往下看啊,那在這個類中呢,有一個send stream這個字段。那這個字段呢,是stream parameters victor是這個類型,那對應的呢,就是stream parameter。它里邊包括了谷歌pids src。s ssc group.那這些信息呢,也是與stp中的內容一一對應的,我們來看一下啊,那它就是與媒體層中的。s slc相關屬性一一對應的,
比如說s slc group就在這里呢,有對應的值。呢在這里也有對應的值,對吧?那在stream parameter這個類中呢?又包括了rids。那它呢,是rid description這個類結構。在這個類結構中,包括了rid direction payload types這些字段,那這里的payload types就代表的是。媒體層的payload type,那對于每一個payload type的解釋是,通過媒體層的這個屬性,rtp map來進行進一步說明的。
對吧,那這些信息呢,都會被web rtc進行解析,把它們保存到red description這個結構中。好這樣呢,我們就將中的content這個結構給大家講解清楚了,那之后呢,我們再來看看transport information。那對于transport information來說呢,它包括了content name,還有description,那description呢,又是transport description。這個類定義的,那在這個類中呢?
它包括了IC EU flag ice password ice mode,那這些信息呢?也是在媒體層定義的,那在每個媒體層下邊都會有ice option si ceu frag ice password。fingerprint setup對吧?那這里的每一項呢?其實就是與transport description中的每一項相對應的,那這樣呢,就可以做一個直接的翻譯,如果在這個媒體層包含這一項,那其中對應的值呢?就會置位或者是取其中的值,那如果沒有的話呢,這里邊就是鈉。OK,
這是傳輸層,那對于content group來說呢?它是與sdp中的a group相對應的,那么在group中呢?有bandle。就是對音頻和視頻做一次綁定,其中的零呢代表的是音頻,一呢代表的是視頻。所以在content group中的semantics就是b。那content name呢?就是零或者是一,那如果你仔細看這張圖啊,其實有一個非常有意思的地兒,就是content name。那這個content name呢?
就是group中的零或者是一,那除了content group有content name之外呢中?也有content name在content information中呢?也有name,那實際上這三個name啊,是串在一起的。比如說對于一個音頻來說,那它的內幕呢?是零那中的content name也是零。content group中的內幕也是零,那這樣就將它們三個串在一起,所以如果我們是通過這個結構去生成一個stp信息的話。那web rtc就會根據它們的content name來一項一項的把它們碼列在一起,那這樣輸出之后我們看到的。就是在每一個媒體層中都包含了它所對應的一些屬性,
那這樣在構造每個媒體信息的時候呢?在stp中,它的所有的屬性信息都會列在每一個媒體層的下邊兒。那通過這種方式,外部rtc就很容易進行兩者的交換,也就是說。內存中的類交換成sdp文本,或者是拿到一個sdp文本,可以很容易的在內存中呢,構造出這樣一個類關系圖。那以上呢,就是我們這節課所要向你介紹的內容,那在這節課中呢,我們將sdp做了兩種類型的分類,那第一種類型呢,
是按功能分。我們可以知道sdp中包含了媒體信息,網絡信息,安全信息以及服務質量相關的信息,對吧?而對應到wtc源碼來說呢,它是按組織結構對sdp進行分類的,它將sdp分成了三大類,第一個呢是content information,第二個是transport information。第三個呢,是content group,那通過這個結構的分類,它可以很容易的將一個sdp文檔轉換成類關系圖,也可以將類關系圖。
非常方便的轉換成stp文檔,對吧?那至于哪種分類好,你要站在不同的角度,如果從更容易理解的角度上來說。想知道sdp中包含了哪些內容,我們就應該從功能的角度去分類,那從類型的轉換來說。就是從文本轉換成內存,從內存轉換成文本,再把rtc的這種分類呢?更有優勢是吧?好,那我們本節課的重點呢?當然就是這個類關系圖了,
因為我們只有掌握了這個類關系圖之后,我們后邊去看外邊提示源碼的時候。才能理解它是怎么做的,所以這張圖呢,大家一定要多看一看,把它記在心里好,那我們今天的課呢,就到這里,謝謝。