亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

HTTP流媒體傳輸方法及裝置與流程

文檔序號:12829155閱讀:555來源:國知局
HTTP流媒體傳輸方法及裝置與流程

本發(fā)明涉及通信領域,具體而言,涉及一種http流媒體傳輸方法及裝置。



背景技術:

近年來,通過互聯(lián)網(wǎng)傳播的視頻內(nèi)容呈現(xiàn)爆發(fā)性的增長,一方面源自于接入帶寬的增加,包括3g、4g系統(tǒng)的規(guī)模應用,數(shù)字用戶線(digitalsubscriberline,簡稱為xdsl)和光纖接入在家庭用戶的大量部署,有效地提高了最后一公里的接入帶寬;另一方面,視頻編碼的進展提高了視頻的壓縮率,h.264/avc,h.265/hevc都是這方面的代表。據(jù)統(tǒng)計2014年http視頻數(shù)據(jù)已經(jīng)占到北美互聯(lián)網(wǎng)流量的50%以上,預計到2020年,移動視頻數(shù)據(jù)流量將占到移動數(shù)據(jù)流量的70%以上。

超文本傳輸協(xié)議(hypertexttransferprotocol,簡稱為http)流媒體(httpstreaming)以其兼容性、可擴展性而得到廣泛應用,目前已成為互聯(lián)網(wǎng)視頻傳輸事實上的標準。http流媒體是一種基于http協(xié)議的碼率自適應媒體傳輸技術,利用互聯(lián)網(wǎng)上傳統(tǒng)的httpweb服務器提供高品質(zhì)的流媒體內(nèi)容。http流媒體將一段視頻切分成許多小的http服務器上的文件分塊,每個文件分塊包含一個較短播放時間的視頻內(nèi)容。這些小的視頻片段可能是數(shù)個小時電影(點播)或者體育賽事現(xiàn)場視頻(直播)的一部分。其中,視頻可被編碼成為多個不同碼率的視頻片段,以覆蓋不同網(wǎng)絡帶寬需求。采用可擴展標記語言(extensiblemarkuplanguage,簡稱為xml)格式定義的媒體呈現(xiàn)描述(mediapresentationdescription,簡稱為mpd)為客戶端獲取、播放視頻內(nèi)容中的媒體片段提供了位置信息和時間信息。mpd文件描述了媒體片段的持續(xù)時間,統(tǒng)一資源定位符(url),以及視頻分辨率、適配比特率等媒體屬性。當客戶端選擇播放一個視頻的時候,它可根據(jù)mpd文件中的信息選擇下載適應于當前可用網(wǎng)絡帶寬和終端解碼、渲染能力的媒體片段并進行播放。

然而,http協(xié)議最初是為文件傳輸(譬如web網(wǎng)頁)設計的,沒有考慮視頻實時傳輸特性,因此無法滿足低延遲視頻傳輸?shù)男枨螅菏紫?,http流媒體是一種以媒體片段(segment)為單位的文件下載技術,一個片段中包含若干秒的視頻幀,這將導致無法避免的媒體分段與編碼延遲;其次,盡管內(nèi)容分發(fā)網(wǎng)絡(contentdeliverynetwork,簡稱為cdn)已廣泛部署,為用戶提供就近接入服務,但基于客戶端輪詢(poll)的異步數(shù)據(jù)獲取仍將帶來額外延遲;圖1是根據(jù)相關技術中http流媒體技術中的pull模式傳輸示意圖,如圖1所示,現(xiàn)有http1.1協(xié)議提供的是一種拉模式(pull)傳輸機制,客戶端必須針對每一個媒體片段發(fā)送http請求,http請求開銷大且與媒體片段播放時長成反比例增長,并不適合資源受限的移動終端。因此,實現(xiàn)互聯(lián)網(wǎng)條件下高效的(低延時、請求開銷合理)視頻傳輸,特別是視頻直播(livevideo)應用,依然是http流媒體面臨的一個巨大挑戰(zhàn)。

目前,http協(xié)議的升級版本http2.0帶來了可行的解決手段。與http1.1相比,http 2.0提高了協(xié)議的傳輸性能,支持請求-應答復用、協(xié)議頭壓縮以及服務器“推”(serverpush)特性。圖2是根據(jù)相關技術中http流媒體技術中的push模式傳輸示意圖,如圖2所示,利用http2.0服務器“推”,服務器端能夠主動將當前最新可用片段推送至客戶端,而不需客戶端額外請求。具體而言,在處理某個媒體片段http請求后,http2.0服務器將就后續(xù)媒體片段推送策略(pushstrategy)與客戶端達成一致,并根據(jù)該推送策略向客戶端主動推送后續(xù)可用的k個媒體片段,或者后續(xù)一段播放時間為t秒的媒體片段,以實現(xiàn)降低直播延時,減少請求開銷的目的。

在基于服務器“推”特性的http流媒體傳輸技術中,客戶端需要可根據(jù)可用網(wǎng)絡帶寬、播放器緩存狀態(tài)等信息動態(tài)更新媒體片段的“推送策略”,即請求服務器改變推送媒體片段的數(shù)量(pushsequence)和碼率(representationswitch)。然而,在相關技術中,目前尚不存在有效的http流媒體推送更新解決方案。



技術實現(xiàn)要素:

本發(fā)明提供了一種http流媒體傳輸方法及裝置,以至少解決相關技術中尚不存在有效的http流媒體推送更新解決方案的問題。

根據(jù)本發(fā)明的一個方面,提供了一種http流媒體傳輸方法,包括:

發(fā)送第一媒體數(shù)據(jù)的獲取請求至服務器,所述獲取請求中攜帶第二媒體數(shù)據(jù)的推送指示;

接收所述服務器返回的所述第一媒體數(shù)據(jù)、所述第二媒體數(shù)據(jù)的推送應答,以及所述服務器根據(jù)所述推送應答發(fā)送的所述第二媒體數(shù)據(jù)的推送承諾;

發(fā)送流終止命令至所述服務器,所述流終止命令用于終止所述服務器根據(jù)所述推送承諾預留的所述第二媒體數(shù)據(jù)的推送流。

進一步地,接收所述服務器根據(jù)所述推送應答發(fā)送的所述第二媒體數(shù)據(jù)的推送承諾之后,所述方法還包括:

接收所述服務器根據(jù)所述推送承諾推送的所述第二媒體數(shù)據(jù)。

發(fā)送流終止命令至所述服務器,所述流終止命令用于終止所述服務器根據(jù)所述推送承諾預留的尚未完成推送所述第二媒體數(shù)據(jù)的推送流。

進一步地,所述發(fā)送流終止命令至所述服務器之前,所述方法還包括:

在所述流終止命令中設置即時終止標記值,所述即時終止標記用于指示所述服務器在所述推送流中立即停止推送所述第二媒體數(shù)據(jù),并終止所述推送流。

進一步地,所述發(fā)送流終止命令至所述服務器之前,所述方法還包括:

在所述流終止命令中設置即時終止標記值,所述即時終止標記用于指示所述服務器在所述推送流中完成推送所述第二媒體數(shù)據(jù),然后終止所述推送流。

根據(jù)本發(fā)明的一個方面,還提供了一種http流媒體傳輸方法,包括:

接收客戶端發(fā)送的第一媒體數(shù)據(jù)的獲取請求,所述獲取請求中攜帶第二媒體數(shù)據(jù)的推送指示;

返回所述第一媒體數(shù)據(jù)、所述第二媒體數(shù)據(jù)的推送應答,并根據(jù)所述推送應答發(fā)送所述第二媒體數(shù)據(jù)的推送承諾至所述客戶端;

