所屬的技術(shù)人員能夠理解,本公開的各個方面可以實現(xiàn)為系統(tǒng)、方法或程序產(chǎn)品。因此,本公開的各個方面可以具體實現(xiàn)為以下形式,即:完全的硬件實施方式、完全的軟件實施方式(包括固件、微代碼等),或硬件和軟件方面結(jié)合的實施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。下面參照圖10來描述根據(jù)本公開的這種實施方式的媒體流共享裝置1000。圖10所示的媒體流共享裝置1000僅僅是一個示例,不應(yīng)對本公開實施例的功能和使用范圍帶來任何限制。媒體流共享裝置1000以硬件模塊的形式表現(xiàn)。媒體流共享裝置1000的組件可以包括但不限于:檢測模塊1002,用于響應(yīng)于第一播放端對媒體流的拉取請求,檢測獲取拉取請求的第一進程內(nèi)是否具有媒體流;回源模塊1004,用于若第一進程內(nèi)不具有媒體流,觸發(fā)啟動第一進程執(zhí)行回源操作,回源操作由第一進程向具有協(xié)同關(guān)系的第二進程請求,第二進程為向第二播放端提供媒體流的處于運行狀態(tài)的進程;反饋模塊1006,用于基于回源操作的結(jié)果由第一進程將媒體流反饋至第一播放端。下面參照圖11來描述根據(jù)本公開的這種實施方式的電子設(shè)備1100。圖11顯示的電子設(shè)備1100僅僅是一個示例,不應(yīng)對本公開實施例的功能和使用范圍帶來任何限制。如圖11所示,電子設(shè)備1100以通用計算設(shè)備的形式表現(xiàn)。電子設(shè)備1100的組件可以包括但不限于:上述至少一個處理單元1110、上述至少一個存儲單元1120、連接不同系統(tǒng)組件(包括存儲單元1120和處理單元1110)的總線1130。其中,存儲單元存儲有程序代碼,程序代碼可以被處理單元1110執(zhí)行,使得處理單元1110執(zhí)行本說明書上述“示例性方法”部分中描述的根據(jù)本公開各種示例性實施方式的步驟。例如,處理單元1110可以執(zhí)行如圖2中所示的步驟s202和步驟s204,以及本公開的媒體流共享方法中限定的其它步驟。存儲單元1120可以包括易失性存儲單元形式的可讀介質(zhì),例如隨機存取存儲單元(ram)11201和/或高速緩存存儲單元11202,還可以進一步包括只讀存儲單元(rom)11203。存儲單元1120還可以包括具有一組(至少一個)程序模塊11205的程序/實用工具11204,這樣的程序模塊11205包括但不限于:操作系統(tǒng)、一個或者多個應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實現(xiàn)??偩€1130可以為表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲單元總線或者存儲單元控制器、外圍總線、圖形加速端口、處理單元或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。電子設(shè)備1100也可以與一個或多個外部設(shè)備1160(例如鍵盤、指向設(shè)備、藍牙設(shè)備等)通信,還可與一個或者多個使得用戶能與該電子設(shè)備交互的設(shè)備通信,和/或與使得該電子設(shè)備1100能與一個或多個其它計算設(shè)備進行通信的任何設(shè)備(例如路由器、調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入/輸出(i/o)接口1150進行。并且,電子設(shè)備1100還可以通過網(wǎng)絡(luò)適配器1150與一個或者多個網(wǎng)絡(luò)(例如局域網(wǎng)(lan),廣域網(wǎng)(wan)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器1150通過總線1130與電子設(shè)備1100的其它模塊通信。應(yīng)當明白,盡管圖中未示出,可以結(jié)合電子設(shè)備使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動器、冗余處理單元、外部磁盤驅(qū)動陣列、raid系統(tǒng)、磁帶驅(qū)動器以及數(shù)據(jù)備份存儲系統(tǒng)等。通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員易于理解,這里描述的示例實施方式可以通過軟件實現(xiàn),也可以通過軟件結(jié)合必要的硬件的方式來實現(xiàn)。因此,根據(jù)本公開實施方式的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個非易失性存儲介質(zhì)(可以是cd-rom,u盤,移動硬盤等)中或網(wǎng)絡(luò)上,包括若干指令以使得一臺計算設(shè)備(可以是個人計算機、服務(wù)器、終端裝置、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行根據(jù)本公開實施方式的方法。在本公開的示例性實施例中,還提供了一種計算機可讀存儲介質(zhì),其上存儲有能夠?qū)崿F(xiàn)本說明書上述方法的程序產(chǎn)品。在一些可能的實施方式中,本公開的各個方面還可以實現(xiàn)為一種程序產(chǎn)品的形式,其包括程序代碼,當程序產(chǎn)品在終端設(shè)備上運行時,程序代碼用于使終端設(shè)備執(zhí)行本說明書上述“示例性方法”部分中描述的根據(jù)本公開各種示例性實施方式的步驟。根據(jù)本公開的實施方式的用于實現(xiàn)上述方法的程序產(chǎn)品,其可以采用便攜式緊湊盤只讀存儲器(cd-rom)并包括程序代碼,并可以在終端設(shè)備,例如個人電腦上運行。然而,本公開的程序產(chǎn)品不限于此,在本文件中,可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。計算機可讀信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了可讀程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括但不限于電磁信號、光信號或上述的任意合適的組合。可讀信號介質(zhì)還可以是可讀存儲介質(zhì)以外的任何可讀介質(zhì),該可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序??勺x介質(zhì)上包含的程序代碼可以用任何適當?shù)慕橘|(zhì)傳輸,包括但不限于無線、有線、光纜、rf等等,或者上述的任意合適的組合??梢砸砸环N或多種程序設(shè)計語言的任意組合來編寫用于執(zhí)行本公開操作的程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言—諸如java、c++等,還包括常規(guī)的過程式程序設(shè)計語言—諸如“c”語言或類似的程序設(shè)計語言。程序代碼可以完全地在用戶計算設(shè)備上執(zhí)行、部分地在用戶設(shè)備上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算設(shè)備上部分在遠程計算設(shè)備上執(zhí)行、或者完全在遠程計算設(shè)備或服務(wù)器上執(zhí)行。在涉及遠程計算設(shè)備的情形中,遠程計算設(shè)備可以通過任意種類的網(wǎng)絡(luò),包括局域網(wǎng)(lan)或廣域網(wǎng)(wan),連接到用戶計算設(shè)備,或者,可以連接到外部計算設(shè)備(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。應(yīng)當注意,盡管在上文詳細描述中提及了用于動作執(zhí)行的設(shè)備的若干模塊或者單元,但是這種劃分并非強制性的。實際上,根據(jù)本公開的實施方式,上文描述的兩個或更多模塊或者單元的特征和功能可以在一個模塊或者單元中具體化。反之,上文描述的一個模塊或者單元的特征和功能可以進一步劃分為由多個模塊或者單元來具體化。此外,盡管在附圖中以特定順序描述了本公開中方法的各個步驟,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些步驟,或是必須執(zhí)行全部所示的步驟才能實現(xiàn)期望的結(jié)果。附加的或備選的,可以省略某些步驟,將多個步驟合并為一個步驟執(zhí)行,以及/或者將一個步驟分解為多個步驟執(zhí)行等。通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員易于理解,這里描述的示例實施方式可以通過軟件實現(xiàn),也可以通過軟件結(jié)合必要的硬件的方式來實現(xiàn)。因此,根據(jù)本公開實施方式的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個非易失性存儲介質(zhì)(可以是cd-rom,u盤,移動硬盤等)中或網(wǎng)絡(luò)上,包括若干指令以使得一臺計算設(shè)備(可以是個人計算機、服務(wù)器、移動終端、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行根據(jù)本公開實施方式的方法。本領(lǐng)域技術(shù)人員在考慮說明書及實踐這里的公開后,將容易想到本公開的其它實施方案。本技術(shù)旨在涵蓋本公開的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開的一般性原理并包括本公開未公開的本中的公知常識或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本公開的真正范圍和精神由所附的權(quán)利要求指出。
背景技術(shù):
1、流媒體服務(wù)器作為cdn(content?delivery?network,內(nèi)容分發(fā)網(wǎng)絡(luò))的邊緣節(jié)點進行直播媒體流(以下稱為直播流)分發(fā)時,通過采用worker(流媒體服務(wù)器中的進程,也可以理解為一個節(jié)點)內(nèi)的自動推送功能實現(xiàn)對一路回源與多worker數(shù)據(jù)正常訪問的支持,但是由于推送至流媒體服務(wù)器的一路直播流會向所有worker子進程分發(fā),如果直播觀眾較少時,則會導致媒體流資源的浪費。
2、需要說明的是,在上述背景技術(shù)部分公開的信息僅用于加強對本公開的背景的理解,因此可以包括不構(gòu)成對本領(lǐng)域普通技術(shù)人員已知的現(xiàn)有技術(shù)的信息。
技術(shù)實現(xiàn)思路
1、本公開的目的在于提供一種媒體流共享方法、媒體流共享裝置、電子設(shè)備、計算機可讀存儲介質(zhì)和計算機程序產(chǎn)品,至少在一定程度上能夠改善相關(guān)技術(shù)中邊緣節(jié)點在推送媒體流時產(chǎn)生的媒體流資源的浪費的問題。
2、本公開的其它特性和優(yōu)點將通過下面的詳細描述變得顯然,或部分地通過本公開的實踐而習得。
3、根據(jù)本公開的一個方面,提供一種媒體流共享方法,應(yīng)用于作為邊緣集群的邊緣節(jié)點的流媒體服務(wù)器,包括:響應(yīng)于第一播放端對媒體流的拉取請求,檢測獲取所述拉取請求的第一進程內(nèi)是否具有所述媒體流;若所述第一進程內(nèi)不具有所述媒體流,觸發(fā)啟動所述第一進程執(zhí)行回源操作,所述回源操作由所述第一進程向具有協(xié)同關(guān)系的第二進程請求,所述第二進程為向第二播放端提供所述媒體流的處于運行狀態(tài)的進程;基于所述回源操作的結(jié)果由所述第一進程將所述媒體流反饋至所述第一播放端。
4、在本公開的一些實施例中,響應(yīng)于第一播放端對媒體流的拉取請求,檢測獲取所述拉取請求的第一進程內(nèi)是否具有所述媒體流,包括:響應(yīng)于所述拉取請求,基于所述媒體流的標識信息,檢測所述第一進程內(nèi)是否具有所述媒體流。
5、在本公開的一些實施例中,在響應(yīng)于第一播放端對媒體流的拉取請求之前,還包括:響應(yīng)于推流端對所述媒體流的推送操作,檢測是否已存儲所述標識信息;若未存儲所述標識信息,對所述流媒體服務(wù)器的虛擬主機信息、所述媒體流的應(yīng)用實例和流名稱中的至少一個進行哈希計算,生成所述標識信息;以及基于所述標識信息在共享內(nèi)存中緩存所述媒體流。
6、在本公開的一些實施例中,若所述第一進程內(nèi)不具有所述媒體流,觸發(fā)啟動所述第一進程執(zhí)行回源操作,包括:若所述第一進程內(nèi)不具有所述媒體流,基于所述媒體流的標識信息進行哈希計算,得到哈希槽;基于所述哈希槽和起始端口號確定所述媒體流對應(yīng)的端口;查找所述共享內(nèi)存內(nèi)是否具有與所述媒體流對應(yīng)的端口匹配的本地端口信息,其中,所述本地端口信息基于所述媒體流的分發(fā)進程以及訪問所述分發(fā)進程的端口進行配置分發(fā);若具有匹配的所述本地端口信息,確定與所述本地端口信息匹配的本地的所述第二進程;執(zhí)行所述第一進程至所述第二進程的內(nèi)部回源,以使所述第二進程將所述媒體流分享至所述第一進程。
7、在本公開的一些實施例中,執(zhí)行所述第一進程至所述第二進程的內(nèi)部回源,以使所述第二進程將所述媒體流分享至所述第一進程,包括:基于所述第二進程的端口信息和所述流媒體服務(wù)器的信息,由所述第一進程向所述第二進程執(zhí)行所述媒體流的中繼回源拉取操作。
8、在本公開的一些實施例中,還包括:若不具有匹配的所述本地端口信息,配置所述媒體流對應(yīng)的端口和第三進程;基于所述第三進程和所述媒體流的標識信息進行重定向,所述重定向由所述媒體流對應(yīng)的端口向所述邊緣集群的其它邊緣節(jié)點,以向所述其它邊緣節(jié)點發(fā)送所述拉取請求,由所述其它邊緣節(jié)點將所述媒體流推送至所述第三進程;執(zhí)行所述第一進程至所述第三進程的內(nèi)部回源,以使所述第三進程將所述媒體流分享至所述第一進程。
9、在本公開的一些實施例中,所述共享內(nèi)存包括哈希映射區(qū)、數(shù)據(jù)空閑區(qū)鏈表和數(shù)據(jù)存儲區(qū),所述哈希映射區(qū)用于存儲所述標識信息,所述數(shù)據(jù)存儲區(qū)用于存儲所述媒體流。
10、在本公開的一些實施例中,響應(yīng)于第一播放端對媒體流的拉取請求,檢測獲取所述拉取請求的第一進程內(nèi)是否具有所述媒體流,還包括:若所述第一進程內(nèi)具有所述媒體流,基于所述拉取請求在所述第一進程內(nèi)拉取所述媒體流,并將所述第一播放端的播放端信息添加至所述媒體流的觀看列表中。
11、在本公開的一些實施例中,還包括:若所述第二進程內(nèi)的所述媒體流中斷傳輸,所述媒體流重新推送到所述第一進程,所述第二進程與所述第一進程重連,以由所述第二進程向所述第一進程請求所述回源操作;若檢測到訪問所述第二進程的所述第二播放端停止訪問操作,則切斷所述第二進程至所述第一進程的回源鏈路,以掛起所述第二進程。
12、在本公開的一些實施例中,還包括:若所述第二進程內(nèi)的所述媒體流中斷傳輸,所述媒體流重新推送到第三進程,基于所述第一進程和所述第二進程執(zhí)行重連操作,以分別向所述第三進程執(zhí)行所述媒體流的回源操作。
13、根據(jù)本公開的另一個方面,提供一種媒體流共享裝置,包括:檢測模塊,用于響應(yīng)于第一播放端對媒體流的拉取請求,檢測獲取所述拉取請求的第一進程內(nèi)是否具有所述媒體流;回源模塊,用于若所述第一進程內(nèi)不具有所述媒體流,觸發(fā)啟動所述第一進程執(zhí)行回源操作,所述回源操作由所述第一進程向具有協(xié)同關(guān)系的第二進程請求,所述第二進程為向第二播放端提供所述媒體流的處于運行狀態(tài)的進程;反饋模塊,用于基于所述回源操作的結(jié)果由所述第一進程將所述媒體流反饋至所述第一播放端。
14、根據(jù)本公開的再一個方面,提供一種電子設(shè)備,包括:處理器;以及存儲器,用于存儲處理器的可執(zhí)行指令;其中,處理器配置為經(jīng)由執(zhí)行可執(zhí)行指令來執(zhí)行上述任意一項的媒體流共享方法。
15、根據(jù)本公開的又一個方面,提供一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,計算機程序被處理器執(zhí)行時實現(xiàn)上述任意一項的媒體流共享方法。
16、根據(jù)本公開的又一個方面,提供一種計算機程序產(chǎn)品,其上存儲有計算機程序,計算機程序被處理器執(zhí)行時實現(xiàn)上述任意一項的媒體流共享方法。
17、本公開的實施例所提供的媒體流共享方案,不具有媒體流的第一進程為未啟動進程,具有媒體流的第二進程為運行進程,第一播放端對媒體流的拉取請求將第一進程喚醒啟動,通過在邊緣節(jié)點內(nèi)配置內(nèi)部回源方案,獲取到拉流請求的第一進程內(nèi)沒有所需的媒體流時,則觸發(fā)內(nèi)部回源操作,以主動向具有該媒體流的第二進程拉取所請求的媒體流,而如果第一進程未獲取到拉取請求,則不需要和其他進程建立內(nèi)部鏈路,即第一線程仍處于未啟動狀態(tài),使邊緣節(jié)點中的運行進程和拉取媒體流的播放端的數(shù)量呈正相關(guān)關(guān)系,在保證對拉流請求的響應(yīng)效率的同時,有利于降低邊緣節(jié)點的資源消耗。
18、應(yīng)當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不能限制本公開。