本發(fā)明涉及通信領域,具體而言,涉及一種直播頻道播放方法、裝置及系統(tǒng)。
背景技術:
數(shù)字多媒體和網(wǎng)絡的發(fā)展,方便了用戶獲取資訊或者娛樂的體驗。人們可以通過多種途徑觀看直播頻道,比如衛(wèi)星電視、有線電視、網(wǎng)絡電視等。在互聯(lián)網(wǎng)上提供視頻直播業(yè)務,也有多種不同的方法,比如基于實時流傳輸協(xié)議(Real Time Streaming Protocol,簡稱為RTSP)和基于超文本傳輸協(xié)議(HTTP)的流媒體網(wǎng)絡傳輸協(xié)議(Http Live Streaming,簡稱為HLS)等。
HLS協(xié)議是蘋果公司(Apple Inc.)實現(xiàn)的基于HTTP的流媒體傳輸協(xié)議,可實現(xiàn)流媒體的直播和點播,主要應用在iOS系統(tǒng),為iOS設備(如iPhone、iPad、Mac等)提供音視頻直播和點播方案。
對于HLS直播,由于其技術特點要求,實際是屬于漸進下載式播放??蛻舳双@取到的,并不是一個完整的數(shù)據(jù)流。服務器端將直播數(shù)據(jù)流切割成多個連續(xù)的、時長很短(例如,10秒)的媒體文件分片(例如,MPEG-TS格式),并通過不斷更新的索引文件(m3u8格式文本)來描述??蛻舳藙t不斷的下載、分析索引文件后根據(jù)索引文件提示下載其中所描述的媒體文件分片,并從下載得到的第一個媒體文件分片開始,連續(xù)播放這些媒體文件分片;因為服務器端會將最新的直播數(shù)據(jù)切割生成新的小的媒體文件分片,這樣客戶端只要不停的按順序播放從服務器獲取到的媒體文件分片,就實現(xiàn)了連續(xù)不間斷的直播業(yè)務。
對于IPTV/OTT系統(tǒng)中提供的HLS直播頻道業(yè)務,當機頂盒進入頻道時,首先從提供HLS直播服務的內(nèi)容分發(fā)網(wǎng)絡(Content Delivery Network,簡稱為CDN)流媒體服務器中下載和分析該頻道當前的m3u8索引文件,然后根據(jù)索引文件順序下載得到至少2個媒體文件分片后,從第一個媒體文件分片開始,進行逐個媒體文件分片的連續(xù)展示播放。這就造成一個問題:由于媒體文件分片有固定時長,這里以10秒為例,因此索引文件也是10秒更新一次。那么同樣網(wǎng)絡帶寬條件下的2個相同型號的機頂盒,先后(比如相隔2秒)進入同一個頻道時,獲取到的索引文件是相同的,分別下載完前2個媒體文件分片后進行播放,這就導致這2個機頂盒在同一時刻對于同一頻道所展示的直播播放畫面不同步,存在時間差異,這個差異就是進入頻道的時間差。
此外,對于處于不同帶寬條件下的2個相同型號的機頂盒,同時進入同一個HLS直播頻道觀看時,由于下載m3u8索引文件和媒體文件分片的帶寬差異,耗時有長短, 這也導致這2個機頂盒對于同一個直播播放畫面出現(xiàn)不同步。
針對相關技術中基于HLS的直播頻道播放畫面不同步的問題,目前尚未提出有效的解決方案。
技術實現(xiàn)要素:
本發(fā)明提供了一種直播頻道播放方法、裝置及系統(tǒng),以至少解決相關技術中基于HLS的直播頻道播放畫面不同步的問題。
根據(jù)本發(fā)明的一個方面,提供了一種直播頻道播放方法,包括:播放器獲取媒體文件分片的分片信息,其中,所述分片信息包括:媒體文件分片的起始時間;所述播放器以所述起始時間為基準,確定獲取到的媒體文件分片中與第一時間對應的播放位置;所述播放器從所述播放位置開始進行直播頻道的播放;其中,所述播放器的當前時間與所述第一時間的時間差值為預設時長;所述當前時間與生成所述媒體文件分片的設備的時間是同步的。
優(yōu)選地,所述播放器以所述起始時間為基準,確定獲取到的所述媒體文件分片中與所述第一時間對應的所述播放位置包括:所述播放器根據(jù)所述當前時間和所述預設時長,確定所述第一時間;所述播放器以所述起始時間為基準,并結(jié)合所述媒體文件分片的幀率,確定所述媒體文件分片中與所述第一時間對應的播放位置。
優(yōu)選地,在所述播放器從所述播放位置開始進行直播頻道的播放之后,所述方法還包括:所述播放器判斷預設時間是否到達;在判斷到預設時間到達的情況下,所述播放器根據(jù)所述預設時間和所述預設時長,矯正對所述直播頻道的播放進度。
優(yōu)選地,所述播放器根據(jù)所述預設時間和所述預設時長,矯正對所述直播頻道的播放進度包括:所述播放器在所述預設時間確定當前播放位置對應的第二時間;所述播放器比較所述預設時間與所述第二時間的實際時間差值與所述預設時長的大小關系;在判斷到所述實際時間差值大于所述預設時長的情況下,所述播放器按照第一預設策略加快對所述直播頻道的播放;在判斷到所述實際時間差值小于所述預設時長的情況下,所述播放器按照第二預設策略減慢對所述直播頻道的播放。
優(yōu)選地,所述第一預設策略包括:在對所述媒體文件分片進行解碼的過程中,在所述媒體文件分片中的不相鄰的2個I幀之間重復丟棄幀;其中,優(yōu)先丟棄B幀,在沒有B幀的情況下丟棄P幀;所丟棄的幀的數(shù)量至少是根據(jù)所述實際時間差值與所述預設時長之間的差值確定的。
優(yōu)選地,所述第二預設策略包括:對所述媒體文件分片中的特定幀進行一次重復播放;其中,重復播放的特定幀的數(shù)量至少是根據(jù)所述預設時長與所述實際時間差值之間的差值確定的,所述特定幀包括以下至少之一:I幀、P幀、B幀。
根據(jù)本發(fā)明的另一個方面,還提供了一種直播頻道播放裝置,應用于播放器,包括:處理模塊,用于獲取媒體文件分片的分片信息,其中,所述分片信息包括:媒體文件分片的起始時間;確定模塊,用于以所述起始時間為基準,確定獲取到的所述媒體文件分片中與第一時間對應的播放位置;播放模塊,用于從所述播放位置開始進行直播頻道的播放;其中,所述播放器的當前時間與所述第一時間的時間差值為預設時長;所述當前時間與生成所述媒體文件分片的設備的時間是同步的。
優(yōu)選地,所述確定模塊包括:第一確定單元,用于根據(jù)所述當前時間和所述預設時長,確定所述第一時間;第二確定單元,用于以所述起始時間為基準,并結(jié)合所述媒體文件分片的幀率,確定所述媒體文件分片中與所述第一時間對應的播放位置。
優(yōu)選地,所述裝置還包括:判斷模塊,用于判斷預設時間是否到達;矯正模塊,用于在判斷到預設時間到達的情況下,根據(jù)所述預設時間和所述預設時長,矯正對所述直播頻道的播放進度。
優(yōu)選地,所述矯正模塊包括:第三確定單元,用于在所述預設時間確定當前播放位置對應的第二時間;比較單元,用于比較所述預設時間與所述第二時間的實際時間差值與所述預設時長的大小關系;第一處理單元,用于在判斷到所述實際時間差值大于所述預設時長的情況下,按照第一預設策略加快對所述直播頻道的播放;第二處理模塊,用于在判斷到所述實際時間差值小于所述預設時長的情況下,按照第二預設策略減慢對所述直播頻道的播放。
優(yōu)選地,所述第一預設策略包括:在對所述媒體文件分片進行解碼的過程中,在所述媒體文件分片中的不相鄰的2個I幀之間重復丟棄幀;其中,優(yōu)先丟棄B幀,在沒有B幀的情況下丟棄P幀;所丟棄的幀的數(shù)量至少是根據(jù)所述實際時間差值與所述預設時長之間的差值確定的。
優(yōu)選地,所述第二預設策略包括:對所述媒體文件分片中的特定幀進行一次重復播放;其中,重復播放的特定幀的數(shù)量至少是根據(jù)所述預設時長與所述實際時間差值之間的差值確定的,所述特定幀包括以下至少之一:I幀、P幀、B幀。
根據(jù)本發(fā)明的另一個方面,還提供了一種直播頻道播放系統(tǒng),包括:機頂盒、內(nèi)容分發(fā)網(wǎng)絡、時間同步源,其中,所述內(nèi)容分發(fā)網(wǎng)絡,與所述機頂盒連接,用于根據(jù)直播源生成媒體文件分片和索引文件,并向所述機頂盒提供所述媒體文件分片的下載和所述索引文件的更新;其中,所述索引文件中描述有所述媒體文件分片的分片信息,所述分片信息包括:媒體文件分片的起始時間;所述機頂盒,用于從所述內(nèi)容分發(fā)網(wǎng)絡獲取索引文件,并解析所述分片信息;根據(jù)所述分片信息,獲取所述媒體文件分片;以所述起始時間為基準,確定所述媒體文件分片中與第一時間對應的播放位置;以及從所述播放位置開始進行直播頻道的播放;其中,所述機頂盒的當前時間與所述第一時間的時間差值為預設時長;所述時間同步源,分別與所述內(nèi)容分發(fā)網(wǎng)絡和所述機頂盒連接,用于同 步所述機頂盒與所述內(nèi)容分發(fā)網(wǎng)絡的時間。
通過本發(fā)明,采用播放器獲取媒體文件分片的分片信息,其中,分片信息包括:媒體文件分片的起始時間;播放器以起始時間為基準,確定獲取到的媒體文件分片中與第一時間對應的播放位置;播放器從播放位置開始進行直播頻道的播放;其中,播放器的當前時間與第一時間的時間差值為預設時長;當前時間與生成媒體文件分片的設備的時間是同步的,解決了基于HLS的直播頻道播放畫面不同步的問題,使得播放畫面可以同步,提升了用戶體驗。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中:
圖1是根據(jù)本發(fā)明實施例的直播頻道播放方法的流程圖;
圖2是根據(jù)本發(fā)明實施例的直播頻道播放裝置的結(jié)構(gòu)示意圖;
圖3是根據(jù)本發(fā)明實施例的直播頻道播放裝置的優(yōu)選結(jié)構(gòu)示意圖一;
圖4是根據(jù)本發(fā)明實施例的直播頻道播放裝置的優(yōu)選結(jié)構(gòu)示意圖二;
圖5是根據(jù)本發(fā)明實施例的直播頻道播放裝置的優(yōu)選結(jié)構(gòu)示意圖三;
圖6是根據(jù)本發(fā)明實施例的直播頻道播放系統(tǒng)的結(jié)構(gòu)示意圖;
圖7是根據(jù)本發(fā)明優(yōu)選實施例的HLS直播頻道播放畫面同步系統(tǒng)的示意圖一;
圖8是根據(jù)本發(fā)明優(yōu)選實施例的HLS直播頻道播放畫面同步系統(tǒng)的示意圖二;
圖9是根據(jù)本發(fā)明優(yōu)選實施例的索引文件的示意圖;
圖10是根據(jù)本發(fā)明優(yōu)選實施例的HLS直播頻道播放畫面同步方法的流程圖一;
圖11是根據(jù)本發(fā)明優(yōu)選實施例的HLS直播頻道播放畫面同步方法的流程圖二;
圖12是根據(jù)本發(fā)明優(yōu)選實施例的HLS直播頻道畫面同步的場景示意圖一;
圖13是根據(jù)本發(fā)明優(yōu)選實施例的HLS直播頻道畫面同步的場景示意圖二;
圖14是根據(jù)本發(fā)明優(yōu)選實施例的HLS直播頻道畫面同步的場景示意圖三;
圖15是根據(jù)本發(fā)明優(yōu)選實施例的HLS直播頻道畫面同步的場景示意圖四。
具體實施方式
下文中將參考附圖并結(jié)合實施例來詳細說明本發(fā)明。需要說明的是,在不沖突的情 況下,本申請中的實施例及實施例中的特征可以相互組合。
需要說明的是,本發(fā)明的說明書和權利要求書及上述附圖中的術語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。
在本實施例中提供了一種直播頻道播放方法,圖1是根據(jù)本發(fā)明實施例的直播頻道播放方法的流程圖,如圖1所示,該流程包括如下步驟:
步驟S102,播放器獲取媒體文件分片的分片信息,其中,分片信息包括:媒體文件分片的起始時間;
步驟S104,播放器以起始時間為基準,確定獲取到的媒體文件分片中與第一時間對應的播放位置;
步驟S106,播放器從播放位置開始進行直播頻道的播放;其中,播放器的當前時間與第一時間的時間差值為預設時長;當前時間與生成媒體文件分片的設備的時間是同步的。
通過上述步驟,由于播放器的當前時間與生成媒體文件分片的設備的時間是同步的,在生成媒體文件分片時,記錄媒體文件分片的起始時間;那么,在播放器獲取到媒體文件分片的起始時間后,就可以以該起始時間為基準,確定媒體文件分片中第一時間對應的播放位置,并從該播放位置開始播放直播頻道;其中,播放器的當前時間與第一時間的時間差值為預設時長,使得播放器無論在何時開始播放,其播放位置對應的時間始終與實際時間相比滯后了一個固定的時間量,從而保證了多個播放器在播放直播頻道時的畫面同步??梢?,通過上述步驟,解決了基于HLS的直播頻道播放畫面不同步的問題,使得播放畫面可以同步,提升了用戶體驗。
優(yōu)選地,在基于HLS的漸進式直播系統(tǒng)中,媒體文件分片的分片信息通過索引文件下發(fā)并更新給播放器,該索引文件為m3u8索引文件;此外,播放器根據(jù)下發(fā)或者更新的索引文件中描述的媒體文件分片的分片信息獲取媒體文件分片。上述的媒體文件分片的起始時間是指生成該媒體文件分片的真實時間,或者說是媒體文件分片記錄的內(nèi)容所代表的實際時間。例如,對于1個10秒的媒體文件分片,假設其記錄的實際內(nèi)容是8:00:00~8:00:10之間的直播畫面,則上述的媒體文件分片的起始時間即為8:00:00。
幀率代表了單位時間內(nèi)幀的數(shù)量;即,已知幀率的媒體流,單位時間內(nèi)的幀的數(shù)量也是已知的。優(yōu)選地,在步驟S104中,播放器可以根據(jù)當前時間和預設時長,確定第一時間;播放器以起始時間為基準,并結(jié)合媒體文件分片的幀率,確定媒體文件分片中與第一時間對應的播放位置。
優(yōu)選地,在播放器從播放位置開始進行直播頻道的播放之后,播放器還可以判斷預設時間是否到達;在判斷到預設時間到達的情況下,播放器根據(jù)預設時間和預設時長,矯正對直播頻道的播放進度。在媒體流的播放過程中,由于網(wǎng)絡原因等,可能會出現(xiàn)丟 幀或者重復解析等問題,導致在一定播放時間之后,播放畫面出現(xiàn)滯后或者超前。采用上述的矯正方式,可以在預設時間到達時對播放進度進行矯正;其中,上述的預設時間可以自由設置,既可以設置為固定播放時長之后的一個時刻,例如,每直播半小時進行一次矯正;也可以設置為一個固定時間點,例如,每個整點或者半點到達時進行一次矯正。
優(yōu)選地,播放器根據(jù)預設時間和預設時長,矯正對直播頻道的播放進度包括:播放器在預設時間確定當前播放位置對應的第二時間;播放器比較預設時間與第二時間的實際時間差值與預設時長的大小關系;在判斷到實際時間差值大于預設時長的情況下,播放器按照第一預設策略加快對直播頻道的播放;在判斷到實際時間差值小于預設時長的情況下,播放器按照第二預設策略減慢對直播頻道的播放。
優(yōu)選地,第一預設策略是指丟棄幀的策略。例如,在對媒體文件分片進行解碼的過程中,在媒體文件分片中的不相鄰的2個I幀之間重復丟棄幀;其中,優(yōu)先丟棄B幀,在沒有B幀的情況下丟棄P幀;所丟棄的幀的數(shù)量至少是根據(jù)實際時間差值與預設時長之間的差值確定的。通過上述策略,可以加快對直播頻道的播放,同時,由于在上述策略中,在媒體文件分片中不相鄰的2個I幀之間重復丟棄幀,使得這種加快播放是平滑的,不會影響到用戶的觀看體驗。
優(yōu)選地,第二預設策略是指重復播放特定幀的策略。例如,對媒體文件分片中的特定幀進行一次重復播放;其中,重復播放的特定幀的數(shù)量至少是根據(jù)預設時長與實際時間差值之間的差值確定的,特定幀包括以下至少之一:I幀、P幀、B幀。同樣地,在上述策略中,由于對于特定幀只進行一次重復播放,因此,這種減慢播放也是平滑的,不會影響到用戶的觀看體驗。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到根據(jù)上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術方案本質(zhì)上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)(如ROM/RAM、磁碟、光盤)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。
在本實施例中還提供了一種直播頻道播放裝置,該裝置應用于播放器,用于實現(xiàn)上述實施例及優(yōu)選實施方式,已經(jīng)進行過說明的不再贅述。如以下所使用的,術語“模塊”可以實現(xiàn)預定功能的軟件和/或硬件的組合。盡管以下實施例所描述的裝置較佳地以軟件來實現(xiàn),但是硬件,或者軟件和硬件的組合的實現(xiàn)也是可能并被構(gòu)想的。
圖2是根據(jù)本發(fā)明實施例的直播頻道播放裝置的結(jié)構(gòu)框圖,如圖2所示,該裝置包括:處理模塊22、確定模塊24和播放模塊26;處理模塊22,用于獲取索引文件,并解析索引文件中描述的媒體文件分片的分片信息,其中,分片信息包括:媒體文件分片的 起始時間;確定模塊24,耦合至處理模塊22,用于以起始時間為基準,確定媒體文件分片中與第一時間對應的播放位置;播放模塊26,耦合至確定模塊24,用于從播放位置開始進行直播頻道的播放;其中,播放器的當前時間與第一時間的時間差值為預設時長;當前時間與生成媒體文件分片的設備的時間是同步的。
通過上述模塊的綜合作用,解決了基于HLS的直播頻道播放畫面不同步的問題,使得播放畫面可以同步,提升了用戶體驗。
圖3是根據(jù)本發(fā)明實施例的直播頻道播放裝置的優(yōu)選結(jié)構(gòu)框圖一,如圖3所示,優(yōu)選地,確定模塊24包括:第一確定單元242,用于根據(jù)當前時間和預設時長,確定第一時間;第二確定單元244,耦合至第一確定單元242,用于以起始時間為基準,并結(jié)合媒體文件分片的幀率,確定媒體文件分片中與第一時間對應的播放位置。
圖4是根據(jù)本發(fā)明實施例的直播頻道播放裝置的優(yōu)選結(jié)構(gòu)框圖二,如圖4所示,優(yōu)選地,裝置還包括:判斷模塊42,耦合至播放模塊26,用于判斷預設時間是否到達;矯正模塊44,耦合至判斷模塊42,用于在判斷到預設時間到達的情況下,根據(jù)預設時間和預設時長,矯正對直播頻道的播放進度。
圖5是根據(jù)本發(fā)明實施例的直播頻道播放裝置的優(yōu)選結(jié)構(gòu)框圖三,如圖5所示,優(yōu)選地,矯正模塊44包括:第三確定單元442,用于在預設時間確定當前播放位置對應的第二時間;比較單元444,耦合至第三確定單元442,用于比較預設時間與第二時間的實際時間差值與預設時長的大小關系;第一處理單元446,耦合至比較單元444,用于在判斷到實際時間差值大于預設時長的情況下,按照第一預設策略加快對直播頻道的播放;第二處理模塊448,耦合至比較單元444,用于在判斷到實際時間差值小于預設時長的情況下,按照第二預設策略減慢對直播頻道的播放。
優(yōu)選地,第一預設策略包括:在對媒體文件分片進行解碼的過程中,在媒體文件分片中的不相鄰的2個I幀之間重復丟棄幀;其中,優(yōu)先丟棄B幀,在沒有B幀的情況下丟棄P幀;所丟棄的幀的數(shù)量至少是根據(jù)實際時間差值與預設時長之間的差值確定的。
優(yōu)選地,第二預設策略包括:對媒體文件分片中的特定幀進行一次重復播放;其中,重復播放的特定幀的數(shù)量至少是根據(jù)預設時長與實際時間差值之間的差值確定的,特定幀包括以下至少之一:I幀、P幀、B幀。
優(yōu)選地,上述的播放器包括:具有幀解析功能的播放裝置,例如:機頂盒等。
本實施例還提供了一種直播頻道播放系統(tǒng),圖6是根據(jù)本發(fā)明實施例的直播頻道播放系統(tǒng)的結(jié)構(gòu)示意圖,如圖6所示,該系統(tǒng)包括:機頂盒62、內(nèi)容分發(fā)網(wǎng)絡64、時間同步源66,其中:
內(nèi)容分發(fā)網(wǎng)絡64,與機頂盒62連接,用于根據(jù)直播源生成媒體文件分片和索引文件,并向機頂盒62提供媒體文件分片的下載和索引文件的更新;其中,索引文件中描 述有媒體文件分片的分片信息,分片信息包括:媒體文件分片的起始時間;
機頂盒62,用于從內(nèi)容分發(fā)網(wǎng)絡64獲取索引文件,并解析分片信息;根據(jù)分片信息,獲取媒體文件分片;以起始時間為基準,確定媒體文件分片中與第一時間對應的播放位置;以及從播放位置開始進行直播頻道的播放;其中,機頂盒62的當前時間與第一時間的時間差值為預設時長;
時間同步源66,分別與內(nèi)容分發(fā)網(wǎng)絡64和機頂盒62連接,用于同步機頂盒62與內(nèi)容分發(fā)網(wǎng)絡64的時間。
此外,上述的機頂盒62還用于實現(xiàn)上述直播頻道播放方法,在此將不再贅述。
需要說明的是,上述各個模塊是可以通過軟件或硬件來實現(xiàn)的,對于后者,可以通過以下方式實現(xiàn),但不限于此:上述模塊均位于同一處理器中;或者,上述模塊分別位于多個處理器中。
本發(fā)明的實施例還提供了一種軟件,該軟件用于執(zhí)行上述實施例及優(yōu)選實施方式中描述的技術方案。
本發(fā)明的實施例還提供了一種存儲介質(zhì)。在本實施例中,上述存儲介質(zhì)可以被設置為存儲用于執(zhí)行以下步驟的程序代碼:
S1,播放器獲取媒體文件分片的分片信息,其中,分片信息包括:媒體文件分片的起始時間;
S2,播放器以起始時間為基準,確定獲取到的媒體文件分片中與第一時間對應的播放位置;
S3,播放器從播放位置開始進行直播頻道的播放;其中,播放器的當前時間與第一時間的時間差值為預設時長;當前時間與生成媒體文件分片的設備的時間是同步的。
可選地,在本實施例中,上述存儲介質(zhì)可以包括但不限于:U盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
可選地,本實施例中的具體示例可以參考上述實施例及可選實施方式中所描述的示例,本實施例在此不再贅述。
為了使本發(fā)明實施例的描述更加清楚,下面結(jié)合優(yōu)選實施例進行描述和說明。
本發(fā)明優(yōu)選實施例提供了一種解決HLS直播頻道播放畫面不同步問題的方法和系統(tǒng),以提升用戶對于HLS頻道的觀看體驗。其中,本優(yōu)選實施例提供的方法包括如下步驟:
步驟1,CDN流媒體服務器(相當于上述內(nèi)容分發(fā)網(wǎng)絡)、機頂盒播放客戶端(相 當于上述的播放器),都與同一個時鐘同步源進行時鐘同步,確保兩者之間時間完全一致。
步驟2,CDN流媒體服務器在進行媒體文件切割并更新m3u8索引文件時,為每個媒體文件分片增加分片創(chuàng)建時間屬性,該分片創(chuàng)建時間屬性表示該媒體文件分片的實際起始時間。
步驟3,機頂盒播放客戶端進入HLS頻道播放時,下載完前2個媒體文件分片后不再從第一個媒體文件分片頭開始播放,而是從機頂盒播放客戶端當前系統(tǒng)時間減去某一固定時長(比如選取2個媒體文件分片的時長)t0處來開始播放。這就有效解決了不同機頂盒進入頻道的時間差,或者由于不同網(wǎng)絡帶寬差異情況下下載快慢產(chǎn)生的時間差,所引起HLS頻道直播畫面不同步問題。
優(yōu)選地,在每個整點時刻,機頂盒播放客戶端按照系統(tǒng)本地時間減去t0的播放位置矯正,如果有滯后,那么就加快解碼,直到完成滯后時間的矯正,通過這種矯正機制實現(xiàn)由于卡頓或者網(wǎng)絡傳輸導致的播放不同步問題。
為了實現(xiàn)上述方法,本發(fā)明優(yōu)選實施例還提供一種解決HLS直播頻道播放畫面不同步問題的系統(tǒng),該系統(tǒng)包括:切割媒體文件分片以及更新索引文件的CDN流媒體服務器、下載播放并矯正不同步問題的機頂盒播放客戶端,以及兩者之間做時鐘同步的時鐘同步服務器(相當于上述時間同步源)。
本發(fā)明優(yōu)選實施例提供的解決HLS直播頻道播放畫面不同步問題的方法和系統(tǒng),通過在CDN媒體服務端、機頂盒客戶端之間增加同步策略,來實現(xiàn)多個機頂盒之間的直播頻道畫面同步,能夠?qū)崿F(xiàn)不同客戶端、不同網(wǎng)絡帶寬條件下,對于同一個HLS直播頻道的畫面同步矯正,為用戶帶來畫面實時感更強的觀看體驗。
下面結(jié)合附圖和場景對本發(fā)明優(yōu)選實施例進行描述和說明。
本發(fā)明優(yōu)選實施例記載一種HLS直播頻道播放畫面同步系統(tǒng),如圖7和圖8所示,系統(tǒng)包括機頂盒播放客戶端、CDN流媒體服務器和時鐘同步服務器。
其中,時鐘同步服務器作為整個系統(tǒng)的時鐘源。機頂盒播放客戶端、CDN流媒體服務器都與時鐘同步服務器進行時鐘同步,確保機頂盒播放客戶端、CDN流媒體服務器之間時鐘的完全同步。
CDN流媒體服務器提供HLS直播頻道的節(jié)目源,對外提供頻道的m3u8索引文件以及頻道媒體文件分片的下載服務,同時根據(jù)直播進程反復更新m3u8索引,以及創(chuàng)建新的媒體文件分片。
如圖8所示,機頂盒播放客戶端包括:下載模塊、編解碼模塊和視頻呈現(xiàn)模塊。其中下載模塊負責m3u8索引文件的下載、解析,以及m3u8索引文件中所描述的媒體文件分片的下載;編解碼模塊負責將媒體文件分片的ts格式進行解碼,以便視頻呈現(xiàn)模塊 能夠?qū)嬅嬲宫F(xiàn)給用戶,同時編解碼模塊還負責在整點校驗發(fā)現(xiàn)有播放進度滯后時,做加快解碼工作,以便趕上播放進度。
基于上述的系統(tǒng),本發(fā)明優(yōu)選實施例還提供了一種HLS直播頻道播放畫面同步的方法,下面將結(jié)合圖9、圖10和圖11對該方法進行說明。
如圖9所示,CDN流媒體服務器在提供的HLS直播頻道的m3u8索引文件中,增加每個媒體文件分片的生成時間描述信息,生成時間描述信息采用#EXT-X-PROGRAM-DATE-TIME參數(shù)描述。生成描述信息,將作為不同機頂盒播放客戶端在完成下載后進行播放時保證播放畫面同步的基準,也將作為機頂盒播放客戶端在持續(xù)播放過程中保持播放畫面同步的基準。
如圖10所示,機頂盒播放客戶端根據(jù)用戶指令進入HLS直播頻道播放時的業(yè)務流程。首先機頂盒播放客戶端向流媒體服務器查詢HLS直播頻道的播放地址;CDN流媒體服務器根據(jù)請求返回HLS直播頻道的m3u8索引文件的文件傳輸協(xié)議(FTP)下載地址;機頂盒播放客戶端根據(jù)FTP下載地址下載第一個m3u8索引文件;機頂盒播放客戶端對第一個m3u8索引文件進行解析,獲得索引文件中所描述的HLS直播頻道的媒體文件分片,以及每個媒體文件分片的播放時長、每個媒體文件分片的生成時間(即圖9中的EXT-X-PROGRAM-DATE-TIME時間);機頂盒播放客戶端根據(jù)自身系統(tǒng)時間減去t0(例如可以選取t0的值為2個媒體文件分片的時長),作為出本次播放的起始時刻;機頂盒播放客戶端打開第一個媒體文件分片,跳轉(zhuǎn)到該起始時刻開始播放。
如圖11所示,,機頂盒播放客戶端在正常播放HLS頻道的媒體文件分片過程中,遇到時鐘整點時,校驗媒體文件當前播放位置,與機頂盒播放客戶端自身系統(tǒng)時間的差異,是否存在播放延時。如當前正在播放某媒體文件分片,至t1位置處,則取該媒體文件分片的生成時間t2(前述EXT-X-PROGRAM-DATE-TIME時間屬性),則當前播放位置即為t3=t2+t1。比較機頂盒播放客戶端自身系統(tǒng)時間t4與t3之間的差值t5=t4-t3,與圖10中t0相比較:
A、如果t5>t0,則表示該機頂盒播放客戶端在當前HLS頻道播放過程中存在延時,需要加速解碼展示。機頂盒播放客戶端根據(jù)t5與t0的差值,控制解碼模塊按照策略丟棄一定數(shù)量的視頻幀來趕上播放進度。
優(yōu)選地,上述的策略包括:
a1、不在相鄰的2個I幀之間重復丟棄幀;
a2、每次丟幀,優(yōu)先丟棄最近的B幀;沒有B幀的情況下,丟棄P幀;
a3、本次丟幀數(shù)量,根據(jù)于t5與t0之間的差值,與媒體文件壓縮比計算出來;
根據(jù)該策略實現(xiàn)丟幀趕上播放進度,對用戶的播放體驗的影響可以忽略,視頻上不會出現(xiàn)明顯的錯位感。
B、如果t5=t0,則表示該機頂盒播放客戶端在當前HLS頻道播放過程中不存在延時,不需要額外同步調(diào)整,正常下載和播放即可。
C、如果t5<t0,則表示該機頂盒播放客戶端在當前HLS播放過程中存在跳幀導致的播放進度過快,需要延緩播放進度。機頂盒播放客戶端根據(jù)t0與t5的差值,控制解碼模塊按照策略補償一定數(shù)量的視頻幀來延緩等待播放進度,其中,所謂補償,即對某一幀做一次重復播放。
優(yōu)選地,上述的策略包括:
c1,每一個原始幀,只能做一次補償;
c2,所補償?shù)脑紟梢允荌幀、P幀或B幀,沒有強制要求;
c3,本次補償幀的數(shù)量,根據(jù)于t0與t5之間的差值,與媒體文件壓縮比計算出來;
根據(jù)以上丟棄幀或補償幀策略實現(xiàn)播放進度同步,對用戶的播放體驗的影響可以忽略,視頻上不會出現(xiàn)明顯的跳躍或延時感。
如圖12~圖15所示,為不同機頂盒播放客戶端(簡稱客戶端),在不同網(wǎng)絡帶寬條件下的多個組合,通過本發(fā)明優(yōu)選實施例提供的方法解決HLS直播頻道播放畫面不同步問題的不同實施例。下面將逐一介紹。
圖12所示例,客戶端1和客戶端2是相同型號的機頂盒??蛻舳?,處于網(wǎng)絡帶寬1條件下;客戶端2,處于網(wǎng)絡帶寬2條件下??蛻舳?與客戶端2與同一時刻t1發(fā)起對同一個HLS直播頻道的觀看請求,由于帶寬差異,客戶端1相對較快的于t2時刻下載完該HLS直播頻道的m3u8索引文件以及所描的前2個媒體文件分片;客戶端1相對較慢的于t3時刻下載完該HLS直播頻道的m3u8索引文件以及所描的前2個媒體文件分片。
如果這2個客戶端都從所下載到的第一個媒體文件分片的開頭處進行播放,勢必出現(xiàn)客戶端1的播放畫面更近,客戶端2的播放畫面更早的不同步問題。
采用本發(fā)明方法,客戶端1在t2時刻完成下載后,從客戶端1當前時刻t2減去固定時長t0(如前述),即從t2-t0處進行播放,到了t3時刻,客戶端1的播放畫面位于t2-t0+(t3-t2)=t3-t0位置;此時客戶端2正好完成下載,并從客戶端2當前時刻t3減去固定時長t0(如前述),即從t3-t0處進行播放,正好與客戶端1的播放位置一致。這就保證了客戶端1和客戶端2在不同網(wǎng)絡帶寬條件下,同時進入同一個HLS直播頻道時的播放畫面同步。
圖13所示例,客戶端1和客戶端2,是兩個相同型號的且處于相同網(wǎng)絡帶寬1條件下??蛻舳?于較早時刻t1開始請求某一HLS直播頻道,于t3時刻完成m3u8索引文件以及其中所描述的前2個媒體文件分片的下載;客戶端2于較晚時刻t2開始請求同 一HLS直播頻道,于t4時刻完成m3u8索引文件以及其中所描述的前2個媒體文件分片的下載。客戶端1的播放時刻是t3-t0,到達t4時刻時,客戶端1的播放位置是t3-t0+(t4-t3)=t4-t0;客戶端2的播放時刻是t4-t0,正好正好與客戶端1的播放位置一致。這就保證了客戶端1和客戶端2在處于相同網(wǎng)絡帶寬條件下,不同時刻進入同一個HLS直播頻道播放時的播放畫面同步。
圖14所示例,客戶端1和客戶端2,是兩個相同型號的且處于相同網(wǎng)絡帶寬1條件下??蛻舳?于t1時刻開始請求某一HLS直播頻道的高清版,于t3時刻完成m3u8索引文件以及其中所描述的前2個高清媒體文件分片的下載;客戶端2于相同時刻t1開始請求同一HLS直播頻道的標清版,由于標清版媒體分片文件較小,占用下載時間較短,因此于t3時刻之前的t2完成m3u8索引文件以及其中所描述的前2個標清媒體文件分片的下載。客戶端2的播放時刻是t2-t0,到達t3時刻時,客戶端2的播放位置是t2-t0+(t3-t2)=t3-t0;客戶端1的播放時刻是t3-t0,正好與客戶端2的播放位置一致。這就保證了客戶端1和客戶端2在處于相同網(wǎng)絡帶寬條件下,對同一HLS直播頻道的高清和標清版頻道的播放畫面同步。
圖15所示例,客戶端1和客戶端2,是兩個相同型號的機頂盒。客戶端1,處于帶寬條件一般的網(wǎng)絡帶寬1條件下;客戶端2,處于帶寬條件更好網(wǎng)絡帶寬2條件下。兩個客戶端都在觀看同一個HLS直播頻道,且在t1時刻,兩個客戶端的播放位置相同,畫面同步。經(jīng)過一段時間后,由于網(wǎng)絡帶寬1的帶寬限制,出現(xiàn)了下載跟不上,播放進度滯后的狀況。在某一整點時刻t2,客戶端2處于正常播放位置,而客戶端1相對滯后,此時出現(xiàn)了兩者之間的播放畫面不同步。采用本發(fā)明方法,客戶端1在整點時刻,檢查發(fā)現(xiàn)播放位置與當前設備時間(t2)減去固定時長(t0)相比存在滯后,則客戶端1自身加快解碼播放,趕上正常播放進度,保持與標準播放畫面一致。
顯然,本領域的技術人員應該明白,上述的本發(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)。