接收所述客戶端發(fā)送的流終止命令,并根據(jù)所述流終止命令終止根據(jù)所述推送承諾預留的所述第二媒體數(shù)據(jù)的推送流。

進一步地,根據(jù)所述推送應答發(fā)送所述第二媒體數(shù)據(jù)的推送承諾至所述客戶端之后,所述方法還包括:

根據(jù)所述推送承諾推送所述第二媒體數(shù)據(jù)至所述客戶端;

接收所述客戶端發(fā)送的流終止命令,并根據(jù)所述流終止命令終止根據(jù)所述推送承諾預留的尚未完成推送所述第二媒體數(shù)據(jù)的推送流。

進一步地,所述根據(jù)所述流終止命令終止根據(jù)所述推送承諾預留的所述第二媒體數(shù)據(jù)的推送流包括:

如果所述流終止命令中存在即時終止標記,在所述推送流中立即停止推送所述第二媒體數(shù)據(jù),并終止所述推送流;

如果所述流終止命令中不存在即時終止標記,在所述推送流中完成推送所述第二媒體數(shù)據(jù),然后終止所述推送流。

根據(jù)本發(fā)明的另一個方面,還提供了一種http流媒體傳輸方法,包括:

發(fā)送第一媒體數(shù)據(jù)的獲取請求至服務器,所述獲取請求中攜帶第二媒體數(shù)據(jù)的推送更新指示;

接收所述服務器返回的所述第一媒體數(shù)據(jù),以及所述第二媒體數(shù)據(jù)的推送更新應答;

接收所述服務器發(fā)送的流終止命令,根據(jù)所述流終止命令終止接收所述服務器推送的所述第二媒體數(shù)據(jù)。

進一步地,所述發(fā)送第一媒體數(shù)據(jù)的獲取請求至服務器之后,所述方法還包括:

接收所述服務器發(fā)送的所述第二媒體數(shù)據(jù)的推送承諾;

接收所述服務器發(fā)送的流終止命令,根據(jù)所述流終止命令終止接收所述服務器根據(jù)所述推送承諾尚未完成推送的所述第二媒體數(shù)據(jù)。

進一步地,接收所述第二媒體數(shù)據(jù)的推送更新應答之后,所述方法還包括:

接收所述服務器根據(jù)所述推送更新應答發(fā)送的第三媒體數(shù)據(jù)的推送承諾;

接收所述服務器根據(jù)所述推送承諾推送的所述第三媒體數(shù)據(jù)。

根據(jù)本發(fā)明的另一個方面,還提供了一種http流媒體傳輸方法,包括:

接收客戶端發(fā)送的第一媒體數(shù)據(jù)的獲取請求,所述獲取請求中攜帶第二媒體數(shù)據(jù)的推送更新指示;

返回所述第一媒體數(shù)據(jù),以及所述第二媒體數(shù)據(jù)的推送更新應答至所述客戶端;

發(fā)送流終止命令至所述客戶端,所述流終止命令用于終止預留的所述第二媒體數(shù)據(jù)的推送流。

進一步地,所述接收客戶端發(fā)送的第一媒體數(shù)據(jù)的獲取請求之后,所述方法還包括:

發(fā)送所述第二媒體數(shù)據(jù)的推送承諾至所述客戶端;

發(fā)送流終止命令至所述客戶端,所述流終止命令用于終止根據(jù)所述推送承諾預留的尚未完成推送所述第二媒體數(shù)據(jù)的推送流。

進一步地,所述返回所述第二媒體數(shù)據(jù)的推送更新應答至所述客戶端之后,所述方法還包括:

根據(jù)所述推送更新應答發(fā)送第三媒體數(shù)據(jù)的推送承諾至所述客戶端;

根據(jù)所述推送承諾推送所述第三媒體數(shù)據(jù)至所述客戶端。

進一步地,所述發(fā)送流終止命令至所述客戶端,所述流終止命令用于終止預留的所述第二媒體數(shù)據(jù)的推送流包括:

如果所述推送更新指示中存在即時終止標記,在所述推送流中立即發(fā)送流終止命令至所述客戶端,終止所述推送流;

如果所述推送更新指示中不存在即時終止標記,完成所述推送流中正在推送的所述第二媒體數(shù)據(jù)至所述客戶端,然后在所述推送流中發(fā)送流終止命令至所述客戶端,終止所述推送流。

根據(jù)本發(fā)明的另一個方面,還提供了一種http流媒體傳輸裝置,位于終端中,包括:

第一發(fā)送模塊,用于發(fā)送第一媒體數(shù)據(jù)的獲取請求至服務器,所述獲取請求中攜帶第二媒體數(shù)據(jù)的推送指示;

第一接收模塊,用于接收所述服務器返回的所述第一媒體數(shù)據(jù)、所述第二媒體數(shù)據(jù)的推送應答,以及所述服務器根據(jù)所述推送應答發(fā)送的所述第二媒體數(shù)據(jù)的推送承諾;

第二發(fā)送模塊,用于發(fā)送流終止命令至所述服務器,所述流終止命令用于終止所述服務器根據(jù)所述推送承諾預留的所述第二媒體數(shù)據(jù)的推送流。

進一步地,所述裝置還包括:

第二接收模塊,用于接收所述服務器根據(jù)所述推送應答發(fā)送的所述第二媒體數(shù)據(jù)的推送承諾之后,接收所述服務器根據(jù)所述推送承諾推送的所述第二媒體數(shù)據(jù)。

第三發(fā)送模塊,用于發(fā)送流終止命令至所述服務器,所述流終止命令用于終止所述服務器根據(jù)所述推送承諾預留的尚未完成推送所述第二媒體數(shù)據(jù)的推送流。

進一步地,所述裝置還包括:

第一設置模塊,用于所述發(fā)送流終止命令至所述服務器之前,在所述流終止命令中設置即時終止標記值,所述即時終止標記用于指示所述服務器在所述推送流中立即停止推送所述第二媒體數(shù)據(jù),并終止所述推送流。

進一步地,所述裝置還包括:

第二設置模塊,用于所述發(fā)送流終止命令至所述服務器之前,在所述流終止命令中設置即時終止標記值,所述即時終止標記用于指示所述服務器在所述推送流中完成推送所述第二媒體數(shù)據(jù),然后終止所述推送流。

根據(jù)本發(fā)明的另一個方面,還提供了一種http流媒體傳輸裝置,位于服務器中,包括:

第四接收模塊,用于接收客戶端發(fā)送的第一媒體數(shù)據(jù)的獲取請求,所述獲取請求中攜帶第二媒體數(shù)據(jù)的推送指示;

第四發(fā)送模塊,用于返回所述第一媒體數(shù)據(jù)、所述第二媒體數(shù)據(jù)的推送應答,并根據(jù)所述推送應答發(fā)送所述第二媒體數(shù)據(jù)的推送承諾至所述客戶端;

第五接收模塊,用于接收所述客戶端發(fā)送的流終止命令,并根據(jù)所述流終止命令終止根據(jù)所述推送承諾預留的所述第二媒體數(shù)據(jù)的推送流。

進一步地,所述裝置還包括:

第五發(fā)送模塊,用于根據(jù)所述推送應答發(fā)送所述第二媒體數(shù)據(jù)的推送承諾至所述客戶端之后,根據(jù)所述推送承諾推送所述第二媒體數(shù)據(jù)至所述客戶端;

第六接收模塊,用于接收所述客戶端發(fā)送的流終止命令,并根據(jù)所述流終止命令終止根據(jù)所述推送承諾預留的尚未完成推送所述第二媒體數(shù)據(jù)的推送流。

