一種流媒體數(shù)據(jù)傳輸裝置、方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及流媒體技術(shù),尤其涉及一種流媒體數(shù)據(jù)傳輸裝置、方法和系統(tǒng)。
【背景技術(shù)】
[0002] 采用傳統(tǒng)流媒體技術(shù)中,傳輸?shù)牧髅襟w數(shù)據(jù)需要經(jīng)過防火墻,且需要專業(yè)的媒體 服務(wù)器支撐,實現(xiàn)復(fù)雜。因此出現(xiàn)了通過互聯(lián)網(wǎng)傳輸流媒體數(shù)據(jù)的互聯(lián)網(wǎng)流媒體技術(shù),其不 對現(xiàn)有互聯(lián)網(wǎng)體系提出額外的要求,可通過對媒體文件的存儲、信息描述方式進(jìn)行修改,使 得通過現(xiàn)有的HTTP協(xié)議傳輸流媒體數(shù)據(jù)。
[0003] 移動圖像專家組(Moving Pictures Experts Group,MPEG)制定的動態(tài)自適應(yīng)流 媒體(Dynamic Adaptive Streaming,DASH)標(biāo)準(zhǔn),簡稱MPEG DASH標(biāo)準(zhǔn),提供了采用互聯(lián)網(wǎng) 流媒體技術(shù)傳輸流媒體數(shù)據(jù)的標(biāo)準(zhǔn)化方案。
[0004] MPEG DASH標(biāo)準(zhǔn)定義的媒體展現(xiàn)描述(Media Presentation Description,MPD)的 層次結(jié)構(gòu)模型如圖1所示。
[0005] 該層次結(jié)構(gòu)模型中,時段(Period)用于描述可播放一段時間的媒體內(nèi)容, 次序相鄰的時段描述的媒體內(nèi)容在時間上是連續(xù)的。一個時段包含多個適配集合 (Adaptation Set),每個適配集合描述適配多個碼率的媒體內(nèi)容,每個碼率對應(yīng)一個呈現(xiàn) (Representation)。呈現(xiàn)描述媒體內(nèi)容的具體封裝格式、碼率、編解碼參數(shù)等信息。一個呈 現(xiàn)包含多個分片(Segment)的統(tǒng)一資源定位器(Uniform Resoure Locator,URL),用于指 示對應(yīng)的分片的存儲位置,分片包含具體的媒體內(nèi)容,即音頻、視頻、字幕、復(fù)用的音頻和視 頻等。
[0006] 基于上述MPEG DASH標(biāo)準(zhǔn),通過互聯(lián)網(wǎng)傳輸流媒體數(shù)據(jù)的可選方案是:首先建立 WebSocket雙向連接,通過WebSocket文本幀傳輸MPEG DASH控制信息,通過WebSocket二 進(jìn)制幀傳輸分片。
[0007] 圖1所示的框架下客戶端展現(xiàn)媒體內(nèi)容的過程參見圖2,在圖1所示的框架下客戶 端展現(xiàn)媒體內(nèi)容的過程包括如下步驟:
[0008] S201 :客戶端向服務(wù)器發(fā)送OpenMedia消息,通過在消息中攜帶MPD的URL地址, 指示需要播放的媒體;
[0009] S202 :服務(wù)器向客戶端發(fā)送MediaInfo消息,告知客戶端媒體的信息,比如:媒體 是否已經(jīng)就緒;
[0010] S203 :客戶端向服務(wù)器發(fā)送StartStream消息,請求服務(wù)器下發(fā)媒體;
[0011] S204 :服務(wù)器向客戶端發(fā)送StreamInfo消息,告知客戶端媒體流的信息;
[0012] S205 :服務(wù)器開始下發(fā)媒體分片。
[0013] 客戶端向服務(wù)器請求啟動播放媒體后,服務(wù)器可通過圖2中的步驟S204,在向客 戶端發(fā)送StreamInfo消息中,攜帶用于指示服務(wù)器是否會下發(fā)相同內(nèi)容、不同碼率的多個 流的指示信息multipleRepresentation,若通過該指示信息指示服務(wù)器會下發(fā)相同內(nèi)容、 不同碼率的多個流,則服務(wù)器在發(fā)送分片時,會向客戶端同時發(fā)送多個相同內(nèi)容、不同碼率 的首個分片。
[0014] 上述過程涉及的OpenMedia消息、MediaInfo消息、StartStream消息和 StreamInf〇消息可視為針對MPEG DASH協(xié)議在WebSocket協(xié)議上擴(kuò)展的消息,在WebSocket 的文本幀傳輸。
[0015] 但是,客戶端并不知道服務(wù)器先發(fā)送的分片是高碼率的還是低碼率的。
[0016] -種實現(xiàn)方式包括:客戶端在收到一個分片后,在預(yù)設(shè)的等待時長內(nèi),判斷是否收 到更高碼率的分片;若收到更高碼率的分片,則對該更高碼率的分片解碼并展現(xiàn);若未收 到更高碼率的分片,則對先前收到的分片進(jìn)行解碼并展現(xiàn)。
[0017] 對于服務(wù)器先發(fā)送高碼率的分片的情況,上述實現(xiàn)方式中,客戶端收到高碼率的 分片后,由于不知道后續(xù)服務(wù)器發(fā)送的相同內(nèi)容不同碼率的分片是更高碼率的分片,還是 更低碼率的分片,則仍會等待上述預(yù)設(shè)的等待時長,增加了客戶端解碼的時延。
【發(fā)明內(nèi)容】
[0018] 本發(fā)明實施例提供一種流媒體數(shù)據(jù)傳輸裝置、方法和系統(tǒng),用以解決客戶端等待 更高碼率的分片,解碼時延長的問題。
[0019] 第一方面,本發(fā)明實施例提供一種客戶端,包括:
[0020] 第一處理模塊,用于判斷服務(wù)器是否下發(fā)相同內(nèi)容、不同碼率的多個分片;
[0021] 第二處理模塊,用于在所述第一處理模塊判斷出所述服務(wù)器下發(fā)相同內(nèi)容、不同 碼率的多個分片時,判斷所述服務(wù)器優(yōu)先發(fā)送高碼率的分片,還是優(yōu)先發(fā)送低碼率的分片。
[0022] 第二方面,本發(fā)明實施例提供一種服務(wù)器,包括:
[0023] 處理模塊,用于確定在向客戶端下發(fā)相同內(nèi)容、不同碼率的多個分片時,優(yōu)先發(fā)送 高碼率的分片,還是優(yōu)先發(fā)送低碼率的分片;
[0024] 收發(fā)模塊,將用于指示是否優(yōu)先發(fā)送高碼率的分片的第一指示信息發(fā)給所述客戶 端。
[0025] 第三方面,本發(fā)明實施例提供一種流媒體數(shù)據(jù)傳輸方法,包括:
[0026] 判斷服務(wù)器是否下發(fā)相同內(nèi)容、不同碼率的多個分片;
[0027] 若所述服務(wù)器下發(fā)相同內(nèi)容、不同碼率的多個分片,則判斷所述服務(wù)器優(yōu)先發(fā)送 高碼率的分片,還是優(yōu)先發(fā)送低碼率的分片。
[0028] 第四方面,本發(fā)明實施例提供另一種流媒體數(shù)據(jù)傳輸方法,包括:
[0029] 確定在向客戶端下發(fā)相同內(nèi)容、不同碼率的多個分片時,優(yōu)先發(fā)送高碼率的分片, 還是優(yōu)先發(fā)送低碼率的分片;
[0030] 將用于指示是否優(yōu)先發(fā)送高碼率的分片的第一指示信息發(fā)給所述客戶端。
[0031] 第五方面,本發(fā)明實施例提供一種流媒體數(shù)據(jù)傳輸系統(tǒng),包括客戶端和服務(wù)器,其 中,所述客戶端,用于判斷所述服務(wù)器是否下發(fā)相同內(nèi)容、不同碼率的多個分片,若所述服 務(wù)器下發(fā)相同內(nèi)容、不同碼率的多個分片,則判斷所述服務(wù)器優(yōu)先發(fā)送高碼率的分片,還是 優(yōu)先發(fā)送低碼率的分片;
[0032] 所述服務(wù)器,用于向所述客戶端下發(fā)媒體分片。
[0033] 結(jié)合第五方面,在第一種可能的實現(xiàn)方式中,所述客戶端還用于:在判斷出所述服 務(wù)器優(yōu)先發(fā)送高碼率的分片時,開始接收高碼率的分片。
[0034] 結(jié)合第五方面,或第五方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式 中,所述服務(wù)器還用于:將用于指示是否優(yōu)先發(fā)送高碼率的分片的第一指示信息發(fā)給所述 客戶端;
[0035] 所述客戶端具體用于:根據(jù)接收的所述第一指示信息,判斷所述服務(wù)器優(yōu)先發(fā)送 高碼率的分片,還是優(yōu)先發(fā)送低碼率的分片。
[0036] 綜上,在本發(fā)明實施例中,客戶端能夠判斷服務(wù)器優(yōu)先發(fā)送高碼率的分片,還是優(yōu) 先發(fā)送低碼率的分片,因此可實現(xiàn)客戶端在判斷出服務(wù)器優(yōu)先發(fā)送高碼率的分片時,無需 再等待服務(wù)器下發(fā)更高碼率的分片,而直接對接收的分片解碼,縮短了客戶端解碼的時延。
【附圖說明】
[0037] 圖1為MPEG DASH標(biāo)準(zhǔn)定義的MPD層次結(jié)構(gòu)模型圖;
[0038] 圖2為在圖1所示的框架下客戶端展現(xiàn)媒體內(nèi)容的過程的流程圖;
[0039] 圖3為本發(fā)明實施例提供的流媒體數(shù)據(jù)傳輸系統(tǒng)的結(jié)構(gòu)示意圖;
[0040] 圖4為WebSocket幀結(jié)構(gòu)不意圖;
[0041] 圖5為碼率切換方式示意圖;
[0042] 圖6為本發(fā)明實施例一的流程圖;
[0043] 圖7A為本發(fā)明實施例提供的客戶端的第一種結(jié)構(gòu)示意圖;
[0044] 圖7B為本發(fā)明實施例提供的客戶端的第二種結(jié)構(gòu)示意圖;
[0045] 圖7C為本發(fā)明實施例提供的客戶端的第三種結(jié)構(gòu)示意圖;
[0046] 圖7D為本發(fā)明實施例提供的客戶端的第四種結(jié)構(gòu)示意圖;
[0047] 圖8為本發(fā)明實施例提供的服務(wù)器的結(jié)構(gòu)示意圖;
[0048] 圖9為本發(fā)明實施例提供的第一種流媒體數(shù)據(jù)傳輸方法的流程圖;
[0049] 圖10為本發(fā)明實施例提供的第二種流媒體數(shù)據(jù)傳輸方法的流程圖。
【具體實施方式】
[0050] 本發(fā)明實施例提供一種流媒體數(shù)據(jù)傳輸裝置和方法,用以解決客戶端等待更高碼 率的分片,解碼時延長的問題。
[0051] 在本發(fā)明實施例提供的一種流媒體數(shù)據(jù)傳輸裝置中,第一處理模塊判斷服務(wù)器是 否下發(fā)相同內(nèi)容、不同碼率的多個分片;第二處理模塊在第一處理模塊判斷出服務(wù)器下發(fā) 相同內(nèi)同、不同碼率的多個分片時,判斷服務(wù)器優(yōu)先發(fā)送高碼率的分片,還是優(yōu)先發(fā)送低碼 率的分片。
[0052] 其中,由于客戶端能夠判斷服務(wù)器在下發(fā)相同內(nèi)容、不同碼率的多個分片時,優(yōu)先 發(fā)送高碼率的分片,還是優(yōu)先發(fā)送低碼率的分片,因而在判斷出服務(wù)器優(yōu)先發(fā)送高碼率的 分片時,無需再等待服務(wù)器下發(fā)更高碼率的分片,而直接對接收的分片解碼,縮短了客戶端 解碼的時延。
[0053] 下面,結(jié)合附圖對本發(fā)明實施例進(jìn)行詳細(xì)說明。首先,介紹本發(fā)明實施例提供的流 媒體數(shù)據(jù)傳輸系統(tǒng);然后分別介紹本發(fā)明實施例提供的客戶端和服務(wù)器;最后介紹本發(fā)明 實施例提供的兩種流媒體數(shù)據(jù)傳輸方法。
[0054] 圖3為本發(fā)明實施例提供的流媒體數(shù)據(jù)傳輸系統(tǒng)的結(jié)構(gòu)示意圖。如圖3所示,該 系統(tǒng)包括:客戶端301和服務(wù)器302 ;其中,
[0055] 客戶端301,用于判斷服務(wù)器302是否下發(fā)相同內(nèi)容、不同碼率的多個分片,若服 務(wù)器302下發(fā)相同內(nèi)容、不同碼率的多個分片,進(jìn)一步判斷服務(wù)器302優(yōu)先發(fā)送高碼率的分 片