專利名稱:流媒體播放方法及裝置的制作方法
技術領域:
本發明實施例涉及流媒體播放技術,尤其涉及一種流媒體播放方法及裝置。
背景技術:
流媒體(Streaming Media)播放技術是指通過采用流式技術進行多媒體文件傳輸而實現多媒體在線實時播放的技術。在進行視頻/音頻等多媒體文件播放時,服務器通過采用流媒體播放技術進行多媒體文件傳輸,可使得用戶計算機上的客戶端實現多媒體文件的邊下載邊播放的在線實時播放,可有效提高用戶在線觀看多媒體內容的體驗。其中,流式技術是指服務器將多媒體文件壓縮成一個個的壓縮包,并將壓縮包連續、實時地傳輸至用戶計算機,這樣的傳輸的多媒體文件也可稱為流媒體,傳輸的壓縮包也可稱為流數據;用戶計算機上的客戶端可實時接收流數據,并對流數據進行實時解碼、播放,從而實現流媒體的邊下載邊播放。目前,用戶計算機上的客戶端在接收流數據時,通常設置有固定大小的數據存儲塊作為緩沖區,用于對流數據進行緩存操作,這樣,通過緩存流數據就可以改善網絡抖動和時延變化對流媒體播放的影響,避免網絡堵塞造成的流媒體播放停頓。但是,現有流媒體播放技術中,用于流數據緩存操作的緩存區空間大小一定,這就帶來以下如下問題由于流媒體初始播放,或者播放過程中因停頓而重啟播放時,需要緩沖區內的流數據滿后才能播放,因此,現有流媒體播放過程中常常因緩沖區大小設置不合理而導致流媒體的播放效果較差,例如,若緩沖區設置過大,將會導致流媒體初始播放等待時間,以及播放過程中停頓時間過長;若緩沖區設置過小,將會導致流媒體播放過程中停頓次數過多,從而影響播放效果。
發明內容
本發明實施例提供一種流媒體播放方法及裝置,可克服現有流媒體播放過程中固定設置的緩存區大小不合理而導致播放效果較差的問題,可有效提高流媒體播放的流暢度。第一方面,本發明實施例提供一種流媒體播放方法,包括檢測得到流媒體的下載速率;根據所述下載速率以及流媒體的播放速率,調整流媒體數據的緩存區的大小,其中,所述流媒體數據的緩存區為用于對流媒體數據進行緩存操作的數據存儲空間。結合第一方面,在第一種可能實現方式中,所述根據所述下載速率以及流媒體的播放速率,調整流媒體數據的緩存區的大小,具體包括在所述流媒體初始播放或停頓后重啟播放過程中,所述下載速率大于或等于所述播放速率時,將流媒體數據的緩存區的大小調整到第一緩存長度,以便在所述預設的最小緩存長度的流媒體數據的緩存區滿后開始播放流媒體,所述第一緩存長度為所述當前緩存區中已緩存數據占用的緩存區的長度與預設最小緩存長度中的最大值。
結合第一方面的第一種可能實現方式,在第二種可能實現方式中,所述的流媒體播放方法還包括在所述流媒體初始播放或停頓后重啟播放過程中,所述下載速率小于播放速率時,根據所述下載速率和播放速率獲得當前緩存區中的緩存變化率,并根據所述緩存變化率調整所述流媒體數據的緩存區的大小;其中,所述緩存變化率S (t) =D (t)-K(t),其中,D (t)為流媒體的下載速率,K(t)流媒體的播放速率,所述緩存變化率用于表示緩存區中數據增多或減少的變化量。結合第一方面的第二種可能實現方式,在第三種可能實現方式中,所述根據當前緩存區中的緩存變化率,調整所述流媒體數據的緩存區的大小,具體包括在當前緩存區的緩存 變化率增加時,將當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,以便開始播放流媒體。結合第一方面的第二種能實現方式,在第四種可能實現方式中,所述根據當前緩存區中的緩存變化率,調整所述流媒體數據的緩存區的大小,具體包括在當前緩存區的變化率沒有變化或減少,且所述下載速率的增長率達到預設增長閾值時,將所述當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,以便開始播放流媒體。結合第一方面的第二種能實現方式,在第五種可能實現方式中,所述根據當前緩存區中的緩存變化率,調整所述流媒體數據的緩存區的大小,具體包括在當前緩存區的變化率沒有變化或減少,且所述下載速率的增長率未達到預設增長閾值或下降時,根據當前緩存區中已緩存的數據的大小,調整所述流媒體數據的緩存區的大小。結合第一方面的第五種能實現方式,在第六種可能實現方式中,所述根據當前緩存區中已緩存的數據的大小,調整所述流媒體數據的緩存區的大小,具體包括在當前緩存區中已緩存的數據B滿足條件B>=G*(1-D/K)時,將所述當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,以便開始播放流媒體;其中,所述G為未播放的流媒體的長度,D為下載速率,K為播放速率。結合第一方面的第六種能實現方式,在第七種可能實現方式中,所述的流媒體播放方法還包括當前緩存區緩存的數據B不滿足條件B>=G*(1-D/K),且G*(1_D/K)不大于流媒體數據的緩存區的最大值時,將所述G* (1-D/K)的長度作為流媒體數據的緩存區的大小,以便在所述流媒體數據的緩存區滿后開始播放流媒體。結合第一方面,在第八種可能實現方式中,所述的流媒體播放方法還包括在所述流媒體停頓后重啟播放時,若停頓次數大于預設停頓閾值時,增大流媒體數據的緩存區的大小。結合第一方面或第一方面的第一或二或三或四或五或六或七或八種可能實現方式,在第九種可能實現方式中,所述檢測得到流媒體的下載速率,具體包括在啟動流媒體播放指令,或者停頓后重啟播放開始后的預設時間檢測得到流媒體的下載速率;或者,在啟動流媒體播放指令,或者停頓后重啟播放開始后,周期性的檢測得到流媒體的下載速率。結合第一方面或第一方面的第一或二或三或四或五或六或七或八或九種可能實現方式,在第十種可能實現方式中,所述的流媒體播放方法還包括接收流媒體播放指令,并為流媒體播放設定預設大小的流媒體數據存儲空間作為播放流媒體初始的流媒體數據的緩存區。結合第一方面的第一或二或三或四或五或六或七或八或九或十種可能實現方式,在第十一種可能實現方式中,所述的流媒體播放方法還包括在所述流媒體初始播放或停頓后重啟播放過程中,若播放等待時間超過預設等待時間時,將當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,以便開始播放流媒體。結合第一方面,在第十二中能實現方式中,所述根據所述下載速率以及流媒體的播放速率,調整流媒體數據的緩存區的大小,具體包括在流媒體播放過程中,根據所述下載速率和播放速率獲得當前緩存區中的緩存變化率,并在所述緩存變化率增長時,增大流媒體數據的緩存區的大小。第二方面,本發明實施例提供一種流媒體播放裝置,包括檢測模塊,用于檢測得到流媒體的下載速率;調整模塊,用于根據所述下載速率以及流媒體的播放速率,調整流媒體數據的緩存區的大小,其中,所述流媒體數據的緩存區為用于對流媒體數據進行緩存操作的數據存儲空間。結合第二方面,在 第一種可能實現方式中,所述調整模塊,具體用于在所述流媒體初始播放或停頓后重啟播放過程中,所述下載速率大于或等于所述播放速率時,將流媒體數據的緩存區的大小調整到第一緩存長度,以便在所述預設的最小緩存長度的流媒體數據的緩存區滿后開始播放流媒體,所述第一緩存長度為所述當前緩存區中已緩存數據占用的緩存區的長度與預設最小緩存長度中的最大值。結合第二方面的第一種可能實現方式,在第二種可能實現方式中,所述調整模塊,還用于在所述流媒體初始播放或停頓后重啟播放過程中,所述下載速率小于播放速率時,根據所述下載速率和播放速率獲得當前緩存區中的緩存變化率,并根據所述緩存變化率調整所述流媒體數據的緩存區的大小;其中,所述緩存變化率S (t) =D (t)-K(t),其中,D (t)為流媒體的下載速率,K(t)流媒體的播放速率,所述緩存變化率用于表示緩存區中數據增多或減少的變化量。結合第二方面的第二種可能實現方式,在第三種可能實現方式中,所述調整模塊,具體用于在當前緩存區的緩存變化率增加時,將當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,以便開始播放流媒體。結合第二方面的第二種能實現方式,在第四種可能實現方式中,所述調整模塊,具體用于在當前緩存區的變化率沒有變化或減少,且所述下載速率的增長率達到預設增長閾值時,將所述當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,以便開始播放流媒體。結合第二方面的第二種能實現方式,在第五種可能實現方式中,所述調整模塊,具體用于在當前緩存區的變化率沒有變化或減少,且所述下載速率的增長率未達到預設增長閾值或下降時,根據當前緩存區中已緩存的數據的大小,調整所述流媒體數據的緩存區的大小。結合第二方面的第五種能實現方式,在第六種可能實現方式中,所述調整模塊,具體用于在當前緩存區中已緩存的數據B滿足條件B>=G*(1-D/K)時,將所述當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,以便開始播放流媒體;其中,所述G為未播放的流媒體的長度,D為下載速率,K為播放速率。結合第二方面的第六種能實現方式,在第七種可能實現方式中,所述調整模塊,還用于當前緩存區緩存的數據B不滿足條件B>=G*(1-D/K),且G*(l-D/K)不大于流媒體數據的緩存區的最大值時,將所述G* (1-D/K)的長度作為流媒體數據的緩存區的大小,以便在所述流媒體數據的緩存區滿后開始播放流媒體。結合第二方面,在第八種可能實現方式中,所述調整模塊,還用于在所述流媒體停頓后重啟播放時,若停頓次數大于預設停頓閾值時,增大流媒體數據的緩存區的大小。結合第二方面或第二方面的第一或二或三或四或五或六或七或八種可能實現方式,在第九種可能實現方式中,所述檢測模塊,具體用于在啟動流媒體播放指令,或者停頓后重啟播放開始后的預設時間檢測得到流媒體的下載速率;或者,用于在啟動流媒體播放指令,或者停頓后重啟播放開始后,周期性的檢測得到流媒體的下載速率。結合第二方面或第二方面的第一或二或三或四或五或六或七或八或九種可能實現方式,在第十種可能實現方式中,所述的流媒體播放裝置還包括播放指令接收模塊,用于接收流媒體播放指令,并為流媒體播放設定預設大小的流媒體數據存儲空間作為播放流媒體初始的流媒體數據的緩存區。結合第二方面的第 一或二或三或四或五或六或七或八或九或十種可能實現方式,在第十一種可能實現方式中,所述調整模塊,還用于在所述流媒體初始播放或停頓后重啟播放過程中,若播放等待時間超過預設等待時間時,將當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,以便開始播放流媒體。結合第二方面,在第十二中能實現方式中,所述調整模塊,還用于在流媒體播放過程中,根據所述下載速率和播放速率獲得當前緩存區中的緩存變化率,并在所述緩存變化率增長時,增大流媒體數據的緩存區的大小。綜上,本實施例可基于流媒體的下載速率和播放速率,動態調整流媒體數據的緩存區的大小,在流媒體播放過程中可根據當前流媒體播放情況,將流媒體數據的緩存區調整至合適大小,從而可避免現有流媒體播放中僅采用固定緩存區大小導致的流媒體播放流暢度較差的問題。
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖1為本發明實施例一提供的流媒體播放方法的流程示意圖;圖2為本發明實施例二提供的流媒體播放方法的流程示意圖3為本發明實施例三提供的流媒體播放方法的流程示意圖;圖4為本發明實施例四提供的流媒體播放方法的流程示意圖;圖5為本發明實施例五提供的流媒體播放裝置的結構示意圖;圖6為本發明實施例六提供的流媒體播放裝置的結構示意圖;圖7為本發明實施例七提供的流媒體播放裝置的結構示意圖。
具體實施例方式本發明實施例提供的流媒體播放方法及裝置,可基于流媒體的下載速率以及播放速率,對流媒體數據的緩存區的大小進行實時調整,從而可確保流媒體播放的流暢度,提高用戶觀看流媒體的體驗。圖1為本發明實施例一提供的流媒體播放方法的流程示意圖。本實施例應用于流媒體播放中,具體地,播放流媒體的客戶端在接收到流媒體播放指令后,即可接收流媒體數據,并可根據流媒體的下載速率以及播放速率來調整用于緩存流媒體數據的緩存區的大小,提高流媒體播放的流暢度,具體地,如圖1所示,本實施例方法可包括如下步驟步驟101、檢測得到流媒體的下載速率;
步驟102、根據下載速率以及流媒體的播放速率,調整流媒體數據的緩存區的大小,其中,流媒體數據的緩存區為用于對流媒體數據進行緩存操作的數據存儲空間。本實施例中,客戶端需要播放流媒體時,可邊接收流媒體數據,邊進行流媒體的播放,且在播放流媒體過程中,可基于流媒體的下載速率來調整流媒體數據的緩存區的大小,實現對流媒體數據的緩存區大小的動態調整,這樣可避免現有采用單一緩存區大小時,因緩存區的大小設置不合理而導致流媒體初始播放等待時間較長,或者播放停頓后等待時間過長,或者因緩存設置過小而導致頻繁停頓等播放問題,可有效提高流媒體播放的流暢度,提聞用戶觀看流媒體的體驗。本領域技術人員可以理解,流媒體的播放速率可攜帶在流媒體播放指令下達時,或者在接收到的第一段流媒體數據中解析得到。上述檢測得到流媒體的下載速率,具體可以接收到流媒體播放指令后,周期性的檢測,并在每一次檢測到流媒體的下載速率時,均基于該下載速率來調整流媒體數據的緩存區的大小;或者上述檢測得到流媒體的下載速率,也可以是在各播放階段,例如初始播放、停頓后重啟播放或者連續播放一定時間過程中,按照預設時間檢測得到,并在檢測得到流媒體的下載速率后,基于流媒體下載速率來調整流媒體數據的緩存區的大小。綜上,本實施例提供的流媒體播放方法,可基于流媒體的下載速率和播放速率,動態調整流媒體數據的緩存區的大小,在流媒體播放過程中可根據當前流媒體播放情況,將流媒體數據的緩存區調整至合適大小,從而可避免現有流媒體播放中僅采用固定緩存區大小導致的流媒體播放流暢度較差的問題。圖2為本發明實施例二提供的流媒體播放方法的流程示意圖。本實施例可在接收到流媒體播放指令,流媒體初始播放過程中,基于流媒體的下載速率以及播放速率對流媒體數據的緩存區的大小進行動態調整,以避免流媒體初始播放等待時間過長,具體地,客戶端接收到流媒體播放指令后,就可以基于本實施例方法來調整流媒體數據的緩存區的大小,并在緩存區滿后,啟動播放流媒體,如圖2所示,本實施例方法可包括如下步驟
步驟201、接收流媒體播放指令;步驟202、檢測得到當前流媒體的下載速率;步驟203、判斷流媒體的下載速率是否大于或等于流媒體的播放速率,是則執行步驟204,否則,執行步驟207 ;步驟204、判斷當前緩存區中已緩存數據占用的緩存區的大小是否大于預設的最小緩存長度,是則執行步驟205,否則,執行步驟206 ;步驟205、將當前緩存區中已緩存數據占用的緩存區的大小作為流媒體數據的緩存區,執行步驟216;步驟206、將流媒體數據的緩存區大小調整到預設的最小緩存長度,以便在預設的最小緩存長度的流媒體數據的緩存區滿后,執行步驟216 ;步驟207、判斷當前緩存區的緩存變化率是否增加,是則執行步驟208,否則,執行步驟209 ;步驟208、將當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,執行步驟216 ;步驟209、判斷流媒體的下載速率的增長率是否達到預設增長閾值,是則執行步驟210,否則執行步驟211 ;步驟210、將當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,執行步驟216 ; 步驟211、判斷當前緩存區中已緩存的數據B是否滿足條件B>=G*(1-D/K),是則執行步驟212,否則執行步驟213 ;步驟212、將當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,執行步驟216 ;步驟213、判斷G*(1_D/K)是否大于流媒體數據的緩存區的最大值,是則執行步驟214,否則,執行步驟215 ;步驟214、將G* (1-D/K)的長度作為流媒體數據的緩存區的大小,以便在流媒體數據的緩存區滿后,執行步驟216 ;步驟215、將流媒體數據的緩存區的最大值作為流媒體數據的緩存區,以便在流媒體數據的緩存區滿后,執行步驟216 ;步驟216、開始播放流媒體。上述步驟201中,流媒體初始播放時,會接收流媒體播放指令,并基于流媒體播放指令開始接收流媒體數據,并可在接收到流媒體播放指令后為,為流媒體播放設定預設大小的流媒體數據存儲空間,以作為流媒體播放初始的流媒體數據的緩存區。其中,該初始的流媒體數據的緩存區的大小可以為客戶端根據當前網絡情況設定,或者由客戶端默認設定。本實施例中,上述步驟202中,流媒體檢測得到流媒體的下載速率,具體可以是流媒體播放指令后的預設時間,例如Is后,對流媒體的下載速率進行檢測,以得到當前流媒體的下載速率,并基于下載速率調整流媒體數據的緩存區的大小,或者,也可以在接收到流媒體播放指令后,周期性的檢測下載速率,以周期性的調整流媒體數據的緩存區的大小。上述步驟203-步驟205中,當流媒體的下載速率大于播放速率時,說明當前網絡資源足夠流媒體流暢播放,此時,可將流媒體數據的緩存區大小調整到一個最小值,以減少流媒體初始播放時的等待時間,該最小值即是第一緩存長度,為當前緩存區中已緩存數據占用的緩存區的長度和預設的最小長度的最大值。其中,該預設的最小長度可以是為了避免緩存區數據被快速用完而導致流媒體播放停頓設定的一個保護值,該保護值可以避免網絡帶寬波動而導致流媒體播放長度,可以設定為可滿足流媒體可播放O. 5S-2S的緩存區的大小,即在最小緩存長度的緩存區緩存的數據,可以確保流媒體能播放O. 5s-2s,該最小緩存長度可以由客戶端默認設置,或者也可根據當前網絡情況來設定。上述步驟207和步驟208中,流媒體的下載速率小于播放速率,且當前緩存區的緩存變化率增加時,說明緩存區的緩存量在持續增加,流媒體的下載速率的變化率高于播放速率,此時網絡帶寬可滿足流媒體的播放,從而可將當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,以進行流媒體播放,可減少流媒體初始播放的等待時間。上述步驟209-步驟210中,流媒體的下載速率小于播放速率,當前緩存區的緩存變化率沒有增加,且流媒體的下載速率的增長率達到預設增·長閾值時,說明當前流媒體數據傳輸處于TCP的慢啟動區間,網絡吞吐率會隨著時間快速增長,此時網絡可滿足流媒體流暢播放。上述步驟211和步驟214中,流媒體的下載速率小于播放速率,當前緩存區的緩存變化率沒有增加,且流媒體的下載速率的增長率未達到預設增長閾值時,說明當前網絡吞吐率接近或趨于穩態,且網絡帶寬小于播放速率,此時,即可根據當前緩存區中已緩存數據是否滿足流媒體流暢播放,來確定流媒體數據的緩存區的大小。其中,若B>=G*(1-D/K),則說明當前緩存區中的數據可以滿足流媒體流暢播放,所述的G也就是流媒體的播放長度,當緩存區緩存的數據長度滿足該公式時,說明緩存的數據可滿足流媒體流暢播放,此時可以進行流媒體播放,以減少流媒體初始播放的等待時間,否則,說明緩存區中緩存的流媒體數據無法滿足流暢播放,此時就可以步驟211和步驟213來調整緩存區的大小。步驟213-步驟215中,通過判斷G* (1-D/K)是否大于流媒體數據的緩存區的最大值,確定流媒體數據的緩存區的大小,即將流媒體數據的緩存區的調整為流媒體數據的緩存區的最大值與當前可滿足流媒體流暢播放的最小值之間的一個最小值,以減少流媒體初始播放等待時間。本領域技術人員可以理解,流媒體初始播放時,只要設定的流媒體數據的緩存區數據滿時,就可啟動播放,因此,通過調整流媒體數據的緩存區的大小,在確保流媒體流暢播放的情況下,可減少初始播放等待時間。為便于對本發明實施例技術方案有更好的了解,下面將以流媒體初始播放過程中,周期性的來檢測流媒體的下載速率,并基于下載速率周期性的對流媒體數據的緩存區大小進行調整為例,對本發明技術方案進行說明。其中,緩存區的大小以可供流媒體播放的時間來表示;檢測流媒體的下載速率的周期性時間設定為tm,即每個tm來檢測一次流媒體的下載速率并對流媒體數據的緩存區進行一次調整。圖3為本發明實施例三提供的流媒體播放方法的流程示意圖。如圖3所示,本實施例方法可包括如下步驟步驟301、接收流媒體播放指令,并為流媒體播放設定預設大小的流媒體數據的緩存區,設定播放時間t的初始值為0,并對t開始計時;
步驟302、判斷當前時間t是否等于tm,是則執行步驟303,否則,繼續執行步驟302,直至Ij t=tm ;步驟303、檢測得到流媒體的下載速率D,并判斷流媒體的下載速率D是否大于流媒體的播放速率K,是則執行步驟304,否則,執行步驟308 ;步驟304、將流媒體數據的緩存區的大小調整到Ts=Hiax (t,E);步驟305、判斷當前時間t是否大于Ts,是則執行步驟306,否則,執行步驟307 ;步驟306、播放流媒體,結束;步驟307、判斷當前時間t是否等于t’+tm,其中t’為前次檢測流媒體的下載速率的時間,是則執行步驟303,否則,繼續執行步驟307,直到t為t’ +tm ;步驟308、判斷當前緩存區中的緩存變化率S是否增加,即S(t)是否大于S(t-l),是則執行步驟309,否則,執 行步驟310 ;步驟309、將當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,執行步驟306 ;步驟310、判斷當前流媒體數據的下載速率的增長率是否呈指數增長,是則執行步驟309,否則,執行步驟311 ;步驟311、判斷當前時間t是否大于預設等待時間Hs,是,則執行步驟309,否則,執行步驟312 ;步驟312、判斷當前緩存區中已緩存的數據B’是否滿足條件B’ >=L*(1_D/K),是則執行步驟309,否則,執行步驟313 ;步驟313、將流媒體數據的緩存區Ts調整到Ts=min (Bmax,L)* (1-D/K),執行步驟 305。上述步驟301中,客戶端接收到流媒體播放指令后,就可以為流媒體播放設置預設大小的流媒體數據緩存區,同時對播放時間t進行計時,并按照tm周期進行周期性的檢測流媒體的下載速率,并對流媒體數據的緩存區進行周期性的調整。上述步驟304中,所述的Ts、E均是指流媒體播放的時間,其中,Ts表示緩存區滿時可供流媒體播放的時間長度,E則是預設的一個時間,用于表示流媒體播放時緩存區滿時可供流媒體播放的最小的時間長度。該E通常設定為O. 5s-2s,且該E也可稱為保護時間或初始播放的最小時延,用于避免在網絡帶寬波動情況下,可播放速度大于下載速度時,緩存快速用完而導致播放停頓的問題。上述步驟308中,當緩存區中的緩存變化率S增加時,說明下載速率變化率高于播放速率,當前網絡帶寬可滿足流媒體的流暢播放,此時就可以啟動播放。上述步驟310中,當流媒體的下載速率呈指數增長,也即下載速率的增長率達到一個預設增長閾值時,就可以確定當前網絡帶寬處于TCP的慢啟動區間,此時網絡吞吐率會隨時間指數快速增長,可滿足流媒體的流暢播放,因此,可啟動播放。上述步驟311中,所述的等待時間Hs為預設的流媒體初始播放的最大等待時間,當超過該等待時間Hs時,用戶的觀看流媒體的等待時間過長,將會導致用戶觀看流媒體的體驗極差,因此,在超過該Hs時,就可以直接播放,否則,就可以基于已緩存的流媒體數據的大小,來調整流媒體數據的緩存區的大小。上述步驟312中,B’是指流媒體數據的緩存區中已緩存的數據可供流媒體播放的時間長度,L就是流媒體的總的播放時長,當B’ >=L*(1-D/K)時,說明流媒體數據的緩存區中已緩存的數據可滿足流媒體的流暢播放,為減少初始播放等待時間,就可以直接利用已緩存的數據進行播放。上述步驟313中,Bmax是流媒體數據的緩存區的最大值,也可稱為客戶端可為流媒體播放提供的最大的緩存區。本實施例中,當流媒體播放過程中,出現播放停頓需要重啟播放時,可執行與上述圖2或圖3相同的步驟,來調整流媒體數據的緩存區,以減少播放停頓時間,提高重啟播放流暢度。此外,在重啟播放時,還可根據流媒體停頓次數,來調整當前流媒體數據的緩存區的大小。下面將以具體實例,對流媒體播放過程中因停頓需要重啟播放時,流媒體數據的緩存區的調整過程進行說明。圖4為本發明實施例四提供的流媒體播放方法的流程示意圖。如圖4所示,本實施例方法可包括如下步驟步驟401、流媒體播放過程中,播放停頓時,記錄播放停頓的當前時間tl,并繼續對tl進行計時;步驟402、在當前時間t是否等于tl+tm,是則執行步驟403,否則,繼續執行步驟402,直至Ij t=tl+tm ;步驟403、檢測得到流媒體的下載速率D,并判斷流媒體的下載速率D是否大于流媒體的播放速率K,是則執行步驟404,否則,執行步驟408 ;步驟404、將流媒體數據的緩存區的大小調整到Tr=Hiax (t_tl,E);步驟405、判斷當前時間t是否大于tl+Tr,是則執行步驟406,否則,執行步驟407 ;步驟406、播放流媒體,結束;步驟407、判斷當前時間t是否等于t’+tm,其中t’為前次檢測流媒體的下載速率的時間,是則執行步驟403,否則,繼續執行步驟407,直到t為t’ +tm ;步驟408、判斷流媒體播放的停頓次數是否超過預設次數n,在停頓次數超過預設次數η時增大當前緩存區的大小,執行步驟409 ;步驟409、判斷當前緩存區中的緩存變化率S是否增加,即S(t)是否大于S(t-l),是則執行步驟410,否則,執行步驟411 ;步驟410、將當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,執行步驟406 ;步驟411、判斷當前流媒體數據的下載速率的增長率是否呈指數增長,是則執行步驟410,否則,執行步驟412 ;步驟412、判斷當前時間t是否大于預設等待時間Hr,是,則執行步驟410,否則,執行步驟413 ;步驟413、判斷當前緩存區中已緩存的數據B’是否滿足條件B’ >=R*(1_D/K),是則執行步驟410,否則,執行步驟414 ;步驟414、將流媒體數據的緩存區Tr調整到
權利要求
1.一種流媒體播放方法,其特征在于,包括 檢測得到流媒體的下載速率; 根據所述下載速率以及流媒體的播放速率,調整流媒體數據的緩存區的大小,其中,所述流媒體數據的緩存區為用于對流媒體數據進行緩存操作的數據存儲空間。
2.根據權利要求1所述的流媒體播放方法,其特征在于,所述根據所述下載速率以及流媒體的播放速率,調整流媒體數據的緩存區的大小,具體包括 在所述流媒體初始播放或停頓后重啟播放過程中,所述下載速率大于或等于所述播放速率時,將流媒體數據的緩存區的大小調整到第一緩存長度,以便在所述預設的最小緩存長度的流媒體數據的緩存區滿后開始播放流媒體,所述第一緩存長度為所述當前緩存區中已緩存數據占用的緩存區的長度與預設最小緩存長度中的最大值。
3.根據權利要求2所述的流媒體播放方法,其特征在于,還包括 在所述流媒體初始播放或停頓后重啟播放過程中,所述下載速率小于播放速率時,根據所述下載速率和播放速率獲得當前緩存區中的緩存變化率,并根據所述緩存變化率調整所述流媒體數據的緩存區的大小; 其中,所述緩存變化率S (t) =D (t)-K(t),其中,D (t)為流媒體的下載速率,K(t)流媒體的播放速率,所述緩存變化率用于表示緩存區中數據增多或減少的變化量。
4.根據權利要求3所述的流媒體播放方法,其特征在于,所述根據當前緩存區中的緩存變化率,調整所述流媒體數據的緩存區的大小,具體包括 在當前緩存區的緩存變化率增加時,將當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,以便開始播放流媒體。
5.根據權利要求3所述的流媒體播放方法,其特征在于,所述根據當前緩存區中的緩存變化率,調整所述流媒體數據的緩存區的大小,具體包括 在當前緩存區的變化率沒有變化或減少,且所述下載速率的增長率達到預設增長閾值時,將所述當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,以便開始播放流媒體。
6.根據權利要求3所述的流媒體播放方法,其特征在于,所述根據當前緩存區中的緩存變化率,調整所述流媒體數據的緩存區的大小,具體包括 在當前緩存區的變化率沒有變化或減少,且所述下載速率的增長率未達到預設增長閾值或下降時,根據當前緩存區中已緩存的數據的大小,調整所述流媒體數據的緩存區的大小。
7.根據權利要求6所述的流媒體播放方法,其特征在于,所述根據當前緩存區中已緩存的數據的大小,調整所述流媒體數據的緩存區的大小,具體包括 在當前緩存區中已緩存的數據B滿足條件B>=G*(1-D/K)時,將所述當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,以便開始播放流媒體; 其中,所述G為未播放的流媒體的長度,D為下載速率,K為播放速率。
8.根據權利要求7所述的流媒體播放方法,其特征在于,還包括 當前緩存區緩存的數據B不滿足條件B>=G*(1-D/K),且G*(l-D/K)不大于流媒體數據的緩存區的最大值時,將所述G* (1-D/K)的長度作為流媒體數據的緩存區的大小,以便在所述流媒體數據的緩存區滿后開始播放流媒體。
9.根據權利要求1所述的流媒體播放方法,其特征在于,還包括 在所述流媒體停頓后重啟播放時,若停頓次數大于預設停頓閾值時,增大流媒體數據的緩存區的大小。
10.根據權利要求1-9任一所述的流媒體播放方法,其特征在于,所述檢測得到流媒體的下載速率,具體包括 在啟動流媒體播放指令,或者停頓后重啟播放開始后的預設時間檢測得到流媒體的下載速率; 或者,在啟動流媒體播放指令,或者停頓后重啟播放開始后,周期性的檢測得到流媒體的下載速率。
11.根據權利要求1-10任一所述的流媒體播放方法,其特征在于,還包括 接收流媒體播放指令,并為流媒體播放設定預設大小的流媒體數據存儲空間作為播放流媒體初始的流媒體數據的緩存區。
12.根據權利要求2-11任一所述的流媒體播放方法,其特征在于,還包括 在所述流媒體初始播放或停頓后重啟播放過程中,若播放等待時間超過預設等待時間時,將當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,以便開始播放流媒體。
13.根據權利要求1所述的流媒體播放方法,其特征在于,所述根據所述下載速率以及流媒體的播放速率,調整流媒體數據的緩存區的大小,具體包括 在流媒體播放過程中,根據所述下載速率和播放速率獲得當前緩存區中的緩存變化率,并在所述緩存變化率增長時,增大流媒體數據的緩存區的大小。
14.一種流媒體播放裝置,其特征在于,包括 檢測模塊,用于檢測得到流媒體的下載速率; 調整模塊,用于根據所述下載速率以及流媒體的播放速率,調整流媒體數據的緩存區的大小,其中,所述流媒體數據的緩存區為用于對流媒體數據進行緩存操作的數據存儲空間。
15.根據權利要求14所述的流媒體播放裝置,其特征在于,所述調整模塊,具體用于在所述流媒體初始播放或停頓后重啟播放過程中,所述下載速率大于或等于所述播放速率時,將流媒體數據的緩存區的大小調整到第一緩存長度,以便在所述預設的最小緩存長度的流媒體數據的緩存區滿后開始播放流媒體,所述第一緩存長度為所述當前緩存區中已緩存數據占用的緩存區的長度與預設最小緩存長度中的最大值。
16.根據權利要求15所述的流媒體播放裝置,其特征在于,所述調整模塊,還用于在所述流媒體初始播放或停頓后重啟播放過程中,所述下載速率小于播放速率時,根據所述下載速率和播放速率獲得當前緩存區中的緩存變化率,并根據所述緩存變化率調整所述流媒體數據的緩存區的大小; 其中,所述緩存變化率S (t) =D (t)-K(t),其中,D (t)為流媒體的下載速率,K(t)流媒體的播放速率,所述緩存變化率用于表示緩存區中數據增多或減少的變化量。
17.根據權利要求16所述的流媒體播放裝置,其特征在于,所述調整模塊,具體用于在當前緩存區的緩存變化率增加時,將當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,以便開始播放流媒體。
18.根據權利要求16所述的流媒體播放裝置,其特征在于,所述調整模塊,具體用于在當前緩存區的變化率沒有變化或減少,且所述下載速率的增長率達到預設增長閾值時,將所述當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,以便開始播放流媒體。
19.根據權利要求16所述的流媒體播放裝置,其特征在于,所述調整模塊,具體用于在當前緩存區的變化率沒有變化或減少,且所述下載速率的增長率未達到預設增長閾值或下降時,根據當前緩存區中已緩存的數據的大小,調整所述流媒體數據的緩存區的大小。
20.根據權利要求19所述的流媒體播放裝置,其特征在于,所述調整模塊,具體用于在當前緩存區中已緩存的數據B滿足條件B>=G*(1-D/K)時,將所述當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,以便開始播放流媒體; 其中,所述G為未播放的流媒體的長度,D為下載速率,K為播放速率。
21.根據權利要求20所述的流媒體播放裝置,其特征在于,所述調整模塊,還用于當前緩存區緩存的數據B不滿足條件B>=G*(1-D/K),且G*(l-D/K)不大于流媒體數據的緩存區的最大值時,將所述G* (1-D/K)的長度作為流媒體數據的緩存區的大小,以便在所述流媒體數據的緩存區滿后開始播放流媒體。
22.根據權利要求14所述的流媒體播放裝置,其特征在于,所述調整模塊,還用于在所述流媒體停頓后重啟播放時,若停頓次數大于預設停頓閾值時,增大流媒體數據的緩存區的大小。
23.根據權利要求14-22任一所述的流媒體播放裝置,其特征在于,所述檢測模塊,具體用于在啟動流媒體播放指令,或者停頓后重啟播放開始后的預設時間檢測得到流媒體的下載速率;或者,用于在啟動流媒體播放指令,或者停頓后重啟播放開始后,周期性的檢測得到流媒體的下載速率。
24.根據權利要求14-23任一所述的流媒體播放裝置,其特征在于,還包括 播放指令接收模塊,用于接收流媒體播放指令,并為流媒體播放設定預設大小的流媒體數據存儲空間作為播放流媒體初始的流媒體數據的緩存區。
25.根據權利要求15-24任一所述的流媒體播放裝置,其特征在于,所述調整模塊,還用于在所述流媒體初始播放或停頓后重啟播放過程中,若播放等待時間超過預設等待時間時,將當前緩存區中已緩存數據占用的緩存區作為流媒體數據的緩存區,以便開始播放流媒體。
26.根據權利要求14所述的流媒體播放裝置,其特征在于,所述調整模塊,還用于在流媒體播放過程中,根據所述下載速率和播放速率獲得當前緩存區中的緩存變化率,并在所述緩存變化率增長時,增大流媒體數據的緩存區的大小。
全文摘要
本發明提供一種流媒體播放方法及裝置。該方法包括檢測得到流媒體的下載速率;根據所述下載速率以及流媒體的播放速率,調整流媒體數據的緩存區的大小,其中,所述流媒體數據的緩存區為用于對流媒體數據進行緩存操作的數據存儲空間。本發明技術方案可在流媒體播放時基于流媒體下載速率動態對流媒體數據緩存區的大小進行調整,可有效提高流媒體播放的流暢度。
文檔編號H04N21/442GK103051955SQ20121056241
公開日2013年4月17日 申請日期2012年12月21日 優先權日2012年12月21日
發明者蔣華, 仝清坡 申請人:華為技術有限公司