進一步地,所述第五接收模塊包括:

第一終止單元,用于如果所述流終止命令中存在即時終止標記,在所述推送流中立即停止推送所述第二媒體數(shù)據(jù),并終止所述推送流;

第二終止單元,用于如果所述流終止命令中不存在即時終止標記,在所述推送流中完成推送所述第二媒體數(shù)據(jù),然后終止所述推送流。

根據(jù)本發(fā)明的另一個方面,還提供了一種http流媒體傳輸裝置,位于終端中,包括:

第六發(fā)送模塊,用于發(fā)送第一媒體數(shù)據(jù)的獲取請求至服務器,所述獲取請求中攜帶第二媒體數(shù)據(jù)的推送更新指示;

第七接收模塊,用于接收所述服務器返回的所述第一媒體數(shù)據(jù),以及所述第二媒體數(shù)據(jù)的推送更新應答;

第八接收模塊,用于接收所述服務器發(fā)送的流終止命令,根據(jù)所述流終止命令終止接收所述服務器推送的所述第二媒體數(shù)據(jù)。

進一步地,所述裝置還包括:

第九接收模塊,用于所述發(fā)送第一媒體數(shù)據(jù)的獲取請求至服務器之后,接收所述服務器發(fā)送的所述第二媒體數(shù)據(jù)的推送承諾;

第十接收模塊,用于接收所述服務器發(fā)送的流終止命令,根據(jù)所述流終止命令終止接收所述服務器根據(jù)所述推送承諾尚未完成推送的所述第二媒體數(shù)據(jù)。

進一步地,所述裝置還包括:

第十一接收模塊,用于接收所述第二媒體數(shù)據(jù)的推送更新應答之后,接收所述服務器根據(jù)所述推送更新應答發(fā)送的第三媒體數(shù)據(jù)的推送承諾;

第十二接收模塊,用于接收所述服務器根據(jù)所述推送承諾推送的所述第三媒體數(shù)據(jù)。

根據(jù)本發(fā)明的另一個方面,還提供了一種http流媒體傳輸裝置,位于服務器中,包括:

第十三接收模塊,接收客戶端發(fā)送的第一媒體數(shù)據(jù)的獲取請求,所述獲取請求中攜帶第二媒體數(shù)據(jù)的推送更新指示;

第七發(fā)送模塊,用于返回所述第一媒體數(shù)據(jù),以及所述第二媒體數(shù)據(jù)的推送更新應答至所述客戶端;

第八發(fā)送模塊,用于發(fā)送流終止命令至所述客戶端,所述流終止命令用于終止預留的所述第二媒體數(shù)據(jù)的推送流。

進一步地,所述裝置還包括:

第九發(fā)送模塊,用于所述接收客戶端發(fā)送的第一媒體數(shù)據(jù)的獲取請求之后,發(fā)送所述第二媒體數(shù)據(jù)的推送承諾至所述客戶端;

第十發(fā)送模塊,用于發(fā)送流終止命令至所述客戶端,所述流終止命令用于終止根據(jù)所述推送承諾預留的尚未完成推送所述第二媒體數(shù)據(jù)的推送流。

進一步地,所述裝置還包括:

第十一發(fā)送模塊,用于所述返回所述第一媒體數(shù)據(jù),以及所述第二媒體數(shù)據(jù)的推送更新應答至所述客戶端之后,根據(jù)所述推送更新應答發(fā)送第三媒體數(shù)據(jù)的推送承諾至所述客戶端;

第十二發(fā)送模塊,用于根據(jù)所述推送承諾推送所述第三媒體數(shù)據(jù)至所述客戶端。

進一步地,所述第八發(fā)送模塊包括:

第三終止單元,用于如果所述推送更新指示中存在即時終止標記,在所述推送流中立即發(fā)送流終止命令至所述客戶端,終止所述推送流;

第四終止單元,用于如果所述推送更新指示中不存在即時終止標記,完成所述推送流中正在推送的所述第二媒體數(shù)據(jù)至所述客戶端,然后在所述推送流中發(fā)送流終止命令至所述客戶端,終止所述推送流。

通過本發(fā)明,發(fā)送第一媒體數(shù)據(jù)的獲取請求至服務器,該獲取請求中攜帶第二媒體數(shù)據(jù)的推送指示;接收該服務器返回的該第一媒體數(shù)據(jù)、該第二媒體數(shù)據(jù)的推送應答,以及該服務器根據(jù)該推送應答發(fā)送的該第二媒體數(shù)據(jù)的推送承諾;發(fā)送流終止命令至該服務器,該流終止命令用于終止該服務器根據(jù)該推送承諾預留的該第二媒體數(shù)據(jù)的推送流,解決了尚不存在有效的http流媒體推送更新解決方案的問題,完善了http流媒體傳輸會話中的推送更新機制。

附圖說明

此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中:

圖1是根據(jù)相關技術中http流媒體技術中的pull模式傳輸示意圖;

圖2是根據(jù)相關技術中http流媒體技術中的push模式傳輸示意圖;

圖3是根據(jù)本發(fā)明實施例的一種http流媒體傳輸?shù)牧鞒虉D一;

圖4是根據(jù)本發(fā)明實施例的一種http流媒體傳輸?shù)牧鞒虉D二;

圖5是根據(jù)本發(fā)明實施例的一種http流媒體傳輸?shù)牧鞒虉D三;

圖6是根據(jù)本發(fā)明實施例的一種http流媒體傳輸?shù)牧鞒虉D四;

圖7是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖一;

圖8是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖二;

圖9是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖三;

圖10是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖四;

圖11是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖五;

圖12是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖六;

圖13是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖七;

圖14是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖八;

圖15是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖九;

圖16是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖十;

圖17是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖十一;

圖18是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖十二;

圖19是根據(jù)本發(fā)明實施例的一種http流媒體傳輸系統(tǒng)架構(gòu)的示意圖;

圖20是根據(jù)本發(fā)明優(yōu)選實施例的基于媒體片段取消命令實現(xiàn)http流媒體推送會話更新的交互流程圖;

圖21是根據(jù)本發(fā)明優(yōu)選實施例的一種http流媒體傳輸方法的消息交互流程圖一;

圖22是根據(jù)本發(fā)明優(yōu)選實施例的基于媒體片段更新命令實現(xiàn)http流媒體推送會話更新的交互流程圖;

圖23是根據(jù)本發(fā)明優(yōu)選實施例的另一種http流媒體傳輸方法的消息交互流程圖二;

圖24是根據(jù)本發(fā)明優(yōu)選實施例的另一種http流媒體傳輸方法的消息交互流程圖三;

圖25是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖。

具體實施方式

下文中將參考附圖并結(jié)合實施例來詳細說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。

需要說明的是,本發(fā)明的說明書和權利要求書及上述附圖中的術語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。

在本實施例中提供了一種http流媒體傳輸方法,圖3是根據(jù)本發(fā)明實施例的一種http流媒體傳輸?shù)牧鞒虉D一,如圖3所示,該流程包括如下步驟:

步驟s302,發(fā)送第一媒體數(shù)據(jù)的獲取請求至服務器,該獲取請求中攜帶第二媒體數(shù)據(jù)的推送指示;

步驟s304,接收該服務器返回的該第一媒體數(shù)據(jù)、該第二媒體數(shù)據(jù)的推送應答,以及該服務器根據(jù)該推送應答發(fā)送的該第二媒體數(shù)據(jù)的推送承諾;

步驟s306,發(fā)送流終止命令至該服務器,該流終止命令用于終止該服務器根據(jù)該推送承諾預留的該第二媒體數(shù)據(jù)的推送流。

