一種在瀏覽器內播放媒體流的方法
【專利說明】一種在瀏覽器內播放媒體流的方法發(fā)明領域
[0001]本發(fā)明主要涉及媒體流和下載媒體內容到在客戶端上運行的瀏覽器應用。它進一步涉及在逐段基礎上下載的媒體內容的播放。
發(fā)明背景
[0002]當用戶訪問包含媒體,例如音頻、視頻或兩者兼有的網(wǎng)頁時,在瀏覽器應用程序的瀏覽器窗口中的視頻顯示或音頻播放器被激活。媒體本身在服務器上或者互聯(lián)網(wǎng)上內容分發(fā)網(wǎng)絡上的某處或者任何其它網(wǎng)絡作為一個媒體項是可獲得的。為了在媒體完全下載之前允許用戶開始觀看或收聽,媒體可以從服務器中以多個段的形式被請求并且每個段可獨立的從服務器上下載。只要第一個媒體段完成下載瀏覽器應用程序就可以開始呈現(xiàn)或播放媒體項目。在這樣做的時候,下一段的媒體被下載。
[0003]這種下載方式允許在媒體項目完全下載之前呈現(xiàn)一個媒體項目。這導致媒體項目下載的開始和它的實際重放之間有一個小的延遲。此外,在媒體項目結束之前停止或暫停時,在下載也被停止,因此,只有所需要的視頻數(shù)據(jù)被下載節(jié)約網(wǎng)絡通信量和下載配額。
[0004]除了媒體段,服務器上也有有關媒體段在服務器上的位置和它們各自的特定時間的可用信息。該信息可以被包括在一個單一的或通常被稱為清單文件的多個文件中。在呈現(xiàn)媒體之前,瀏覽器應用程序首先檢索該清單文件,并選擇媒體段下載。
[0005]由蘋果公司開發(fā)的HTTP實時流媒體(HLS)是一種協(xié)議,描述這樣一種方式下載媒體項目,即,漸進式下載。在支持HLS的客戶端應用,客戶端檢索含有鏈接到一個視頻項目的所有的視頻段的一個或多個清單文件。每個視頻項目可能有數(shù)個版本,每個版本涉及一個不同的質量和/或分辨率。當下載媒體段時,客戶端可以選擇何種質量或者分辨率的媒體塊應基于存在于清單文件之一中的列表進行編碼。由客戶端選擇的質量和/或分辨率的選擇可取決于幾個因素,如屏幕分辨率、帶寬限制或用戶輸入和/或偏好。在HLS中,視頻塊是根據(jù)MPEG-TS協(xié)議被編碼和作為獨立的文件下載的。因此,視頻產(chǎn)品是MPEG-TS編碼的視頻片段的繼承。播放視頻期間,客戶端會下載一個或一個以上的下一個片段,因此,支持漸進式下載。
[0006]HLS更普遍稱為HTTP的自適應流(HAS)協(xié)議,因為它允許流媒體內容的自適應方式,即質量和分辨率可以在流中進行調整。對于片段和清單的下載,HTTP GET請求被使用。其它HAS協(xié)議,例如微軟平滑流(MSS)、HTTP動態(tài)流(HDS)由Adobe和動態(tài)自適應流通過HTTP由3GPP標準(DASH)定義。
[0007]HAS協(xié)議的一個缺點是,它們都不是被HTML5標準原生的支持。HTML5標準支持單一的媒體元素的重放而無需指定的視頻格式。這樣一來,HTML5的實現(xiàn)兼容的瀏覽器提供標準不支持通過鏈接到一個清單文件或媒體片段播放的HAS媒體項目,例如MPEG-TS視頻片段。因此,要播放HAS視頻項目,需要瀏覽器插件或HAS功能作為一個額外的特征必須被實現(xiàn)。這樣的插件或額外的功能對于每一個瀏覽器應用程序需要被特別開發(fā)。通常只有幾個瀏覽器應用程序具有這樣的瀏覽器插件或功能可用于特定的HAS協(xié)議。
[0008]因此,本發(fā)明的目的是提供一種克服了上述缺點的用于在瀏覽器應用程序中播放有多個媒體片段的媒體項目的方法。
發(fā)明概述
[0009]這是通過根據(jù)權利要求1所述方法實現(xiàn)。
[0010]—種內容分發(fā)網(wǎng)絡或CDN的范圍可以從一個單一的文件服務器到位于在因特網(wǎng)上的多個數(shù)據(jù)中心的一個大的分布式系統(tǒng)的服務器。這些服務器可接著進一步包括緩存服務器和代理服務器以保證從⑶N到瀏覽器應用程序快速、低延遲輸送。該媒體段駐留在單個服務器上因此沒有必要的。媒體段是媒體的一部分。各部分覆蓋媒體的一段時間間隔。這樣的部分可以是,例如,是一個MPEG-TS視頻段或MP4音頻或視頻文件。瀏覽器應用程序中進行播放的媒體可以包括音頻、視頻或兩者建有,并且因此可以在瀏覽器應用程序的音頻或視頻播放器中播放。由于方法是在瀏覽器應用程序中執(zhí)行的,第一和第二媒體文件可以暫時駐留,高速緩存或隨機存取(RAM)的存儲器使得它們只對瀏覽器應用程序本身是可用的,保證快速和低延遲訪問。
[0011]這是一個優(yōu)點,即音頻和/或視頻數(shù)據(jù)有效載荷被直接用在第一和第二文件的結構,因此,不需要對在瀏覽器應用程序中的有效載荷數(shù)據(jù)轉碼、解碼或編碼。作為這樣的結果是,該方法可以在一個瀏覽器的腳本語言來實現(xiàn),如JavaScript這是HTML協(xié)議的一部分。由于低加工的需要,這些文件的結構是實時的并且文件因此可以以流傳輸物質被播放,即播放第一媒體文件時下載媒體段用于第二媒體文件。即使下載的段不被瀏覽器應用程序支持,所構造的文件是可播放的,因為用于編碼在CDN的一邊的有效載荷數(shù)據(jù)的編解碼器是由瀏覽器應用程序所支持的。
[0012]因此,第一和第二文件是在瀏覽器應用程序中播放,并且文件的結構完成,使得所獲得的文件根據(jù)一個瀏覽器協(xié)議,如如HTML或HTML5協(xié)議,可由瀏覽器的媒體播放器播放。HTML5中,例如,第一和第二文件的播放,可以通過環(huán)繞一個鏈接到第一或第二個文件用〈video〉標簽來實現(xiàn)。它因此一個優(yōu)點是沒有插件,例如,Si Iver light、Flash或QuickTime,需要執(zhí)行媒體的解碼和可視化。
[0013]根據(jù)一個實施例,方法還包括一個流媒體會話,與⑶N—起啟動。這是通過從⑶N檢索一個清單文件來實現(xiàn)的。清單文件包含媒體片段信息關于媒體片段是可用的作為文件在CDN上。媒體段的第一和第二子集,然后被選擇使用這段信息。
[0014]優(yōu)選的,片段信息包括內容分發(fā)網(wǎng)絡上各個所述片段的位置的有關信息。獲得第一和第二子集,于是包括通過發(fā)送請求到內容分發(fā)網(wǎng)絡與片段的位置作為參數(shù),檢索所述第一和第二子集的每個所述片段。
[0015]通過解析清單文件,并基于清單文件中的信息選擇片段,支持自適應流。這允許基于客戶端運行的瀏覽器應用程序的質量和帶寬要求選擇片段。即使瀏覽器所使用的協(xié)議,例如HTML或HTML5,不支持自適應流,該方法允許由瀏覽器支持的腳本語言例如JavaScript實現(xiàn)在瀏覽器程序內這樣的支持。
[0016]有利地,流會話是HTTP自適應流會話并且請求是HTTP GET請求。
[0017]這具有優(yōu)勢,協(xié)議如HLS、MSS、DASH或HDS可以在瀏覽器應用程序中被支持,而無需使用任何插件,因為該方法是通過瀏覽器應用程序本身執(zhí)行,例如通過JavaScript代碼。此夕卜,通過使用HTTP協(xié)議,能夠避免防火墻或代理阻塞檢索片段,在一般情況下,它們允許HTTP流量通過。這對其他非基于HTTP的協(xié)議并不總是這樣,例如實時流協(xié)議(RTSP)。
[0018]根據(jù)實施例,清單文件包括關于片段的可用版本的編解碼信息。此編解碼信息特定用于每個版本對應編解碼器用于編解碼音頻和/或視頻片段的有效載荷數(shù)據(jù)。然后,該方法進一步包括基于編解碼信息選擇一種版本的片段使得相應的編解碼器被瀏覽器程序支持。
[0019]換句話說,該清單文件中列出幾個版本的段及相應的媒體,由此每個版本提供媒體和片段由不同的編解碼器進行編碼。由于瀏覽器應用程序可能不支持所有可能的編解碼器在瀏覽器應用程序的媒體播放器內重放媒體,這允許挑選一個由瀏覽器支持的編解碼器編解碼的片段版本。
[0020]根據(jù)一個實施例,媒體片段包括索引信息,其中,包括位置信息,關于媒體片段內音頻和/或視頻有效載荷數(shù)據(jù)的位置信息。然后,該方法進一步包括以下步驟:
-通過使用索引信息從媒體片段中提取視頻和/或音頻有效載荷數(shù)據(jù)。
-存儲視頻和/或音頻有效載荷數(shù)據(jù)。
-使用所存儲的視頻和/或音頻有效載荷數(shù)據(jù)用于所述構建步驟。
[0021]這允許檢索來自一個片段的視頻和/或有效載荷數(shù)據(jù),即使數(shù)據(jù)在片段內沒有按照應當?shù)谋幻?,根?jù)所得到的文件的格式,使它由播放瀏覽器應用程序是可播放的。這也允許跳過產(chǎn)生的文件中的不被需要的額外數(shù)據(jù),例如字幕或不同的音頻流。索引信息進一步還可以包括關于媒體內音頻和/或視頻有效數(shù)據(jù)載荷的時間間隔的同步信息。所以每一塊有效載荷數(shù)據(jù)可由關于如何使數(shù)據(jù)與其它有效載荷數(shù)據(jù)及時對齊的定時信息伴隨。該信息可以被重新格式化,以由第一和第二文件形成的兼容的形式。
[0022]根據(jù)一個實施例,播放的步驟可以進一步包括:
-在瀏覽器應用程序中的一個第一播放器播放第一媒體文件;
-在播放第一媒體文件的同時在播放器瀏覽應用程序的一個第二播放器中下載第二媒體文件;
-第一個媒體文件結束時,開始播放第二個