流媒體播放方法及流媒體播放器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機領(lǐng)域,特別涉及一種流媒體播放方法及流媒體播放器。
【背景技術(shù)】
[0002]隨著移動互聯(lián)網(wǎng)技術(shù)的發(fā)展,越來越多的人開始逐步遠離笨重的電視、電腦,將日常生活中的媒體需求逐步向移動設備遷移。移動終端設備相對于傳統(tǒng)電腦,移動終端有著輕便、便捷等優(yōu)勢。移動流媒體播放技術(shù),廣泛使用于移動終端設備。
[0003]但是,受移動互聯(lián)網(wǎng)的帶寬制約及網(wǎng)絡自身穩(wěn)定性影響,移動終端播放流媒體時常出現(xiàn)丟幀、卡頓等現(xiàn)象,影響用戶觀看體驗。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實施例提供一種流媒體播放方法及流媒體播放器,能夠增強用戶觀看體驗。
[0005]本發(fā)明實施例采用如下技術(shù)方案:
[0006]一種流媒體播放方法,包括:
[0007]接收媒體流;
[0008]從所述媒體流中分離出音頻流,將所述音頻流存入音頻解碼緩存區(qū),對所述音頻解碼緩存區(qū)存儲的音頻流進行解碼,將解碼后的音頻數(shù)據(jù)存入音頻播放緩存區(qū);
[0009]從所述媒體流中分離出視頻流,將所述視頻流存入視頻解碼緩存區(qū),對所述視頻解碼緩存區(qū)存儲的視頻流進行解碼,將解碼后的視頻數(shù)據(jù)存入視頻播放緩存區(qū);
[0010]應用所述音頻播放緩存區(qū)存儲的音頻數(shù)據(jù)及所述視頻播放緩存區(qū)存儲的視頻數(shù)據(jù)進行播放。
[0011]可選的,如果所述音頻緩存區(qū)的存儲量大于第一值,則對所述音頻緩存區(qū)中的音頻流進行音頻解碼;如果所述音頻緩存區(qū)的存儲量大于第二值,則將所述音頻緩存區(qū)清空;其中,所述第一值小于所述第二值。
[0012]可選的,還包括:
[0013]根據(jù)當前正在解碼的音頻幀的時間戳及首幀的時間戳確定當前幀時差,根據(jù)將當前系統(tǒng)時間及首幀時的系統(tǒng)時間確定當前標準時差;
[0014]對所述音頻緩存區(qū)中的音頻流進行音頻解碼時,如果當前幀時差與當前標準時差的差值大于第三值,則將所述音頻緩存區(qū)清空。
[0015]可選的,還包括:
[0016]根據(jù)當前解碼速率與當前幀速率的比較結(jié)果,對所述視頻解碼緩存區(qū)存儲的視頻流進行處理;
[0017]或者,根據(jù)所述視頻解碼緩存區(qū)存儲的數(shù)據(jù)量與當前幀速率的比較結(jié)果,對所述視頻解碼緩存區(qū)存儲的視頻流進行處理。
[0018]可選的,所述根據(jù)當前視頻解碼速率與當前幀速率的比較結(jié)果,對所述視頻解碼緩存區(qū)存儲的視頻流進行處理包括:
[0019]根據(jù)當前正在解碼的音頻幀的時間戳及首幀的時間戳確定當前幀時差,根據(jù)將當前系統(tǒng)時間及首幀時的系統(tǒng)時間確定當前標準時差;
[0020]確定當前幀時差與當前標準時差的差值;
[0021]根據(jù)所述差值及當前解碼速率,對所述視頻解碼緩存區(qū)存儲的視頻流進行處理。
[0022]可選的,根據(jù)公式:實際的休眠時間=(幀時間差-上一幀繪制時間)*休眠系數(shù),確定所述播放緩存區(qū)中相鄰兩幀播放的間隔時間;
[0023]其中,實際的休眠時間為相鄰兩幀播放的間隔時間,上一幀繪制時間為繪制上一幀所用時間,休眠系數(shù)=(最大容錯時間-誤差時間)/最大容錯系數(shù);誤差時間=標準時差-幀時差,最大容錯系數(shù)表示音頻與視頻的最大誤差時間。
[0024]一種流媒體播放器,包括:
[0025]網(wǎng)絡接收模塊,用于接收媒體流;
[0026]音頻分離模塊,用于從所述媒體流中分離出音頻流,將所述音頻流存入音頻解碼緩存區(qū),對所述音頻解碼緩存區(qū)存儲的音頻流進行解碼,將解碼后的音頻數(shù)據(jù)存入音頻播放緩存區(qū);
[0027]視頻分離模塊,用于從所述媒體流中分離出視頻流,將所述視頻流存入視頻解碼緩存區(qū),對所述視頻解碼緩存區(qū)存儲的視頻流進行解碼,將解碼后的視頻數(shù)據(jù)存入視頻播放緩存區(qū);
[0028]播放模塊,用于應用所述音頻播放緩存區(qū)存儲的音頻數(shù)據(jù)及所述視頻播放緩存區(qū)存儲的視頻數(shù)據(jù)進行播放。
[0029]可選的,還包括:
[0030]第一控制模塊,用于如果所述音頻緩存區(qū)的存儲量大于第一值,則對所述音頻緩存區(qū)中的音頻流進行音頻解碼;如果所述音頻緩存區(qū)的存儲量大于第二值,則將所述音頻緩存區(qū)清空;其中,所述第一值小于所述第二值;
[0031 ] 第二控制模塊,用于根據(jù)當前正在解碼的音頻幀的時間戳及首幀的時間戳確定當前幀時差,根據(jù)將當前系統(tǒng)時間及首幀時的系統(tǒng)時間確定當前標準時差;對所述音頻緩存區(qū)中的音頻流進行音頻解碼時,如果當前幀時差與當前標準時差的差值大于第三值,則將所述音頻緩存區(qū)清空。
[0032]可選的,還包括:
[0033]第三控制模塊,用于根據(jù)當前解碼速率與當前幀速率的比較結(jié)果,對所述視頻解碼緩存區(qū)存儲的視頻流進行處理;
[0034]或者,所述第三控制模塊,用于根據(jù)所述視頻解碼緩存區(qū)存儲的數(shù)據(jù)量與當前幀速率的比較結(jié)果,對所述視頻解碼緩存區(qū)存儲的視頻流進行處理。
[0035]可選的,所述播放模塊根據(jù)公式:實際的休眠時間=(幀時間差-上一幀繪制時間)*休眠系數(shù),確定所述播放緩存區(qū)中相鄰兩幀播放的間隔時間;
[0036]其中,實際的休眠時間為相鄰兩幀播放的間隔時間,上一幀繪制時間為繪制上一幀所用時間,休眠系數(shù)=(最大容錯時間-誤差時間)/最大容錯系數(shù);誤差時間=標準時差-幀時差,最大容錯系數(shù)表示音頻與視頻的最大誤差時間。
[0037]基于上述技術(shù)方案,本發(fā)明實施例的流媒體播放方法及流媒體播放器,將音頻流存入音頻解碼緩存區(qū),將視頻流存入視頻解碼緩存區(qū),并將解碼后的音頻流存入音頻播放緩存區(qū),將解碼后的視頻流存入視頻播放緩存區(qū),應用音頻播放緩存區(qū)存儲的音頻數(shù)據(jù)及視頻播放緩存區(qū)存儲的視頻數(shù)據(jù)進行播放。這樣可以減小移動互聯(lián)網(wǎng)的帶寬制約及網(wǎng)絡自身穩(wěn)定性造成的減少丟幀、卡頓等現(xiàn)象,從而影響用戶觀看體驗。
【附圖說明】
[0038]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0039]圖1為本發(fā)明實施例1提供的一種流媒體播放方法的流程圖;
[0040]圖2為本發(fā)明實施例2提供的一種流媒體播放方法的流程圖;
[0041]圖3為本發(fā)明實施例3提供的一種流媒體播放器的結(jié)構(gòu)示意圖;
[0042]圖4為本發(fā)明實施例3提供的另一種流媒體播放器的結(jié)構(gòu)示意圖。
【具體實施方式】
[0043]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0044]實施例1
[0045]如圖1所示,本實施例提供一種流媒體播放方法,該方法可以由流媒體播放器實現(xiàn),該方法包括:
[0046]11、接收媒體流。
[0047]具體地,流媒體播放器可以接收頭端設備或流媒體服務器發(fā)送的媒體流。
[0048]12、從所述媒體流中分離出音頻流,將所述音頻流存入音頻解碼緩存區(qū),對所述音頻解碼緩存區(qū)存儲的音頻流進行解碼,將解碼后的音頻數(shù)據(jù)存入音頻播放緩存區(qū)。
[0049]13、從所述媒體流中分離出視頻流,將所述視頻流存入視頻解碼緩存區(qū),對所述視頻解碼緩存區(qū)存儲的視頻流進行解碼,將解碼后的視頻數(shù)據(jù)存入視頻播放緩存區(qū)。
[0050]14、應用所述音頻播放緩存區(qū)存儲的音頻數(shù)據(jù)及所述視頻播放緩存區(qū)存儲的視頻數(shù)據(jù)進行播放。
[0051]本實施例中上述12、13可以變換執(zhí)行順序,也可以同時執(zhí)行。
[0052]本實施例的方法,將音頻流存入音頻解碼緩存區(qū),將視頻流存入視頻解碼緩存區(qū),并將解碼后的音頻流存入音頻播放緩存區(qū),將解碼后的視頻流存入視