通過上述步驟,解決了尚不存在有效的http流媒體推送更新解決方案的問題,完善了http流媒體傳輸會話中的推送更新機制。

在本發(fā)明的實施例中,接收該服務器根據(jù)該推送應答發(fā)送的該第二媒體數(shù)據(jù)的推送承諾之后,該方法還包括:

接收該服務器根據(jù)該推送承諾推送的該第二媒體數(shù)據(jù)。

發(fā)送流終止命令至該服務器,該流終止命令用于終止該服務器根據(jù)該推送承諾預留的尚未完成推送該第二媒體數(shù)據(jù)的推送流。

在本發(fā)明的實施例中,該發(fā)送流終止命令至該服務器之前,在該流終止命令中設置即時終止標記值,該即時終止標記用于指示該服務器在該推送流中立即停止推送該第二媒體數(shù)據(jù),并終止該推送流。

在本發(fā)明的實施例中,該發(fā)送流終止命令至該服務器之前,在該流終止命令中設置即時終止標記值,該即時終止標記用于指示該服務器在該推送流中完成推送該第二媒體數(shù)據(jù),然后終止該推送流。

在本實施例中還提供了一種http流媒體傳輸方法,圖4是根據(jù)本發(fā)明實施例的一種http流媒體傳輸?shù)牧鞒虉D二,如圖4所示,該流程包括如下步驟:

步驟s402,接收客戶端發(fā)送的第一媒體數(shù)據(jù)的獲取請求,該獲取請求中攜帶第二媒體數(shù)據(jù)的推送指示;

步驟s404,返回該第一媒體數(shù)據(jù)、該第二媒體數(shù)據(jù)的推送應答,并根據(jù)該推送應答發(fā)送該第二媒體數(shù)據(jù)的推送承諾至該客戶端;

步驟s406,接收該客戶端發(fā)送的流終止命令,并根據(jù)該流終止命令終止根據(jù)該推送承諾預留的該第二媒體數(shù)據(jù)的推送流。

通過上述步驟,解決了尚不存在有效的http流媒體推送更新解決方案的問題,完善了http流媒體傳輸會話中的推送更新機制。

在本發(fā)明的實施例中,根據(jù)該推送應答發(fā)送該第二媒體數(shù)據(jù)的推送承諾至該客戶端之后,根據(jù)該推送承諾推送該第二媒體數(shù)據(jù)至該客戶端;

接收該客戶端發(fā)送的流終止命令,并根據(jù)該流終止命令終止根據(jù)該推送承諾預留的尚未完成推送該第二媒體數(shù)據(jù)的推送流。

在本發(fā)明的實施例中,該根據(jù)該流終止命令終止根據(jù)該推送承諾預留的該第二媒體數(shù)據(jù)的推送流包括:

如果該流終止命令中存在即時終止標記,在該推送流中立即停止推送該第二媒體數(shù)據(jù),并終止該推送流;

如果該流終止命令中不存在即時終止標記,在該推送流中完成推送該第二媒體數(shù)據(jù),然后終止該推送流。

在本實施例中還提供了一種http流媒體傳輸方法,圖5是根據(jù)本發(fā)明實施例的一種http流媒體傳輸?shù)牧鞒虉D三,如圖5所示,該流程包括如下步驟:

步驟s502,發(fā)送第一媒體數(shù)據(jù)的獲取請求至服務器,該獲取請求中攜帶第二媒體數(shù)據(jù)的推送更新指示;

步驟s504,接收該服務器返回的該第一媒體數(shù)據(jù),以及該第二媒體數(shù)據(jù)的推送更新應答;

步驟s506,接收該服務器發(fā)送的流終止命令,根據(jù)該流終止命令終止接收該服務器推送的該第二媒體數(shù)據(jù)。

通過上述步驟,解決了尚不存在有效的http流媒體推送更新解決方案的問題,完善了http流媒體傳輸會話中的推送更新機制。

在本發(fā)明的實施例中,該發(fā)送第一媒體數(shù)據(jù)的獲取請求至服務器之后,接收該服務器發(fā)送的該第二媒體數(shù)據(jù)的推送承諾;

接收該服務器發(fā)送的流終止命令,根據(jù)該流終止命令終止接收該服務器根據(jù)該推送承諾尚未完成推送的該第二媒體數(shù)據(jù)。

在本發(fā)明的實施例中,接收該第二媒體數(shù)據(jù)的推送更新應答之后,接收該服務器根據(jù)該推送更新應答發(fā)送的第三媒體數(shù)據(jù)的推送承諾;

接收該服務器根據(jù)該推送承諾推送的該第三媒體數(shù)據(jù)。

在本實施例中還提供了一種http流媒體傳輸方法,圖6是根據(jù)本發(fā)明實施例的一種http流媒體傳輸?shù)牧鞒虉D四,如圖6所示,該流程包括如下步驟:

步驟s602,接收客戶端發(fā)送的第一媒體數(shù)據(jù)的獲取請求,該獲取請求中攜帶第二媒體數(shù)據(jù)的推送更新指示;

步驟s604,返回該第一媒體數(shù)據(jù),以及該第二媒體數(shù)據(jù)的推送更新應答至該客戶端;

步驟s606,發(fā)送流終止命令至該客戶端,該流終止命令用于終止預留的該第二媒體數(shù)據(jù)的推送流。

通過上述步驟,解決了尚不存在有效的http流媒體推送更新解決方案的問題,完善了http流媒體傳輸會話中的推送更新機制。

在本發(fā)明的實施例中,該接收客戶端發(fā)送的第一媒體數(shù)據(jù)的獲取請求之后,發(fā)送該第二媒體數(shù)據(jù)的推送承諾至該客戶端;發(fā)送流終止命令至該客戶端,該流終止命令用于終止根據(jù)該推送承諾預留的尚未完成推送該第二媒體數(shù)據(jù)的推送流。

在本發(fā)明的實施例中,該返回該第二媒體數(shù)據(jù)的推送更新應答至該客戶端之后,根據(jù)該推送更新應答發(fā)送第三媒體數(shù)據(jù)的推送承諾至該客戶端;根據(jù)該推送承諾推送該第三媒體數(shù)據(jù)至該客戶端。

在本發(fā)明的實施例中,該發(fā)送流終止命令至該客戶端,該流終止命令用于終止預留的該第二媒體數(shù)據(jù)的推送流包括:如果該推送更新指示中存在即時終止標記,在該推送流中立即發(fā)送流終止命令至該客戶端,終止該推送流;如果該推送更新指示中不存在即時終止標記,完成該推送流中正在推送的該第二媒體數(shù)據(jù)至該客戶端,然后在該推送流中發(fā)送流終止命令至該客戶端,終止該推送流。

在本實施例中還提供了一種http流媒體傳輸裝置,該裝置用于實現(xiàn)上述實施例及優(yōu)選實施方式,已經(jīng)進行過說明的不再贅述。如以下所使用的,術語“模塊”可以實現(xiàn)預定功能的軟件和/或硬件的組合。盡管以下實施例所描述的裝置較佳地以軟件來實現(xiàn),但是硬件,或者軟件和硬件的組合的實現(xiàn)也是可能并被構(gòu)想的。

圖7是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖一,如圖7所示,該裝置位于終端中,包括:

第一發(fā)送模塊72,用于發(fā)送第一媒體數(shù)據(jù)的獲取請求至服務器,該獲取請求中攜帶第二媒體數(shù)據(jù)的推送指示;

第一接收模塊74,用于接收該服務器返回的該第一媒體數(shù)據(jù)、該第二媒體數(shù)據(jù)的推送應答,以及該服務器根據(jù)該推送應答發(fā)送的該第二媒體數(shù)據(jù)的推送承諾;

