一種http協(xié)議的緩存狀態(tài)更新方法和設(shè)備、處理機(jī)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信傳輸技術(shù),尤其涉及一種一種HTTP協(xié)議的緩存狀態(tài)更新方法和設(shè)備、處理機(jī)。
【背景技術(shù)】
[0002]在互聯(lián)網(wǎng)協(xié)議(Internet Protocol,簡(jiǎn)稱為IP)網(wǎng)絡(luò)的音視頻應(yīng)用中,為了平滑網(wǎng)絡(luò)傳輸帶來(lái)的影響及實(shí)現(xiàn)收發(fā)端的同步播放,收端需要把接收到的音視頻數(shù)據(jù)暫存于緩存中,以保證音視頻數(shù)據(jù)在通過IP網(wǎng)絡(luò)傳輸后仍能連續(xù)播放。緩存的設(shè)計(jì)需要綜合考慮緩存帶來(lái)的延遲和丟包,緩存過小可能引起過多的丟包,緩存過大可能造成播放的延遲過大,由此可見,收端的緩存狀態(tài)會(huì)直接影響音視頻的播放質(zhì)量,因此,通過估計(jì)緩存的狀態(tài)對(duì)音視頻的播放質(zhì)量進(jìn)行評(píng)估等變得尤為重要。
[0003]現(xiàn)有技術(shù)主要是針對(duì)實(shí)時(shí)傳輸協(xié)議(Real-time Transport Protocol,簡(jiǎn)稱為RTP)/用戶數(shù)據(jù)包協(xié)議(User Datagram Protocol,簡(jiǎn)稱為UDP)場(chǎng)景下的緩存進(jìn)行建模,以便于通過估計(jì)緩存的狀態(tài)對(duì)音視頻的播放質(zhì)量進(jìn)行評(píng)估等操作。目前,基于傳輸控制協(xié)議(Transmiss1n Control Protocol,簡(jiǎn)稱為TCP)的音視頻應(yīng)用越來(lái)越多。
[0004]當(dāng)前IP網(wǎng)絡(luò)中的音視頻應(yīng)用都會(huì)在接收端使用緩存,緩存可以在很大程度上平滑網(wǎng)絡(luò)抖動(dòng)對(duì)應(yīng)用的影響,繼而緩存的表現(xiàn)可以反應(yīng)這些應(yīng)用的端到端性能。
[0005]為了平滑網(wǎng)絡(luò)傳輸帶來(lái)的影響和同步發(fā)端和收端的播放,收端需要把接收到的數(shù)據(jù)暫存在緩存中。緩存的主要作用是計(jì)算網(wǎng)絡(luò)的抖動(dòng),按照解碼的需要,提供音視頻數(shù)據(jù)。這樣的緩存被稱為抖動(dòng)緩存(de-jitter buffer),保證音視頻在通過網(wǎng)絡(luò)傳輸后仍能夠連續(xù)播放。de-jitter buffer的設(shè)計(jì)需要綜合考慮緩存帶來(lái)的延遲和丟包,緩存過小可能引起過多的丟包,太大可能造成播放延遲過大。
[0006]終端緩沖狀態(tài)直接影響主觀質(zhì)量評(píng)估的結(jié)果,對(duì)各種緩存建模是主觀質(zhì)量評(píng)估必不可少的步驟。
[0007]緩存事件,例如拖動(dòng)、暫停、重新播放、碼流切換,會(huì)直接影響緩沖狀態(tài),為了準(zhǔn)確更新緩存狀態(tài),必須準(zhǔn)確的確定緩存事件。
[0008]現(xiàn)有技術(shù)中,通過對(duì)音頻/視頻數(shù)據(jù)流和顯示時(shí)間標(biāo)簽(Presentat1n TimeStamp,PTS)實(shí)現(xiàn)緩存事件的判斷;如果沒有新的音頻/視頻數(shù)據(jù)流到達(dá),則發(fā)生暫停;在發(fā)生暫停后,有新的音頻/視頻數(shù)據(jù)流到達(dá),則發(fā)生重新播放;如果音頻/視頻數(shù)據(jù)流的PTS發(fā)生跳變,則發(fā)生拖動(dòng)。
[0009]現(xiàn)有方法通過對(duì)音頻/視頻數(shù)據(jù)流和PTS判斷緩存事件,需要解析媒體文件得到PTS,在某些情況下,如數(shù)據(jù)加密,海量用戶并發(fā),無(wú)法實(shí)現(xiàn)或者很難實(shí)時(shí)實(shí)現(xiàn)。
【發(fā)明內(nèi)容】
[0010]有鑒與此,為解決上述問題,本發(fā)明的實(shí)施例提供了一種基于超文本傳輸協(xié)議(HyperText Transfer Protocol,HTTP)的緩存狀態(tài)更新方法。根據(jù)本發(fā)明實(shí)施例的緩存狀態(tài)更新方法,通過只分析HTTP協(xié)議字段的方式實(shí)現(xiàn)了基于緩存事件的對(duì)緩存狀態(tài)的確定,使得緩存模型更加接近真實(shí)的客戶端緩存情況。
[0011]本發(fā)明第一方面的實(shí)施例公開了一種基于超文本傳輸協(xié)議(HyperText TransferProtocol, HTTP)的緩存狀態(tài)更新方法,所述方法包括:
[0012]接收來(lái)自終端的HTTP請(qǐng)求,根據(jù)所述HTTP請(qǐng)求觸發(fā)緩存事件,所述緩存事件包括拖動(dòng)、暫停、重新播放、碼流切換;
[0013]根據(jù)所述緩存事件,更新緩存狀態(tài),其中,所述緩存狀態(tài)包括正常播放狀態(tài)、停止播放狀態(tài)、再緩沖狀態(tài)、碼流切換狀態(tài)。
[0014]根據(jù)本發(fā)明實(shí)施例的緩存狀態(tài)更新方法,通過只分析HTTP協(xié)議字段的方式實(shí)現(xiàn)了基于緩存事件的對(duì)緩存狀態(tài)的更新,使得緩存模型更加接近真實(shí)的客戶端緩存情況。
[0015]結(jié)合本發(fā)明第一方面實(shí)施例的本發(fā)明第一方面實(shí)施例第一種可能實(shí)現(xiàn)的方式中,所述接收來(lái)自終端的HTTP請(qǐng)求,根據(jù)所述HTTP請(qǐng)求觸發(fā)緩存事件,具體包括:
[0016]接收來(lái)自終端的當(dāng)前GET請(qǐng)求,其中,接收所述當(dāng)前GET請(qǐng)求的時(shí)間為t ;
[0017]若在以t為起始的預(yù)設(shè)時(shí)間內(nèi)沒有接收到來(lái)自所述終端的后一 GET請(qǐng)求,則觸發(fā)所述暫停;
[0018]相應(yīng)的,所述根據(jù)所述緩存事件,更新緩存狀態(tài)具體包括:
[0019]根據(jù)所述暫停,將所述緩存狀態(tài)設(shè)為所述停止播放狀態(tài)。
[0020]結(jié)合本發(fā)明第一方面實(shí)施例第一種可能實(shí)現(xiàn)的方式的本發(fā)明第一方面實(shí)施例第二種可能實(shí)現(xiàn)的方式中,在所述觸發(fā)暫停之后,如果接收到來(lái)自所述終端的后一 GET請(qǐng)求,所述方法還包括:
[0021 ] 根據(jù)所述后一 GET請(qǐng)求觸發(fā)所述重新播放;
[0022]根據(jù)所述重新播放,將所述緩存狀態(tài)設(shè)為所述正常播放狀態(tài)。
[0023]結(jié)合本發(fā)明第一方面實(shí)施例第二種可能實(shí)現(xiàn)的方式的本發(fā)明第一方面實(shí)施例第三種可能實(shí)現(xiàn)的方式中,所述當(dāng)前GET請(qǐng)求中包括當(dāng)前碼流指示符,所述后一 GET請(qǐng)求中包括后一碼流指示符;
[0024]若所述當(dāng)前碼流指示符和所述后一碼流指示符不同,在接收到來(lái)自所述終端的后一 GET請(qǐng)求后,所述方法還包括:
[0025]觸發(fā)所述碼流切換;
[0026]根據(jù)所述碼流切換,將所述緩存狀態(tài)設(shè)為所述碼流切換狀態(tài)。
[0027]結(jié)合本發(fā)明第一方面實(shí)施例上述任一種可能實(shí)現(xiàn)的方式的本發(fā)明第一方面實(shí)施例第四種可能實(shí)現(xiàn)的方式中,所述方法還包括:
[0028]根據(jù)所述當(dāng)前GET請(qǐng)求中的關(guān)鍵字,確定是否觸發(fā)所述拖動(dòng);
[0029]若確定觸發(fā)所述拖動(dòng),則根據(jù)所述拖動(dòng),將所述緩存狀態(tài)設(shè)為所述再緩沖狀態(tài)。
[0030]結(jié)合本發(fā)明第一方面實(shí)施例第四種可能實(shí)現(xiàn)的方式的本發(fā)明第一方面實(shí)施例第五種可能實(shí)現(xiàn)的方式中,所述根據(jù)所述當(dāng)前GET請(qǐng)求中的關(guān)鍵字,確定是否觸發(fā)所述拖動(dòng),具體包括:
[0031]若所述當(dāng)前GET請(qǐng)求中的rang值與來(lái)自所述終端的前一 GET請(qǐng)求的range值的差大于預(yù)設(shè)閾值,則觸發(fā)所述拖動(dòng)。
[0032]結(jié)合本發(fā)明第一方面實(shí)施例第四種可能實(shí)現(xiàn)的方式的本發(fā)明第一方面實(shí)施例第六種可能實(shí)現(xiàn)的方式中,所述根據(jù)所述當(dāng)前GET請(qǐng)求中的關(guān)鍵字,確定是否觸發(fā)所述拖動(dòng),具體包括:
[0033]若所述當(dāng)前GET請(qǐng)求中的ts_start值與來(lái)自所述終端的前一 GET請(qǐng)求的ts_start值差大于預(yù)設(shè)閾值且所述當(dāng)前GET請(qǐng)求中的ts_end值與來(lái)自所述終端的前一 GET請(qǐng)求的ts_end值的差大于所述預(yù)設(shè)閾值,則觸發(fā)所述拖動(dòng)。
[0034]結(jié)合本發(fā)明第一方面實(shí)施例第四種可能實(shí)現(xiàn)的方式的本發(fā)明第一方面實(shí)施例第七種可能實(shí)現(xiàn)的方式中,所述根據(jù)所述當(dāng)前GET請(qǐng)求中的關(guān)鍵字,確定是否觸發(fā)所述拖動(dòng),具體包括:
[0035]若所述當(dāng)前GET請(qǐng)求中的begin值與來(lái)自所述終端的前一 GET請(qǐng)求的begin值的差大于預(yù)設(shè)閾值,則觸發(fā)所述拖動(dòng)。
[0036]結(jié)合本發(fā)明第一方面實(shí)施例的本發(fā)明第一方面實(shí)施例第八種可能實(shí)現(xiàn)的方式中,
[0037]所述接收來(lái)自終端的HTTP請(qǐng)求,根據(jù)所述HTTP請(qǐng)求觸發(fā)緩存事件,具體包括:
[0038]接收來(lái)自所述終端的第一 GET請(qǐng)求,根據(jù)所述第一 GET請(qǐng)求中的關(guān)鍵字,觸發(fā)所述拖動(dòng);
[0039]相應(yīng)的,所述根據(jù)所述緩存事件,更新緩存狀態(tài)具體包括:
[0040]根據(jù)所述拖動(dòng),將所述緩存狀態(tài)設(shè)為所述再緩沖狀態(tài)。
[0041]結(jié)合本發(fā)明第一方面實(shí)施例的本發(fā)明第一方面實(shí)施例第九種可能實(shí)現(xiàn)的方式中,
[0042]所述接收來(lái)自終端的HTTP請(qǐng)求,根據(jù)所述HTTP請(qǐng)求觸發(fā)緩存事件,具體包括:
[0043]接收來(lái)自所述終端的第二 GET請(qǐng)求,根據(jù)所述第二 GET請(qǐng)求觸發(fā)所述重新播放;
[0044]相應(yīng)的,所述根據(jù)所述緩存事件,更新緩存狀態(tài)具體包括:
[0045]根據(jù)所述重新播放,將所述緩存狀態(tài)設(shè)為所述正常播放狀態(tài)。
[0046]結(jié)合本發(fā)明第一方面實(shí)施例的本發(fā)明第一方面實(shí)施例第十種可能實(shí)現(xiàn)的方式中,
[0047]所述接收來(lái)自終端的HTTP請(qǐng)求,根據(jù)所述HTTP請(qǐng)求觸發(fā)緩存事件,具體包括:
[0048]接收來(lái)自所述終端的第三GET請(qǐng)求,所述第三請(qǐng)求包括碼流指示符;
[0049]若所述碼流指示符與來(lái)自所述終端的前一碼流指示符不同,則觸發(fā)所述碼流切換;
[0050]相應(yīng)的,所述根據(jù)所述緩存事件,更新緩存狀態(tài)具體包括:
[0051]根據(jù)所述碼流切換,將所述緩存狀態(tài)設(shè)為所述碼流切換狀態(tài)。
[0052]本發(fā)明第二方面的實(shí)施例公開了一種基于超文本傳輸協(xié)議(HyperText TransferProtocol, HTTP)的緩存狀態(tài)更新設(shè)備,所述設(shè)備包括:接收模塊,用于接收來(lái)自終端的HTTP請(qǐng)求;觸發(fā)模塊,用于根據(jù)所述HTTP請(qǐng)求觸發(fā)緩存事件;緩存狀態(tài)模塊,用于根據(jù)所述緩存事件,更新緩存狀態(tài);其中,所述緩存事件包括拖動(dòng)、暫停、重新播放、碼流切換,所述緩存狀態(tài)包括正常播放狀態(tài)、停止播放狀態(tài)、再緩沖狀態(tài)、碼流切換狀態(tài)。
[0053]根據(jù)本發(fā)明實(shí)施例的緩存狀態(tài)更新設(shè)備,通過只分析HTTP協(xié)議字段的方式實(shí)現(xiàn)了基于緩存事件的對(duì)緩存狀態(tài)的更新,使得緩存模型更加接近真實(shí)的客戶端緩存情況。
[0054]結(jié)合本發(fā)明第二方面實(shí)施例的本發(fā)明第二方面實(shí)施例第一種可能實(shí)現(xiàn)的方式中,所述接收模塊具體用于接收來(lái)自所述終端的當(dāng)前GET請(qǐng)求,其中,接收所述當(dāng)前GET請(qǐng)求的時(shí)間為t ;
[0055]所述觸發(fā)模塊具體用于在以t為起始的預(yù)設(shè)時(shí)間內(nèi)沒有接收到來(lái)自所述終端的后一 GET請(qǐng)求時(shí),觸發(fā)暫停;
[0056]所述緩存狀態(tài)模塊具體用于根據(jù)所述暫停,將緩存狀態(tài)設(shè)為停止播放狀態(tài)。
[0057]結(jié)合本發(fā)明第二方面實(shí)施例第一種可能實(shí)現(xiàn)的方式的本發(fā)明第二方面實(shí)施例第二種可能實(shí)現(xiàn)的方式中,所述接收模塊還用于接收所述后一 GET請(qǐng)求;相應(yīng)的,所述觸發(fā)模塊還用于根據(jù)所述后一 GET請(qǐng)求觸發(fā)所述重新播放;所述緩存狀態(tài)模塊還用于根據(jù)所述重新播放,將所述緩存狀態(tài)設(shè)為正常播放狀態(tài)。
[0058]結(jié)合本發(fā)明第二方面實(shí)施例第一種可能實(shí)現(xiàn)的方式或本發(fā)明第二方面實(shí)施例第二種可能實(shí)現(xiàn)的方式的本發(fā)明第二方面實(shí)施例第三種可能實(shí)現(xiàn)的方式中,所述觸發(fā)模塊還用于觸發(fā)所述碼流切換,所述緩存狀態(tài)模塊還用于根據(jù)所述碼流切換,將所述緩存狀態(tài)設(shè)為碼流切換狀態(tài)。
[0059]結(jié)合本發(fā)明第二方面實(shí)施例上述任一種可能實(shí)現(xiàn)的方式的本發(fā)明第二方面實(shí)施例第四種可能實(shí)現(xiàn)的方式中,所述觸發(fā)模塊還用于根據(jù)所述當(dāng)前GET請(qǐng)求中的關(guān)鍵字,觸發(fā)所述拖動(dòng);所述緩存狀態(tài)模塊還用于根據(jù)所述拖動(dòng),將所述緩存狀態(tài)設(shè)為再緩沖狀態(tài)。
[0060]結(jié)合本發(fā)明第二方面實(shí)施例的本發(fā)明第二方面實(shí)施例第五種可能實(shí)現(xiàn)的方式中,
[0061]所述接收模塊具體用于接收來(lái)自所述終端的第四GET請(qǐng)求;
[0062]所述觸發(fā)模塊具體用于根據(jù)所述第四GET請(qǐng)求中的關(guān)鍵字,觸發(fā)所述拖動(dòng);
[0063]所述緩存狀態(tài)模塊具體用于根據(jù)所述拖動(dòng),將所述緩存狀態(tài)設(shè)為再緩沖狀態(tài)。
[0064]結(jié)合本發(fā)明第二方面實(shí)施例的本發(fā)明第二方面實(shí)施例第六種可能實(shí)現(xiàn)的方式中,
[0065]所述接收模塊具體用于接收來(lái)自所述終端的第五GET請(qǐng)求;
[0066]所述觸發(fā)模塊具體用于根據(jù)所述第五GET請(qǐng)求觸發(fā)所述重新播放;
[0067]所述緩存狀態(tài)模塊具體用于根據(jù)所述重新播放,將所述緩存狀態(tài)設(shè)為所述正常播放狀態(tài)。
[0068]結(jié)合本發(fā)明第二方面實(shí)施例的本發(fā)明第二方面實(shí)施例第七種可能實(shí)現(xiàn)的方式中,
[0069]所述接收模塊具體用于來(lái)自所述終端的第六GET請(qǐng)求,所述第六請(qǐng)求包括碼流指示符;
[0070]所述觸發(fā)模塊具體用于根據(jù)所述碼流指示符,觸發(fā)所述碼流切換;
[0071]所述緩存狀態(tài)模塊具體用于根據(jù)所述碼流切換,將所述緩存狀態(tài)設(shè)為所述碼流切換狀態(tài)。
[0072]本發(fā)明第三方面的實(shí)施例公開了一種基于超文本傳輸協(xié)議(HyperText TransferProtocoI,HTTP)的緩存狀態(tài)處理機(jī),其中,緩存事件包括拖動(dòng)、暫停、重新播放和碼流切換,緩存狀態(tài)包括再緩沖狀態(tài)、正常播放狀態(tài)、停止播放狀態(tài)和碼流切換狀態(tài),所述緩存狀態(tài)處理機(jī)用于:
[0073]獲得所述緩存事件;
[0074]當(dāng)所述緩存事件為暫停時(shí),進(jìn)入停止播放狀態(tài),
[0075]當(dāng)所述緩存事件為重新播放時(shí),進(jìn)入正常播放狀態(tài),
[0076]當(dāng)所述緩存事件為拖動(dòng)時(shí),進(jìn)入再緩沖狀態(tài),
[0077]當(dāng)所述事件為碼流切換時(shí),進(jìn)入碼流切換狀態(tài)。
[0078]根據(jù)本發(fā)明實(shí)施例的緩存狀態(tài)處理機(jī),通過只分析HTTP協(xié)議字段的方式實(shí)現(xiàn)了基于緩存事件的對(duì)緩存狀態(tài)的更新,使得緩存模型更加接近真實(shí)的客戶端緩存情況。
【附圖說(shuō)明】
[0079]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描