本發(fā)明涉及視頻流傳輸領(lǐng)域,具體涉及一種在彈幕視頻流傳輸過(guò)程中的丟包方法及運(yùn)用該方法的裝置。
背景技術(shù):
基于瀏覽器的實(shí)時(shí)通信(rtcweb,real-timecommunicationsweb)是一種運(yùn)行在瀏覽器上的web應(yīng)用,其通過(guò)調(diào)用瀏覽器提供的應(yīng)用程序編程接口,可以實(shí)現(xiàn)在不同終端之間建立實(shí)時(shí)通信連接,從而進(jìn)行媒體流(包括音頻數(shù)據(jù)流和/或視頻數(shù)據(jù)流)的傳輸。實(shí)時(shí)通信的特點(diǎn)是:媒體面和終端的本地控制由運(yùn)行在終端上的瀏覽器實(shí)現(xiàn),而信令面則由嵌入web頁(yè)面的腳本程序(例如java腳本程序)實(shí)現(xiàn)。具體地,基于瀏覽器和腳本程序?qū)崿F(xiàn)在不同終端之間建立媒體流傳輸信道的過(guò)程具體為:運(yùn)行在終端上的瀏覽器根據(jù)用戶輸入的實(shí)時(shí)通信服務(wù)網(wǎng)站url,從相應(yīng)的服務(wù)器上下載頁(yè)面數(shù)據(jù)(該頁(yè)面數(shù)據(jù)包含腳本程序)并將相應(yīng)的頁(yè)面呈現(xiàn)給用戶;傳統(tǒng)的彈幕數(shù)據(jù)即以xml文本數(shù)據(jù)被存至頁(yè)面腳本程序中,由各個(gè)終端的腳本程序讀取,以畫(huà)面分層的視覺(jué)效果呈現(xiàn)在頁(yè)面或視頻中。
在應(yīng)用高級(jí)彈幕,如圖片彈幕,代碼彈幕以及其他復(fù)雜彈幕時(shí),由于數(shù)據(jù)量較大,單獨(dú)加載彈幕數(shù)據(jù)流會(huì)造成與原視頻的音畫(huà)不同步,或卡頓和跳幀現(xiàn)象,觀感較差。專(zhuān)利cn106231363a提出一種彈幕視頻流傳輸方法及其設(shè)備,將彈幕數(shù)據(jù)流整合進(jìn)視頻音畫(huà)數(shù)據(jù)之間,解碼時(shí)只需解碼一條數(shù)據(jù)流,節(jié)約解碼所需寬帶;而彈幕數(shù)據(jù)直接嵌入音畫(huà)數(shù)據(jù)之間,在播放器預(yù)加載時(shí),直接加載當(dāng)前時(shí)段的彈幕數(shù)據(jù),彈幕流暢且與畫(huà)面吻合度高;但是該整合彈幕數(shù)據(jù)的傳輸包相較于未整合的傳輸包總的數(shù)量更大,傳輸負(fù)荷加重。
此外,現(xiàn)有的tcp(realtimetransportprotocol,實(shí)時(shí)傳輸協(xié)議),丟棄報(bào)文將會(huì)導(dǎo)致接收端請(qǐng)求對(duì)丟失的報(bào)文進(jìn)行重傳,然而這種機(jī)制對(duì)于音頻或視頻的實(shí)時(shí)流進(jìn)行播放的網(wǎng)絡(luò)具有較大的弊端,由于接收端的緩沖器空間有限,對(duì)于實(shí)時(shí)性高的業(yè)務(wù)沒(méi)有足夠的時(shí)間用于請(qǐng)求和接收重傳的分組。在iptv的視頻傳輸中,傳統(tǒng)的網(wǎng)絡(luò)設(shè)備擁塞處理時(shí)采用的是隨即丟棄,導(dǎo)致不同的iptv數(shù)據(jù)包對(duì)終端接收端畫(huà)面造成不同程度的影響。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提出一種在彈幕視頻流傳輸過(guò)程中的丟包方法,該方法實(shí)現(xiàn)對(duì)視頻流進(jìn)行選擇性丟包(彈幕數(shù)據(jù)包優(yōu)先丟棄),在設(shè)定范圍內(nèi)的丟包事件中,即便是不重傳也不影響觀眾對(duì)視頻觀看質(zhì)量的要求。該彈幕視頻流傳輸下的播放器終端播放時(shí),還具有彈幕流暢且與畫(huà)面、音頻匹配度高的優(yōu)點(diǎn)。
為實(shí)現(xiàn)上述目的,本發(fā)明所采用的技術(shù)方案是一種在彈幕視頻流傳輸過(guò)程中的丟包方法,至少包括:
流媒體服務(wù)器整合彈幕數(shù)據(jù)包至彈幕視頻流傳輸?shù)膖s傳輸包中;
將所述數(shù)據(jù)包進(jìn)行傳輸,統(tǒng)計(jì)彈幕數(shù)據(jù)包的在當(dāng)前節(jié)點(diǎn)緩存隊(duì)列長(zhǎng)度中的個(gè)數(shù)n總;
發(fā)生擁塞時(shí),從流傳輸中節(jié)點(diǎn)緩存隊(duì)列的彈幕數(shù)據(jù)包的個(gè)數(shù)n總中優(yōu)先選擇丟包個(gè)數(shù)n進(jìn)行丟包;
根據(jù)丟包個(gè)數(shù)n及其類(lèi)型判斷是否發(fā)生重傳。
進(jìn)一步地,所述整合彈幕數(shù)據(jù)至彈幕視頻流傳輸?shù)臄?shù)據(jù)包中的方法包括:
服務(wù)器接收實(shí)時(shí)采集的帶屬性的彈幕數(shù)據(jù),所述帶屬性的彈幕數(shù)據(jù)的屬性包括彈幕的節(jié)目標(biāo)識(shí)、起止標(biāo)識(shí)以及時(shí)間標(biāo)識(shí);
服務(wù)器解碼所述彈幕數(shù)據(jù),識(shí)別彈幕節(jié)目標(biāo)識(shí)后,將彈幕數(shù)據(jù)和對(duì)應(yīng)節(jié)目的傳輸內(nèi)容進(jìn)行打包至視頻數(shù)據(jù)包中。
本發(fā)明的一個(gè)優(yōu)選技術(shù)方案中,所述將彈幕數(shù)據(jù)和對(duì)應(yīng)節(jié)目的傳輸內(nèi)容進(jìn)行打包至視頻數(shù)據(jù)包具體為:
對(duì)應(yīng)節(jié)目傳輸內(nèi)容包括已編碼的視頻內(nèi)容和音頻內(nèi)容,將編碼后的視頻內(nèi)容、音頻內(nèi)容以及彈幕數(shù)據(jù)依據(jù)屬性整合到同一連續(xù)的ts傳輸包中;
將視頻ts包和音頻ts包,以及在再次編碼的彈幕數(shù)據(jù)ts包在該傳輸包中進(jìn)行不同的pid標(biāo)識(shí);使用cc字段對(duì)每個(gè)以pid字段為索引的ts包序列進(jìn)行連續(xù)性計(jì)數(shù),其中彈幕數(shù)據(jù)對(duì)應(yīng)的cc字段為(n1、n2…nn),將該ts傳輸包標(biāo)識(shí)為候選丟包對(duì)象。
在另一個(gè)改進(jìn)的技術(shù)方案中,所述從流傳輸中節(jié)點(diǎn)緩存隊(duì)列的數(shù)據(jù)包的個(gè)數(shù)n總中優(yōu)先選擇丟包個(gè)數(shù)的具體方法為:
調(diào)用隨機(jī)函數(shù)計(jì)算得到cc字段中[n1,nn]的隨機(jī)數(shù),并丟棄隨機(jī)數(shù)位置的數(shù)據(jù)包。
又一個(gè)改進(jìn)方案中,所述根據(jù)丟包個(gè)數(shù)n及其類(lèi)型判斷是否發(fā)生重傳的具體方法為:
依據(jù)視頻ts包、音頻ts包以及彈幕數(shù)據(jù)ts包的不同pid標(biāo)識(shí),判斷丟包個(gè)數(shù)n中含有的視頻ts包個(gè)數(shù)ni、音頻ts包個(gè)數(shù)nj以及彈幕數(shù)據(jù)ts包個(gè)數(shù)nk,判斷傳輸狀態(tài)且采取相應(yīng)動(dòng)作;
當(dāng)ni=0、nj=0且n=nk時(shí),判斷為滿載或輕載,不發(fā)生重傳事件;
當(dāng)n≥1和/或nj≥1,且nk=n總時(shí),判斷為超載,下調(diào)碼率,且發(fā)生重傳事件;
當(dāng)n≥1和/或nj≥1,且nk<n總時(shí),不調(diào)節(jié)碼率,發(fā)生重傳。
所述方法還包括,在n≥1和/或nj≥1,且nk<n總情況時(shí),依據(jù)視頻ts包、音頻ts包以及彈幕數(shù)據(jù)ts包的不同pid標(biāo)識(shí)進(jìn)行一次誤判檢測(cè),得出結(jié)果,并依據(jù)該結(jié)果重新判斷是否發(fā)生重傳事件。
其中上述方案中所述統(tǒng)計(jì)彈幕數(shù)據(jù)包的在當(dāng)前節(jié)點(diǎn)緩存隊(duì)列長(zhǎng)度中的個(gè)數(shù)n總具體為,在當(dāng)前節(jié)點(diǎn)緩存隊(duì)列長(zhǎng)度中,依據(jù)所述彈幕數(shù)據(jù)包的pid標(biāo)識(shí)進(jìn)行統(tǒng)計(jì),獲得彈幕數(shù)據(jù)包總的個(gè)數(shù)n總。
本發(fā)明另一方面還公開(kāi)了一種在彈幕視頻流傳輸過(guò)程中的丟包裝置,其特征在于,所述裝置包括流媒體服務(wù)器端、傳輸模塊以及播放器終端;
所述流媒體服務(wù)器端包括彈幕整合單元,用于整合彈幕數(shù)據(jù)包至彈幕視頻流傳輸?shù)膖s傳輸包中;
所述傳輸模塊接收流媒體服務(wù)器端的ts傳輸包,并傳輸至播放器終端進(jìn)行播放,所述傳輸模塊包括:
統(tǒng)計(jì)單元,用于統(tǒng)計(jì)彈幕數(shù)據(jù)包的在當(dāng)前節(jié)點(diǎn)緩存隊(duì)列長(zhǎng)度中的個(gè)數(shù)n總;
丟包單元,用于從流傳輸中節(jié)點(diǎn)緩存隊(duì)列的彈幕數(shù)據(jù)包的個(gè)數(shù)n總中優(yōu)先選擇丟包個(gè)數(shù)n進(jìn)行丟包;
重傳評(píng)估單元,用于根據(jù)丟包個(gè)數(shù)n及其類(lèi)型判斷是否發(fā)生重傳。
在一個(gè)具體的優(yōu)選技術(shù)方案中,所述流媒體服務(wù)器端還包括
采集單元,用于采集公網(wǎng)服務(wù)端的帶屬性的彈幕信息;
解碼單元,對(duì)采集的彈幕信息進(jìn)行解碼識(shí)別其中屬性;
標(biāo)識(shí)單元,依據(jù)屬性中彈幕節(jié)目標(biāo)識(shí)將彈幕數(shù)據(jù)和對(duì)應(yīng)節(jié)目的傳輸內(nèi)容進(jìn)行編碼后整合至視頻數(shù)據(jù)包中,其中編碼后的視頻ts包和音頻ts包,以及再次編碼的彈幕數(shù)據(jù)ts包在該傳輸包中進(jìn)行不同的pid標(biāo)識(shí);其中,使用cc字段對(duì)每個(gè)以pid字段為索引的ts包序列進(jìn)行連續(xù)性計(jì)數(shù),所述彈幕數(shù)據(jù)對(duì)應(yīng)的cc字段為(n1、n2…nn);
所述統(tǒng)計(jì)單元還用于統(tǒng)計(jì)視頻ts包、音頻ts包在當(dāng)前節(jié)點(diǎn)緩存隊(duì)列長(zhǎng)度中的個(gè)數(shù)ni和nj;
所述丟包單元中的丟包方法為:
依據(jù)視頻ts包、音頻ts包以及彈幕數(shù)據(jù)ts包的不同pid標(biāo)識(shí),判斷丟包個(gè)數(shù)n中含有的視頻ts包個(gè)數(shù)ni、音頻ts包個(gè)數(shù)nj以及彈幕數(shù)據(jù)ts包個(gè)數(shù)nk,判斷傳輸狀態(tài)且采取相應(yīng)動(dòng)作;
當(dāng)ni=0、nj=0且n=nk時(shí),判斷為滿載或輕載,不發(fā)生重傳事件;
當(dāng)n≥1和/或nj≥1,且nk=n總時(shí),判斷為超載,下調(diào)碼率,且發(fā)生重傳事件;
當(dāng)n≥1和/或nj≥1,且nk<n總時(shí),不調(diào)節(jié)碼率,發(fā)生重傳。
再一個(gè)改進(jìn)的技術(shù)方案中,所述傳輸模塊中還包括檢測(cè)單元,用于在n≥1和/或nj≥1,且nk<n總情況時(shí),依據(jù)視頻ts包、音頻ts包以及彈幕數(shù)據(jù)ts包的不同pid標(biāo)識(shí)進(jìn)行一次誤判檢測(cè),得出結(jié)果,并依據(jù)該結(jié)果重新判斷是否發(fā)生重傳事件。
本發(fā)明在彈幕視頻流傳輸過(guò)程中的丟包方法中,在流傳輸過(guò)程中發(fā)生擁塞時(shí),通過(guò)優(yōu)選丟棄彈幕數(shù)據(jù)包,避免重傳事件和時(shí)延的發(fā)生,實(shí)現(xiàn)智能化的流傳輸處理能;其丟包機(jī)制簡(jiǎn)單,相較于傳統(tǒng)復(fù)雜的丟包程序,保持中間節(jié)點(diǎn)的性能在最佳狀態(tài),從而疏通網(wǎng)絡(luò)擁塞的情況。
本發(fā)明的流傳輸丟包機(jī)制下傳輸?shù)膖s傳輸包為彈幕數(shù)據(jù)與視頻數(shù)據(jù)、音頻數(shù)據(jù)整合在同一連續(xù)的ts傳輸包,播放器解碼時(shí)只需解碼一條數(shù)據(jù)流,節(jié)省所需寬度視頻,且畫(huà)面質(zhì)量好,實(shí)時(shí)性高,連續(xù)性好。
附圖說(shuō)明
圖1為本發(fā)明在彈幕視頻流傳輸過(guò)程中的丟包方法的第一種實(shí)施方式的示意圖;
圖2為本發(fā)明在彈幕視頻流傳輸過(guò)程中的丟包方法的第二種實(shí)施方式的示意圖;
圖3為本發(fā)明在彈幕視頻流傳輸過(guò)程中的丟包方法中以pid字段為索引的ts包的結(jié)構(gòu)圖;
圖4為本發(fā)明在彈幕視頻流傳輸過(guò)程中的丟包裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
下面參考附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行描述。參見(jiàn)圖1,一種在彈幕視頻流傳輸過(guò)程中的丟包方法,包括下述步驟:
s10、流媒體服務(wù)器整合彈幕數(shù)據(jù)包至彈幕視頻流傳輸?shù)膖s傳輸包中;
s20、將所述數(shù)據(jù)包進(jìn)行傳輸,統(tǒng)計(jì)彈幕數(shù)據(jù)包的在當(dāng)前節(jié)點(diǎn)緩存隊(duì)列長(zhǎng)度中的個(gè)數(shù)n總;
s30、發(fā)生擁塞時(shí),從流傳輸中節(jié)點(diǎn)緩存隊(duì)列的彈幕數(shù)據(jù)包的個(gè)數(shù)n總中優(yōu)先選擇丟包個(gè)數(shù)n進(jìn)行丟包;
s40、根據(jù)丟包個(gè)數(shù)n及其類(lèi)型判斷是否發(fā)生重傳。
本發(fā)明所述的流媒體服務(wù)器,主要以流式協(xié)議將視頻文件傳輸?shù)娇蛻舳耍┯脩粼诰€觀看,也可以從公網(wǎng)服務(wù)端采集視頻、壓縮軟件接收實(shí)時(shí)視頻,再以流式協(xié)議直播給播放客戶端。在本發(fā)明服務(wù)器端對(duì)所述彈幕數(shù)據(jù)進(jìn)行標(biāo)識(shí)處理后,與該節(jié)目的其他傳輸內(nèi)容打包,整合成一條視頻流,該視頻流數(shù)據(jù)包在網(wǎng)絡(luò)狀態(tài)變化的情況下智能化選擇丟包對(duì)象;該技術(shù)方案一方面保證彈幕數(shù)據(jù)的流暢和匹配度,另一方面提高該數(shù)據(jù)包下的流傳輸?shù)膫鬏斝?,避免影響視頻的實(shí)時(shí)性和流暢性。
本發(fā)明方法應(yīng)用于數(shù)字視頻業(yè)務(wù),iptv業(yè)務(wù)所給予的ip網(wǎng)絡(luò)本身是一種面向無(wú)連接的不可靠傳輸體系,不可避免地會(huì)帶來(lái)不同程度的丟包,特別是在網(wǎng)絡(luò)擁塞時(shí)造成突發(fā)性的大量丟包;mpeg-ts的媒體丟包則是造成iptv視頻質(zhì)量下降的關(guān)鍵原因,如導(dǎo)致觀看過(guò)程中的卡屏、黑屏、花屏等。本發(fā)明將彈幕數(shù)據(jù)進(jìn)行打包,設(shè)置為候選丟包對(duì)象,在網(wǎng)絡(luò)流暢時(shí),可流暢觀看視頻+彈幕模式的節(jié)目,而在網(wǎng)絡(luò)擁塞時(shí),優(yōu)選標(biāo)識(shí)的彈幕數(shù)據(jù)包,將必然發(fā)生的丟包限定在附加數(shù)據(jù)包上,從而保證iptv視頻的質(zhì)量。本發(fā)明所述iptv媒體流傳輸?shù)膮f(xié)議棧為mpeg-ts/udp/ip/ethernet。
本發(fā)明所述用于彈幕視頻流傳輸過(guò)程中的丟包方法的第二個(gè)實(shí)施方式中,如圖2所示,包括下述步驟。
s10、流媒體服務(wù)器整合彈幕數(shù)據(jù)包至彈幕視頻流傳輸?shù)膖s傳輸包中;
在該步驟中,具體的整合彈幕數(shù)據(jù)包至ts傳輸包的方法包括下述:
s11、服務(wù)器接收實(shí)時(shí)采集的帶屬性的彈幕數(shù)據(jù),所述帶屬性的彈幕數(shù)據(jù)的屬性包括彈幕的節(jié)目標(biāo)識(shí)、起止標(biāo)識(shí)以及時(shí)間標(biāo)識(shí);
s12、服務(wù)器解碼所述彈幕數(shù)據(jù),識(shí)別彈幕節(jié)目標(biāo)識(shí)后,將彈幕數(shù)據(jù)和對(duì)應(yīng)節(jié)目的傳輸內(nèi)容進(jìn)行打包至視頻數(shù)據(jù)包中。
該步驟中自帶屬性的彈幕數(shù)據(jù)通過(guò)流媒體服務(wù)器端的解碼器進(jìn)行解碼,將自帶屬性數(shù)據(jù)中內(nèi)的起止標(biāo)識(shí)獲得控制該彈幕的出現(xiàn)時(shí)間和結(jié)束時(shí)間,以便與相應(yīng)的傳輸數(shù)據(jù)對(duì)應(yīng)打包,且實(shí)現(xiàn)在播放器端在對(duì)應(yīng)位置組合播放。
其中打包方式具體為:
s21、對(duì)應(yīng)節(jié)目傳輸內(nèi)容包括已編碼的視頻內(nèi)容和音頻內(nèi)容,將編碼后的視頻內(nèi)容、音頻內(nèi)容以及彈幕數(shù)據(jù)依據(jù)屬性整合到同一連續(xù)的ts傳輸包中;
在視頻流傳輸中,含視頻數(shù)據(jù)(逐幀畫(huà)面數(shù)據(jù))和音頻數(shù)據(jù)(逐比特音頻數(shù)據(jù)),解碼時(shí)根據(jù)視頻數(shù)據(jù)中自帶的時(shí)間標(biāo)識(shí)和音頻數(shù)據(jù)中自帶的時(shí)間標(biāo)識(shí)進(jìn)行配合,再根據(jù)彈幕數(shù)據(jù)屬性中的時(shí)間標(biāo)識(shí)將彈幕數(shù)據(jù)與所述視頻數(shù)據(jù)和音頻數(shù)據(jù)匹配組合起來(lái)形成一完整的彈幕視頻流ts傳輸包。
s22、將視頻ts包和音頻ts包,以及在再次編碼的彈幕數(shù)據(jù)ts包在該傳輸包中進(jìn)行不同的pid標(biāo)識(shí);使用cc字段對(duì)每個(gè)以pid字段為索引的ts包序列進(jìn)行連續(xù)性計(jì)數(shù),其中彈幕數(shù)據(jù)對(duì)應(yīng)的cc字段為(n1、n2…nn)。
圖3所示,將視頻ts包以pid100進(jìn)行標(biāo)識(shí),音頻ts包以pid200進(jìn)行標(biāo)識(shí),彈幕數(shù)據(jù)ts包則以pid300進(jìn)行標(biāo)識(shí),在每個(gè)數(shù)據(jù)包下通過(guò)cc字段(4個(gè)比特的字段)對(duì)ts包序列進(jìn)行連續(xù)性計(jì)數(shù),將具有相同的pid的連續(xù)ts包打上連續(xù)的cc標(biāo)簽,如:pid300對(duì)應(yīng)的cc字段為1、2、3;pid200對(duì)應(yīng)的cc字段為4、5;pid100對(duì)應(yīng)的cc字段為6、7、8、9、10。
s20、將所述數(shù)據(jù)包進(jìn)行傳輸,統(tǒng)計(jì)彈幕數(shù)據(jù)包的在當(dāng)前節(jié)點(diǎn)緩存隊(duì)列長(zhǎng)度中的個(gè)數(shù)n總;
由于數(shù)據(jù)包中的彈幕數(shù)據(jù)ts包、視頻ts包以及音頻ts包中進(jìn)行了不同的pid標(biāo)識(shí),那么,直接通過(guò)pid標(biāo)識(shí)辨認(rèn)統(tǒng)計(jì)不同的ts包對(duì)象,在當(dāng)前節(jié)點(diǎn)緩存隊(duì)列長(zhǎng)度中進(jìn)行統(tǒng)計(jì),獲得彈幕數(shù)據(jù)包總的個(gè)數(shù)n總。
s30、發(fā)生擁塞時(shí),從流傳輸中節(jié)點(diǎn)緩存隊(duì)列的彈幕數(shù)據(jù)包的個(gè)數(shù)n總中優(yōu)先選擇丟包個(gè)數(shù)n進(jìn)行丟包;
丟包方式為:調(diào)用隨機(jī)函數(shù)計(jì)算得到cc字段中[n1,nn]的隨機(jī)數(shù),并丟棄隨機(jī)數(shù)位置的數(shù)據(jù)包。
s40、根據(jù)丟包個(gè)數(shù)n及其類(lèi)型判斷是否發(fā)生重傳。
該判斷具體方法為:
依據(jù)視頻ts包、音頻ts包以及彈幕數(shù)據(jù)ts包的不同pid標(biāo)識(shí),判斷丟包個(gè)數(shù)n中含有的視頻ts包個(gè)數(shù)ni、音頻ts包個(gè)數(shù)nj以及彈幕數(shù)據(jù)ts包個(gè)數(shù)nk,判斷傳輸狀態(tài)且采取相應(yīng)動(dòng)作;
當(dāng)ni=0、nj=0且n=nk時(shí),即流傳輸過(guò)程中所述丟棄的包僅為彈幕數(shù)據(jù)ts包,該丟包事件并不影響視頻觀看質(zhì)量及視頻的連續(xù)性,則判斷為滿載或輕載,不發(fā)生重傳事件;
當(dāng)n≥1和/或nj≥1,且nk=n總時(shí),即流傳輸過(guò)程中的丟包數(shù)量較大,丟包事件發(fā)生在彈幕數(shù)據(jù)ts包、視頻ts包以及音頻ts包中,可判斷為超載,通過(guò)下調(diào)碼率疏通網(wǎng)絡(luò)擁塞現(xiàn)象,且依據(jù)下調(diào)的碼率重新調(diào)整發(fā)生重傳事件;
當(dāng)n≥1和/或nj≥1,且nk<n總時(shí),該情況下,丟包最優(yōu)對(duì)象發(fā)生錯(cuò)誤,使得丟包事件發(fā)生在彈幕數(shù)據(jù)ts包、視頻ts包以及音頻ts包中;為保證視頻觀看質(zhì)量,該狀態(tài)下在不調(diào)節(jié)碼率的前提下發(fā)生重傳。
而在丟包最優(yōu)對(duì)象發(fā)生錯(cuò)誤的情況下,即在n≥1和/或nj≥1,且nk<n總情況時(shí),系統(tǒng)依據(jù)視頻ts包、音頻ts包以及彈幕數(shù)據(jù)ts包的不同pid標(biāo)識(shí)進(jìn)行一次誤判檢測(cè),重新得出丟包數(shù)nk的具體類(lèi)型和個(gè)數(shù),并重新依據(jù)上述機(jī)制判斷是否發(fā)生重傳事件。若結(jié)果仍是n≥1和/或nj≥1,且nk<n總時(shí),則在不調(diào)節(jié)碼率的前提下發(fā)生重傳;以在傳輸通暢的前提下保證視頻觀看質(zhì)量。
圖4示出了一種在在彈幕視頻流傳輸過(guò)程中的丟包裝置,所述裝置包括流媒體服務(wù)器端100、傳輸模塊200以及播放器終端300。
所述流媒體服務(wù)器端100包括彈幕整合單元110、采集單元120、解碼單元130以及標(biāo)識(shí)單元140。其中所述彈幕整合單元110用于整合彈幕數(shù)據(jù)包至彈幕視頻流傳輸?shù)膖s傳輸包中。采集單元120用于采集公網(wǎng)服務(wù)端的帶屬性的彈幕信息。解碼單元130用于對(duì)采集的彈幕信息進(jìn)行解碼識(shí)別其中屬性。標(biāo)識(shí)單元140依據(jù)屬性中彈幕節(jié)目標(biāo)識(shí)將彈幕數(shù)據(jù)和對(duì)應(yīng)節(jié)目的傳輸內(nèi)容進(jìn)行編碼后整合至視頻數(shù)據(jù)包中,其中編碼后的視頻ts包和音頻ts包,以及再次編碼的彈幕數(shù)據(jù)ts包在該傳輸包中進(jìn)行不同的pid標(biāo)識(shí);其中,使用cc字段對(duì)每個(gè)以pid字段為索引的ts包序列進(jìn)行連續(xù)性計(jì)數(shù),所述彈幕數(shù)據(jù)對(duì)應(yīng)的cc字段為(n1、n2…nn)。
所述傳輸模塊200接收流媒體服務(wù)器端的ts傳輸包,并傳輸至播放器終端進(jìn)行播放,所述傳輸模塊200包括:
統(tǒng)計(jì)單元210,用于統(tǒng)計(jì)彈幕數(shù)據(jù)包的在當(dāng)前節(jié)點(diǎn)緩存隊(duì)列長(zhǎng)度中的個(gè)數(shù)n總;
丟包單元220,用于從流傳輸中節(jié)點(diǎn)緩存隊(duì)列的彈幕數(shù)據(jù)包的個(gè)數(shù)n總中優(yōu)先選擇丟包個(gè)數(shù)n進(jìn)行丟包;
重傳評(píng)估單元230,用于根據(jù)丟包個(gè)數(shù)n及其類(lèi)型判斷是否發(fā)生重傳。
在本發(fā)明優(yōu)選的實(shí)施方案中,所述統(tǒng)計(jì)單元210還用于統(tǒng)計(jì)視頻ts包、音頻ts包在當(dāng)前節(jié)點(diǎn)緩存隊(duì)列長(zhǎng)度中的個(gè)數(shù)ni和nj。
所述丟包單元220中的丟包方法為:
依據(jù)視頻ts包、音頻ts包以及彈幕數(shù)據(jù)ts包的不同pid標(biāo)識(shí),判斷丟包個(gè)數(shù)n中含有的視頻ts包個(gè)數(shù)ni、音頻ts包個(gè)數(shù)nj以及彈幕數(shù)據(jù)ts包個(gè)數(shù)nk,判斷傳輸狀態(tài)且采取相應(yīng)動(dòng)作;
當(dāng)ni=0、nj=0且n=nk時(shí),判斷為滿載或輕載,不發(fā)生重傳事件;
當(dāng)n≥1和/或nj≥1,且nk=n總時(shí),判斷為超載,下調(diào)碼率,且發(fā)生重傳事件;
當(dāng)n≥1和/或nj≥1,且nk<n總時(shí),不調(diào)節(jié)碼率,發(fā)生重傳。
在一個(gè)改進(jìn)的技術(shù)方案中,所述傳輸模塊200中還包括檢測(cè)單元240,用于在n≥1和/或nj≥1,且nk<n總情況時(shí),依據(jù)視頻ts包、音頻ts包以及彈幕數(shù)據(jù)ts包的不同pid標(biāo)識(shí)進(jìn)行一次誤判檢測(cè),得出結(jié)果,并依據(jù)該結(jié)果重新判斷是否發(fā)生重傳事件。
以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況下,即可以理解并實(shí)施。
通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件?;谶@樣的理解,上述技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如rom/ram、磁碟、光盤(pán)等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。