第二發(fā)送模塊76,用于發(fā)送流終止命令至該服務器,該流終止命令用于終止該服務器根據(jù)該推送承諾預留的該第二媒體數(shù)據(jù)的推送流。

通過上述裝置,解決了尚不存在有效的http流媒體推送更新解決方案的問題,完善了http流媒體傳輸會話中的推送更新機制。

在本發(fā)明的實施例中,圖8是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖二,除了包括圖7的第一發(fā)送模塊72和第一接收模塊74,還包括:

第二接收模塊82,用于接收該服務器根據(jù)該推送應答發(fā)送的該第二媒體數(shù)據(jù)的推送承諾之后,接收該服務器根據(jù)該推送承諾推送的該第二媒體數(shù)據(jù)。

第三發(fā)送模塊84,用于發(fā)送流終止命令至該服務器,該流終止命令用于終止該服務器根據(jù)該推送承諾預留的尚未完成推送該第二媒體數(shù)據(jù)的推送流。

在本發(fā)明的實施例中,圖9是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖三,除了包括圖7的模塊外,該裝置還包括:

第一設置模塊92,用于該發(fā)送流終止命令至該服務器之前,在該流終止命令中設置即時終止標記值,該即時終止標記用于指示該服務器在該推送流中立即停止推送該第二媒體數(shù)據(jù),并終止該推送流。

在本發(fā)明的實施例中,圖10是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖四,除了包括圖7的模塊外,該裝置還包括:

第二設置模塊102,用于該發(fā)送流終止命令至該服務器之前,在該流終止命令中設置即時終止標記值,該即時終止標記用于指示該服務器在該推送流中完成推送該第二媒體數(shù)據(jù),然后終止該推送流。

圖11是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖五,該裝置位于服務器中,包括:

第四接收模塊112,用于接收客戶端發(fā)送的第一媒體數(shù)據(jù)的獲取請求,該獲取請求中攜帶第二媒體數(shù)據(jù)的推送指示;

第四發(fā)送模塊114,用于返回該第一媒體數(shù)據(jù)、該第二媒體數(shù)據(jù)的推送應答,并根據(jù)該推送應答發(fā)送該第二媒體數(shù)據(jù)的推送承諾至該客戶端;

第五接收模塊116,用于接收該客戶端發(fā)送的流終止命令,并根據(jù)該流終止命令終止根據(jù)該推送承諾預留的該第二媒體數(shù)據(jù)的推送流。

圖12是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖六,除了包括圖11的第四接收模塊112和第四發(fā)送模塊114,還包括:

第五發(fā)送模塊122,用于根據(jù)該推送應答發(fā)送該第二媒體數(shù)據(jù)的推送承諾至該客戶端之后,根據(jù)該推送承諾推送該第二媒體數(shù)據(jù)至該客戶端;

第六接收模塊124,用于接收該客戶端發(fā)送的流終止命令,并根據(jù)該流終止命令終止根據(jù)該推送承諾預留的尚未完成推送該第二媒體數(shù)據(jù)的推送流。

在本發(fā)明的實施例中,該第五接收模塊116包括:

第一終止單元,用于如果該流終止命令中存在即時終止標記,在該推送流中立即停止推送該第二媒體數(shù)據(jù),并終止該推送流;

第二終止單元,用于如果該流終止命令中不存在即時終止標記,在該推送流中完成推送該第二媒體數(shù)據(jù),然后終止該推送流。

圖13是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖七,該裝置位于終端中,包括:

第六發(fā)送模塊132,用于發(fā)送第一媒體數(shù)據(jù)的獲取請求至服務器,該獲取請求中攜帶第二媒體數(shù)據(jù)的推送更新指示;

第七接收模塊134,用于接收該服務器返回的該第一媒體數(shù)據(jù),以及該第二媒體數(shù)據(jù)的推送更新應答;

第八接收模塊136,用于接收該服務器發(fā)送的流終止命令,根據(jù)該流終止命令終止接收該服務器推送的該第二媒體數(shù)據(jù)。

在本發(fā)明的實施例中,圖14是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框 圖八,除了包括圖13的第六發(fā)送模塊132,還包括:

第九接收模塊142,用于該發(fā)送第一媒體數(shù)據(jù)的獲取請求至服務器之后,接收該服務器發(fā)送的該第二媒體數(shù)據(jù)的推送承諾;

第十接收模塊144,用于接收該服務器發(fā)送的流終止命令,根據(jù)該流終止命令終止接收該服務器根據(jù)該推送承諾尚未完成推送的該第二媒體數(shù)據(jù)。

在本發(fā)明的實施例中,圖15是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖九,除了包括圖13的第六發(fā)送模塊132和第七接收模塊134,還包括:

第十一接收模塊152,用于接收該第二媒體數(shù)據(jù)的推送更新應答之后,接收該服務器根據(jù)該推送更新應答發(fā)送的第三媒體數(shù)據(jù)的推送承諾;

第十二接收模塊154,用于接收該服務器根據(jù)該推送承諾推送的該第三媒體數(shù)據(jù)。

圖16是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖十,該裝置位于服務器中,包括:

第十三接收模塊162,接收客戶端發(fā)送的第一媒體數(shù)據(jù)的獲取請求,該獲取請求中攜帶第二媒體數(shù)據(jù)的推送更新指示;

第七發(fā)送模塊164,用于返回該第一媒體數(shù)據(jù),以及該第二媒體數(shù)據(jù)的推送更新應答至該客戶端;

第八發(fā)送模塊166,用于發(fā)送流終止命令至該客戶端,該流終止命令用于終止預留的該第二媒體數(shù)據(jù)的推送流。

在本發(fā)明的實施例中,圖17是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖十一,除了包括圖16的第十三接收模塊162,還包括:

第九發(fā)送模塊172,用于該接收客戶端發(fā)送的第一媒體數(shù)據(jù)的獲取請求之后,發(fā)送該第二媒體數(shù)據(jù)的推送承諾至該客戶端;

第十發(fā)送模塊174,用于發(fā)送流終止命令至該客戶端,該流終止命令用于終止根據(jù)該推送承諾預留的尚未完成推送該第二媒體數(shù)據(jù)的推送流。

在本發(fā)明的實施例中,圖18是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖十二,除了包括圖16的第十三接收模塊162和第七發(fā)送模塊164,還包括:

第十一發(fā)送模塊182,用于該返回該第一媒體數(shù)據(jù),以及該第二媒體數(shù)據(jù)的推送更新應答至該客戶端之后,根據(jù)該推送更新應答發(fā)送第三媒體數(shù)據(jù)的推送承諾至該客戶端;

第十二發(fā)送模塊184,用于根據(jù)該推送承諾推送該第三媒體數(shù)據(jù)至該客戶端。

在本發(fā)明的實施例中,該第八發(fā)送模塊166包括:

第三終止單元,用于如果該推送更新指示中存在即時終止標記,在該推送流中立即發(fā)送流終止命令至該客戶端,終止該推送流;

第四終止單元,用于如果該推送更新指示中不存在即時終止標記,完成該推送流中正在推送的該第二媒體數(shù)據(jù)至該客戶端,然后在該推送流中發(fā)送流終止命令至該客戶端,終止該推送流。

下面結(jié)合優(yōu)選實施例和實施方式對本發(fā)明進行詳細說明。

本發(fā)明優(yōu)選實施例提供了一種http流媒體傳輸系統(tǒng),圖19是根據(jù)本發(fā)明實施例的一種http流媒體傳輸系統(tǒng)架構(gòu)的示意圖,如圖19所示,包括:終端100、流媒體客戶端200、http客戶端300及其緩存310、網(wǎng)絡400,以及服務器500,包括:http服務器510、內(nèi)容源服務器520。下面對圖19中示出的系統(tǒng)進行說明。

終端100,為流媒體客戶端200提供運行環(huán)境的用戶側(cè)硬件設備,終端100部署實例可以包括:機頂盒、臺式機、平板電腦,智能手機等;

流媒體客戶端200,提供針對服務器500中流媒體資源的訪問、解碼、緩存和播放控制,包括:碼率自適應模塊210,媒體播放引擎220,推模塊230,拉模塊240。

流媒體客戶端200指示http客戶端300與服務器500建立媒體傳輸信道,服務器500利用該媒體信道主動向終端100推送流媒體數(shù)據(jù)。所述媒體信道可以通過http/1.1協(xié)議升級機制建立。流媒體客戶端200通過http客戶端300向服務器500發(fā)送媒體片段或者mpd文件訪問請求。其中媒體片段訪問請求中可以攜帶請求媒體片段的統(tǒng)一資源標識符uri以及后續(xù)媒體片段的“推送策略”。“推送策略”用于流媒體客戶端200與服務器500協(xié)商后續(xù)媒體片段的推送機制。除了返回請求的媒體片段數(shù)據(jù),服務器500在收到媒體片段推送請求后,將根據(jù)媒體片段的可用性以及本地策略返回推送應答,一旦流媒體客戶端200與服務器500就后續(xù)媒體片段“推送策略”達成一致,服務器500將發(fā)起媒體片段推送會話,向終端100主動推送后續(xù)可用的媒體片段。流媒體客戶端200在緩存足夠數(shù)量媒體片段數(shù)據(jù)后即可開始播放視頻內(nèi)容。

碼率自適應模塊210,檢測當前可用網(wǎng)絡帶寬以及媒體播放引擎220中媒體片段緩存狀態(tài),執(zhí)行碼率自適應算法,并向推模塊230、拉模塊240發(fā)送碼率切換指示。

媒體播放引擎220,對接收到的媒體片段進行解碼,媒體數(shù)據(jù)緩存以及視頻播放控制。

推模塊230,基于http2.0協(xié)議所支持的服務器發(fā)起會話功能,通過http客戶端300請求服務器500推送流媒體資源至終端100。

拉模塊240,基于http1.1協(xié)議或http2.0協(xié)議所支持的客戶端發(fā)起會話功能,通過http客戶端300,請求下載服務器500中流媒體資源至終端100。

http客戶端300,包括:http/2客戶端和/或http/1.1客戶端。http客戶端300根據(jù)流媒體客戶端200內(nèi)部推模塊230或者拉模塊240的媒體片段訪問請求以及碼率切換指示, 向服務器500發(fā)送http請求,請求獲取服務器500中最適合當前網(wǎng)絡帶寬和緩存狀況的流媒體資源。其中,緩存310提供http客戶端300所下載媒體資源的本地存儲。

網(wǎng)絡400可以包括:數(shù)字用戶線路(xdigitalsubscriberline,簡稱為xdsl)、光纖接入(fiber-to-the-x,簡稱為fttx)、有線電視電纜cable等有線通信網(wǎng)絡,以及wi-fi、2g、3g、長期演進(longtermevolution,簡稱為lte)等無線通信網(wǎng)絡。

服務器500,完成對原始視頻的切片和mpd文件的生成。其中,內(nèi)容源520負責內(nèi)容源捕獲、編碼壓縮、分段處理,將原始視頻內(nèi)容劃分成為具有固定時間間隔的多個視頻片段。http服務器510,將每一個視頻片段作為可被http請求和響應獨立訪問的http資源,即視頻文件,并以時段(period)、表示(representation)和媒體片段(segment)的層次存儲。根據(jù)請求,http服務器510將向終端返回適當?shù)拿襟w分片。

服務器500,還提供動態(tài)自適應流媒體中mpd文件存儲。mpd文件描述了每個媒體片段的持續(xù)時間,url,媒體屬性,如視頻分辨率、適配比特率等。mpd文件給dash客戶端提供了足夠的http-url信息用于訪問流媒體內(nèi)容資源,當dash客戶端開始播放一個視頻的時候,它根據(jù)mpd文件中的信息選擇下載適應于當前可用網(wǎng)絡帶寬和終端緩存狀況的媒體片段并進行播放。

在本發(fā)明的實施例中,涉及到的自適應流媒體(或者稱為動態(tài)自適應流媒體)有多種實現(xiàn)方式,例如,可以采用基于http的動態(tài)自適應流媒體(dynamicadaptivestreamingoverhttp,簡稱為dash)。下面以dash為例對mpd服務器和流媒體服務器進行說明。以下實施例對其他自適應流媒體技術也同樣適用。

在本發(fā)明的一個優(yōu)選實施例中,http流媒體客戶端向http流媒體服務器發(fā)送媒體片段取消命令,請求服務器終止推送不再需要的媒體片段,從而實現(xiàn)http流媒體推送會話更新。其中,該命令包括兩個層面處理過程:其一,在接收完畢所有需要的媒體片段之后,客戶端首先應關閉由它發(fā)起的請求流(requeststream),避免服務器繼續(xù)在請求流中為那些不再需要的媒體片段發(fā)送推送承諾(push_promise);其二,客戶端還應發(fā)送推送流(pushstream)關閉請求,關閉服務器為那些不再需要的媒體片段所預留的推送流。此外,為避免造成帶寬浪費,客戶端在媒體片段取消命令中可以攜帶指示符,用于指示服務器在終止推送會話之前是否繼續(xù)發(fā)送在接收取消命令時已經(jīng)推送的媒體片段。

圖20是根據(jù)本發(fā)明優(yōu)選實施例的基于媒體片段取消命令實現(xiàn)http流媒體推送會話更新的交互流程圖。如圖20所示,該流程包括如下步驟:

步驟1,客戶端創(chuàng)建請求流(requeststream),并基于該請求流發(fā)送媒體片段獲取請求(get_segment)至服務器,請求中攜帶媒體片段統(tǒng)一資源標識符(segment_uri)參數(shù),用于指定所請求的媒體片段資源,推送指示符(push_directive)參數(shù),用于協(xié)商http流媒體推送會話中媒體片段推送策略,以及方案標識(scheme)參數(shù),用于標識方案的版本;

步驟2,服務器返回所請求的媒體片段(segment#i)至客戶端,同時返回推送應答(push_ack) 參數(shù),完成http流媒體推送會話中媒體片段推送策略應答,以及方案標識參數(shù);在此其間,服務器將為推送應答中所承諾推送的媒體片段預留推送流(pushstream);

步驟3~步驟4,服務器基于所預留的推送流,分別推送各個媒體片段(segment#i+1~#i+j)至客戶端;

步驟5,客戶端發(fā)送媒體片段取消(segment_cancel)命令至服務器,請求更新http流媒體推送會話??蛇x地,所述取消請求中攜帶即時(immediate)參數(shù),用于指示服務器在接收媒體片段取消命令時,如何處理推送流中正在傳輸?shù)拿襟w片段;

步驟6,如果即時參數(shù)取值為“true”,則服務器立即終止傳輸正在推送的媒體片段(segment#i+j+1),并取消推送會話,包括:不再發(fā)送媒體片段推送承諾,并關閉已經(jīng)預留的推送流;如果即時參數(shù)取值為“false”,則服務器將繼續(xù)傳輸正在推送的媒體片段(segment#i+j+1),然后再取消推送會話(如本實施例所示)。

圖21是根據(jù)本發(fā)明優(yōu)選實施例的一種http流媒體傳輸方法的消息交互流程圖一。

步驟1:客戶端利用標準的httpget消息(http/2協(xié)議中的headers幀)向服務器發(fā)送第一媒體片段獲取請求。其中,httpget消息中的“path”頭域被設置為第一媒體片段統(tǒng)一資源標識符uri,用于請求服務器獲取第一媒體片段,即步驟1中示例的:path="../rep1/segment1.mp4"。此外,httpget消息中還包含用于請求服務器推送第二媒體片段的“accept-push-policy”頭域,即步驟1中示例的:

“accept-push-policy="urn:mpeg:dash:fdh:2015:push-template",

"../rep1/segment$number$.mp4":{2-6}”,至少包含:

1)推送協(xié)議方案統(tǒng)一資源標識符(schemeid)字段,用于標識推送協(xié)議版本;

2)推送指示(pushdirective),用于請求推送會話中所執(zhí)行的推送策略,包括:

推型類型(pushtype)字段,用于描述“推送策略”中被推送媒體片段的表示類型,譬如:“push-next”表示請求推送后續(xù)特定數(shù)量的媒體片段,“push-time”表示請求推送后續(xù)特定播放時間的媒體片段,“push-template”表示請求推送模板中明確指定的媒體片段,

以及推送參數(shù)(pushparams)字段,攜帶“推送策略”中被推送媒體片段的推送參數(shù)值。

在本實施例中,客戶端請求獲取表示(representation)"rep1"中的"segment1"媒體片段,同時請求推送"rep1"中后續(xù)編號"segment2"至"segment6"的5個媒體片段。

步驟2:服務器返回http200ok響應消息(http/2協(xié)議中headers幀),作為所述第一媒體片段獲取響應。其中,http200ok響應消息包含用于返回第二媒體片段推送應答的“accept-push-policy”頭域,即步驟2中示例的:“accept-push-policy="urn:mpeg:dash:fdh:2015:push-template","../rep1/segment$number$.mp4":{2-6}”,至少包含:

1)推送協(xié)議方案統(tǒng)一資源標識符(schemeid)字段,用于標識推送協(xié)議版本;

2)推送應答(pushack),用于返回服務器在推送會話中所接收的推送策略,并且攜帶與請求中具有相同類型的推型類型字段、推送參數(shù)字段。

在本實施例中,服務器所返回的推送應答表示可以立即為推送指示所請求推送的"rep1"中"segment2"至"segment6"的5個媒體片段發(fā)送推送承諾。

步驟3~4:服務器根據(jù)在步驟2中推送應答所返回的推送參數(shù)值為每一個確認推送的媒體片段(即,"segment2"至"segment6"的5個媒體片段)發(fā)送推送承諾消息(http/2協(xié)議中的push_promise幀)。其中,服務器將push_promise幀中“path”頭域設置為每一個確認被推送媒體片段統(tǒng)一資源標識符uri,并且利用客戶端在步驟1所發(fā)起的請求流中發(fā)送所述push_promise幀。

步驟5:服務器返回客戶端請求獲取的媒體片段,即本實施例中的"../rep1/segment1.mp4"。

步驟6~7:服務器為"rep1"中編號"segment2"的媒體片段發(fā)起推送流,推送"rep1"中編號"segment2"的媒體片段至客戶端。

步驟8~10:由于檢測到當前可用網(wǎng)絡帶寬發(fā)生變化,或者媒體播放引擎緩存狀態(tài)等原因,客戶端不再希望接收某些原本計劃推送的媒體片段。本實施例假定,客戶端不再需要服務器推送"segment3"至"segment6"的4個媒體片段??蛻舳藶槊恳粋€不再需要推送的媒體片段,向服務器發(fā)送流重置(rst_stream)幀,并將該幀中攜帶的錯誤碼(errorcode)設置為“cancel(0x8)”,以關閉服務器為"segment3"至"segment6"的4個媒體片段所預留的推送流,即編號為stream4,stream6,stream8和stream10的推送流。

可選地,客戶端可以為所述流重置幀設置“即時”(immediate)標記(flag),用于指示服務器在接收流重置幀時,如何處理推送流中正在傳輸?shù)拿襟w片段?!凹磿r”標記定義如下:

immediate(0x1):第0個比特一旦被設置,則表示請求方指示接收方立即關閉流重置幀所引用的流,終止該流中正在進行的數(shù)據(jù)傳輸。否則,接收方在完成數(shù)據(jù)傳輸后再關閉該流。

假定在本實施例中,客戶端向服務器發(fā)送流重置幀中并未設置“即時”標記,并且服務器在編號stream4推送流中接收流重置幀時,服務器正在推送"rep1"中"segment3"至客戶端。根據(jù)上述說明,服務器將在步驟9~10繼續(xù)推送"rep1"中編號"segment3"的媒體片段至客戶端,然后再關閉編號stream4的推送流。

步驟11~12:接收客戶端發(fā)送的流重置幀后,服務器關閉編號為stream6,stream8和stream10的推送流,不再推送其他媒體片段至客戶端。

在本發(fā)明的一個優(yōu)選實施例中,http流媒體客戶端向http流媒體服務器發(fā)送媒體片段更新命令,請求重新協(xié)商媒體片段的推送策略,從而實現(xiàn)http流媒體推送會話更新。其中,客戶端在它發(fā)起的請求流中發(fā)送媒體片段更新請求,請求服務器更新推送會話中的推送策略;根據(jù)重新協(xié)商的推送策略,服務器將為不再需要推送的媒體片段發(fā)送推送流(pushstream)關閉請求。同時,服務器還將為新的需要推送的媒體片段發(fā)送推送承諾(push_promise)。

圖22是根據(jù)本發(fā)明優(yōu)選實施例的基于媒體片段更新命令實現(xiàn)http流媒體推送會話更新的交互流程圖。如圖22所示,該流程包括如下步驟:

步驟1,客戶端創(chuàng)建請求流(requeststream),并基于該請求流發(fā)送媒體片段獲取請求(get_segment)至服務器,請求中攜帶媒體片段統(tǒng)一資源標識符(segment_uri)參數(shù),用于指定所請求的媒體片段資源,推送指示符(push_directive)參數(shù),用于協(xié)商http流媒體推送會話中媒體片段推送策略,以及方案標識(scheme)參數(shù),用于標識方案的版本;

步驟2,服務器返回所請求的媒體片段(segment#i)至客戶端,同時返回推送應答(push_ack)參數(shù),完成http流媒體推送會話中媒體片段推送策略應答,以及方案標識參數(shù);在此其間,服務器將為推送應答中所承諾推送的媒體片段預留推送流(pushstream);

步驟3~步驟4,服務器基于所預留的推送流,分別推送各個媒體片段(segment#i+1~#i+j)至客戶端;

步驟5,客戶端發(fā)送媒體片段更新(segment_update)命令至服務器,請求更新http流媒體推送會話。可選地,所述取消請求中攜帶即時(immediate)參數(shù),用于指示服務器在接收媒體片段更新命令是時,如何處理推送流中正在傳輸?shù)拿襟w片段;

步驟6,如果即時參數(shù)取值為“true”,則服務器立即終止傳輸正在推送的媒體片段(segment#i+j+1),并取消推送會話(如本實施例所示),包括:不再發(fā)送媒體片段推送承諾,并關閉已經(jīng)預留的推送流;如果即時參數(shù)取值為“false”,則服務器將繼續(xù)傳輸正在推送的媒體片段(segment#i+j+1),然后再取消推送會話。

圖23是根據(jù)本發(fā)明優(yōu)選實施例的另一種http流媒體傳輸方法的消息交互流程圖二。

步驟1~7:類似實施例一圖21中相關執(zhí)行步驟,此處不再重復。

步驟8:本實施例假定,客戶端請求推送會話僅僅推送"rep1"中的"segment2"媒體片段,不再推送"rep1"中編號"segment3"至"segment6"的媒體片段??蛻舳死脴藴蔴ttpget消息(http/2協(xié)議中的headers幀)向服務器發(fā)送媒體片段推送會話更新請求。其中,httpget消息中“path”頭域值保持不變,仍然為所請求獲取的媒體片段統(tǒng)一資源標識符uri,即步驟1中示例的:path="../rep1/segment1.mp4"。此外,httpget消息還包含用于請求服務器推送第二媒體片段的“accept-push-policy”頭域,即步驟8中示例的:“accept-push-policy="urn:mpeg:dash:fdh:2015:push-update","../rep1/segment$number$.mp4":{2}”,至少包含:

1)推送協(xié)議方案統(tǒng)一資源標識符(schemeid)字段,用于標識推送協(xié)議版本;

2)推送更新指示(pushupdatedirective),用于更新推送會話中所執(zhí)行的推送策略,包括:

推型類型(pushtype)字段,用于描述“推送策略”中被推送媒體片段的表示類型,譬如:“push-next”表示請求推送后續(xù)特定數(shù)量的媒體片段,“push-time”表示請求推送后續(xù)特定播放時間的媒體片段,“push-template”表示請求推送模板中明確指定的媒體片段,

以及推送參數(shù)(pushparams)字段,攜帶“推送策略”中被推送媒體片段的推送參數(shù)值。

其中,推送更新指示所表達的推送類型默認與推送會話中推送指示的推送類型保持一致。

可選地,客戶端可以為所述“accept-push-policy”頭域設置“即時”(immediate)字段,用于指示服務器在接收推送更新請求時,如何處理推送流中正在傳輸?shù)拿襟w片段。一旦攜帶“即時”字段,服務器應立即終止推送流中正在進行的數(shù)據(jù)傳輸,關閉所有推送流;否則,服務器在完成數(shù)據(jù)傳輸后再關閉推送流。

步驟9:服務器返回http200ok響應消息(http/2協(xié)議中headers幀),作為所述媒體片段推送會話更新響應。其中,http200ok響應消息包含用于返回第二媒體片段推送應答的“accept-push-policy”頭域,即步驟9中示例的:“accept-push-policy="urn:mpeg:dash:fdh:2015:push-update","../rep1/segment$number$.mp4":{2}”,至少包含:

1)推送協(xié)議方案統(tǒng)一資源標識符(schemeid)字段,用于標識推送協(xié)議版本;

2)推送更新應答(pushupdateack),用于返回服務器在推送會話中所更新的推送策略,并且攜帶與推送更新請求中具有相同類型的推型類型字段、推送參數(shù)字段。

在本實施例中,服務器所返回的推送更新應答表示可以更新媒體片段推送會話,僅推送更新應答中所指定的"rep1"中"segment2"至客戶端。

步驟10~11:服務器為每一個不再需要推送的媒體片段向客戶端發(fā)送流重置(rst_stream)幀,并將該幀中攜帶的錯誤碼(errorcode)設置為“cancel(0x8)”,以關閉服務器為編號"segment3"至"segment6"的媒體片段所預留的推送流,即編號為stream4,stream6,stream8和stream10的推送流。

圖24是根據(jù)本發(fā)明優(yōu)選實施例的另一種http流媒體傳輸方法的消息交互流程圖三。

步驟1~7:類似實施例一圖21中相關執(zhí)行步驟,此處不再重復。

步驟8:本實施例假定,客戶端請求推送會話不再推送"rep1"中其他媒體片段,請求推送"rep2"中編號"segment3"至"segment6"的媒體片段??蛻舳死脴藴蔴ttpget消息(http/2協(xié)議中的headers幀)向服務器發(fā)送媒體片段推送會話更新請求。其中,httpget消息中“path”頭域值保持不變,仍然為所請求獲取的媒體片段統(tǒng)一資源標識符uri,即步驟1中示例的:path="../rep1/segment1.mp4"。類似地,httpget消息包含用于請求服務器推送第二媒體片段的“accept-push-policy”頭域,即步驟8中示例的:“accept-push-policy="urn:mpeg:dash:fdh:2015:push-update","../rep2/segment$number$.mp4":{3-6}”。

可選地,客戶端可以為所述“accept-push-policy”頭域設置“即時”(immediate)字段,用于指示服務器在接收推送更新請求時,如何處理推送流中正在傳輸?shù)拿襟w片段。一旦攜帶“即時”字段,服務器應立即終止推送流中正在進行的數(shù)據(jù)傳輸,關閉所有推送流;否則,服務器在完成數(shù)據(jù)傳輸后再關閉推送流。

步驟9:服務器返回http200ok響應消息(http/2協(xié)議中headers幀),作為所述媒體片段推送會話更新響應。其中,http200ok響應消息包含用于返回第二媒體片段推送 應答的“accept-push-policy”頭域,即步驟9中示例的:“accept-push-policy="urn:mpeg:dash:fdh:2015:push-update","../rep1/segment$number$.mp4":{2}”。

在本實施例中,服務器所返回的推送更新應答表示,不再推送"rep1"中其他媒體片段,而推送"rep2"中編號"segment3"至"segment6"的媒體片段至客戶端。

與圖23中相關步驟類似,服務器為每一個不再需要推送的媒體片段向客戶端發(fā)送流重置(rst_stream)幀,關閉服務器為"rep1"中其他媒體片段所預留的推送流。

步驟10~11:根據(jù)重新協(xié)商的推送策略,服務器向客戶端發(fā)送媒體片段推送承諾,并基于預留的推送流推送"rep2"中編號"segment3"至"segment6"的媒體片段至客戶端。

圖25是根據(jù)本發(fā)明實施例的一種http流媒體傳輸裝置的結(jié)構(gòu)框圖,如圖25所示,該裝置包括獲取模塊252、第一確定模塊254和第二確定模塊256,下面對該自適應媒體流處理裝置進行說明。

獲取模塊252,用于獲取傳輸流中攜帶的自適應流媒體的位置信息和時間信息;第一確定模塊254,連接至上述獲取模塊252,用于根據(jù)上述位置信息確定自適應流媒體中需要與傳輸流進行時間軸對齊的媒體片段;第二確定模塊256,連接至上述第一確定模塊254,用于根據(jù)時間信息確定自適應流媒體中媒體片段的媒體呈現(xiàn)時間相對于傳輸流時間軸的顯示時間戳。

通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到根據(jù)上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術方案本質(zhì)上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例該的方法。

需要說明的是,上述各個模塊是可以通過軟件或硬件來實現(xiàn)的,對于后者,可以通過以下方式實現(xiàn),但不限于此:上述模塊均位于同一處理器中;或者,上述模塊分別位于多個處理器中。

本發(fā)明的實施例還提供了一種存儲介質(zhì)??蛇x地,在本實施例中,上述存儲介質(zhì)可以被設置為存儲用于執(zhí)行上述實施例的方法步驟的程序代碼:

可選地,存儲介質(zhì)還被設置為存儲用于執(zhí)行上述方法步驟的程序代碼:

可選地,在本實施例中,上述存儲介質(zhì)可以包括但不限于:u盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

可選地,在本實施例中,處理器根據(jù)存儲介質(zhì)中已存儲的程序代碼執(zhí)行上述實施例的方法步驟。

顯然,本領域的技術人員應該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算 裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。

以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領域的技術人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1