本發(fā)明涉及視頻直播技術(shù)領(lǐng)域,尤其涉及一種低延時(shí)快速開播方法及裝置。
背景技術(shù):
RTMP(Real Time Messaging Protocol,實(shí)時(shí)消息傳送協(xié)議)是一種在播放器和服務(wù)器之間進(jìn)行音頻、視頻和數(shù)據(jù)傳輸?shù)膮f(xié)議。RTMP協(xié)議在視頻點(diǎn)播和直播應(yīng)用中得到了廣泛的應(yīng)用??蛻舳?例如播放器)可以利用RTMP協(xié)議與服務(wù)器進(jìn)行數(shù)據(jù)交互。例如,客戶端可以接收服務(wù)器推送的視頻音頻數(shù)據(jù),并在客戶端實(shí)現(xiàn)本地播放。
但是,在RTMP實(shí)時(shí)播放的過程中,由于客戶端接入實(shí)時(shí)視頻的播放進(jìn)入點(diǎn)具有隨機(jī)性。而為保證客戶端的正常播放,當(dāng)客戶端接入實(shí)時(shí)視頻播放從服務(wù)器中拉流時(shí),服務(wù)器需從直播視頻數(shù)據(jù)中的關(guān)鍵幀開始向客戶端發(fā)送視頻數(shù)據(jù)。若服務(wù)器從接入時(shí)間后收到的關(guān)鍵幀開始向客戶端發(fā)送視頻數(shù)據(jù),則會(huì)導(dǎo)致客戶端在視頻開播(即在客戶端開始播放直播視頻)時(shí)存在等待時(shí)間,無法做到快速或立即開播,不利于提高客戶端用戶的觀看體驗(yàn)。若服務(wù)器從接入時(shí)間前收到的關(guān)鍵幀開始向客戶端發(fā)送視頻數(shù)據(jù),則會(huì)在網(wǎng)絡(luò)延時(shí)的基礎(chǔ)上進(jìn)一步加大客戶端的播放延時(shí),同樣不利于提高客戶端用戶的觀看體驗(yàn)。
因此,本領(lǐng)域技術(shù)人員需要提供一種低延時(shí)快速開播方法及裝置能夠在減小開播時(shí)用戶的等待時(shí)間的同時(shí)不增加客戶端的播放延時(shí),從而提高用戶的觀看體驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)問題,本發(fā)明提供了一種低延時(shí)快速開播方法及裝置能夠在減小開播時(shí)用戶的等待時(shí)間的同時(shí)不增加客戶端的播放延時(shí),從而提高用戶的觀看體驗(yàn)。
本發(fā)明實(shí)施例提供的低延時(shí)快速開播方法,應(yīng)用于服務(wù)器,所述方法包括:
接收第一客戶端實(shí)時(shí)上傳的數(shù)據(jù)集合,所述數(shù)據(jù)集合包括視頻數(shù)據(jù);
保存第一子視頻數(shù)據(jù),并修改所述第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳,所述第一子視頻數(shù)據(jù)至少包括所述視頻數(shù)據(jù)中最新接收到的關(guān)鍵幀;
當(dāng)接收到第二客戶端發(fā)送的播放請(qǐng)求時(shí),將所述第一子視頻數(shù)據(jù)發(fā)送給所述第二客戶端播放。
可選的,所述修改所述第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳,具體包括:
將所述第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳設(shè)置為預(yù)設(shè)時(shí)間范圍內(nèi)的任意時(shí)間。
可選的,所述預(yù)設(shè)時(shí)間范圍內(nèi)的時(shí)間小于或者等于200毫秒。
可選的,所述第一子視頻數(shù)據(jù)為所述視頻數(shù)據(jù)中最新接收到的一組畫面組;
所述保存第一子視頻數(shù)據(jù),具體包括:
逐一檢測(cè)所述視頻數(shù)據(jù)中最新接收到的幀的幀類型;
當(dāng)檢測(cè)到所述最新接收到的幀的幀類型為關(guān)鍵幀時(shí),將該幀所屬的畫面組保存為所述第一子視頻數(shù)據(jù);
當(dāng)再次檢測(cè)到所述最新接收到的幀的幀類型為關(guān)鍵幀時(shí),將該幀所述的畫面組替換為所述第一子視頻數(shù)據(jù)。
可選的,所述數(shù)據(jù)集合還包括音頻數(shù)據(jù);所述將所述第一子視頻數(shù)據(jù)發(fā)送給所述第二客戶端播放,之后還包括:
繼續(xù)將第二子視頻數(shù)據(jù)和第二子音頻數(shù)據(jù)發(fā)送給所述第二客戶端,以使所述第二客戶端同步播放所述第二子視頻數(shù)據(jù)和第二子音頻數(shù)據(jù);
其中,所述第二子視頻數(shù)據(jù)屬于所述視頻數(shù)據(jù),所述第二子視頻數(shù)據(jù)與所述第一子視頻數(shù)據(jù)在時(shí)間上是連續(xù)的且所述第一子視頻數(shù)據(jù)的開始時(shí)間早于所述第二子視頻數(shù)據(jù)的開始時(shí)間,所述第二子音頻數(shù)據(jù)與所述第二子視頻數(shù)據(jù)相對(duì)應(yīng)。
本發(fā)明實(shí)施例提供的低延時(shí)快速開播裝置,應(yīng)用于服務(wù)器,所述裝置,包括:數(shù)據(jù)接收模塊、數(shù)據(jù)處理模塊、請(qǐng)求接收模塊和數(shù)據(jù)發(fā)送模塊;
所述數(shù)據(jù)接收模塊,用于接收第一客戶端實(shí)時(shí)上傳的數(shù)據(jù)集合,所述數(shù)據(jù)集合包括視頻數(shù)據(jù);
所述數(shù)據(jù)處理模塊,用于保存第一子視頻數(shù)據(jù),并修改所述第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳,所述第一子視頻數(shù)據(jù)至少包括所述視頻數(shù)據(jù)中最新接收到的關(guān)鍵幀;
所述請(qǐng)求接收模塊,用于接收第二客戶端發(fā)送的播放請(qǐng)求;
所述數(shù)據(jù)發(fā)送模塊,用于當(dāng)所述請(qǐng)求接收模塊接收到所述播放請(qǐng)求時(shí),將所述第一子視頻數(shù)據(jù)發(fā)送給所述第二客戶端播放。
可選的,所述數(shù)據(jù)處理模塊,包括:時(shí)間戳修改子模塊;
所述時(shí)間戳修改子模塊,用于將所述第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳設(shè)置為預(yù)設(shè)時(shí)間范圍內(nèi)的任意時(shí)間。
可選的,所述預(yù)設(shè)時(shí)間范圍內(nèi)的時(shí)間小于或者等于200毫秒。
可選的,所述第一子視頻數(shù)據(jù)為所述視頻數(shù)據(jù)中最新接收到的一組畫面組;
所述數(shù)據(jù)處理模塊,包括:檢測(cè)子模塊和存儲(chǔ)子模塊;
所述檢測(cè)子模塊,用于逐一檢測(cè)所述視頻數(shù)據(jù)中最新接收到的幀的幀類型;
所述存儲(chǔ)子模塊,用于當(dāng)所述檢測(cè)子模塊檢測(cè)到所述最新接收到的幀的幀類型為關(guān)鍵幀時(shí),將該幀所屬的畫面組保存為所述第一子視頻數(shù)據(jù);
所述存儲(chǔ)子模塊,還用于當(dāng)所述檢測(cè)子模塊再次檢測(cè)到所述最新接收到的幀的幀類型為關(guān)鍵幀時(shí),將該幀所述的畫面組替換為所述第一子視頻數(shù)據(jù)。
可選的,所述數(shù)據(jù)集合還包括音頻數(shù)據(jù);
所述數(shù)據(jù)發(fā)送模塊,還用于在將所述第一子視頻數(shù)據(jù)發(fā)送給所述第二客戶端播放后,繼續(xù)將第二子視頻數(shù)據(jù)和第二子音頻數(shù)據(jù)發(fā)送給所述第二客戶端,以使所述第二客戶端同步播放所述第二子視頻數(shù)據(jù)和第二子音頻數(shù)據(jù);
其中,所述第二子視頻數(shù)據(jù)屬于所述視頻數(shù)據(jù),所述第二子視頻數(shù)據(jù)與所述第一子視頻數(shù)據(jù)在時(shí)間上是連續(xù)的且所述第一子視頻數(shù)據(jù)的開始時(shí)間早于所述第二子視頻數(shù)據(jù)的開始時(shí)間,所述第二子音頻數(shù)據(jù)與所述第二子視頻數(shù)據(jù)相對(duì)應(yīng)。
與現(xiàn)有技術(shù)相比,本發(fā)明至少具有以下優(yōu)點(diǎn):
本發(fā)明實(shí)施例提供的低延時(shí)快速播放方法,在接收到第一客戶端實(shí)時(shí)上傳的視頻數(shù)據(jù)和音頻數(shù)據(jù)時(shí),保存視頻數(shù)據(jù)中最新接收到的一組畫面組中包括關(guān)鍵幀的一幀或多幀,得到第一子視頻數(shù)據(jù),并隨著視頻數(shù)據(jù)的傳輸,實(shí)時(shí)更新保存的第一子視頻數(shù)據(jù)。同時(shí),修改所保存的第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳,使得第二客戶端在解碼播放時(shí)能夠快速跳過播放第一子視頻數(shù)據(jù)。這樣,當(dāng)接收到第二客戶端發(fā)送的播放請(qǐng)求時(shí),先將第一子視頻數(shù)據(jù)發(fā)送給第二客戶端播放,即可使第二客戶端能夠快速的開播,無需等待下一個(gè)關(guān)鍵幀。將第一子視頻數(shù)據(jù)發(fā)送給第二客戶端之后,再將實(shí)時(shí)的視頻數(shù)據(jù)發(fā)送給第二客戶端播放。修改后的第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳使得第二客戶端能夠快速的播放完第一子視頻數(shù)據(jù),再播放實(shí)時(shí)的視頻數(shù)據(jù),可降低第二客戶端和第一客戶端之間的視頻播放延時(shí),提高第二客戶端用戶的觀看體驗(yàn)。
附圖說明
為了更清楚地說明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
圖1為本發(fā)明提供的低延時(shí)快速開播方法實(shí)施例的流程示意圖;
圖2為本發(fā)明提供的低延時(shí)快速開播裝置實(shí)施例的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
首先需要說明的是,本發(fā)明實(shí)施例提供的低延時(shí)快速開播方法及裝置,均應(yīng)用于服務(wù)器。該服務(wù)器通過RTMP協(xié)議分別與第一客戶端(直播數(shù)據(jù)生成端、推流端或主播端等)和第二客戶端(直播視頻播放端、拉流端或觀眾端等)通信,實(shí)時(shí)的將第一客戶端的數(shù)據(jù)轉(zhuǎn)發(fā)至第二客戶端。第二客戶端根據(jù)從服務(wù)器處接收到的數(shù)據(jù),播放第一客戶端的直播視頻。
方法實(shí)施例:
參見圖1,該圖為本實(shí)施例提供的低延時(shí)快速開播方法實(shí)施例的流程示意圖。
本實(shí)施例提供的低延時(shí)快速開播方法,包括:
S101:接收第一客戶端實(shí)時(shí)上傳的數(shù)據(jù)集合,所述數(shù)據(jù)集合包括視頻數(shù)據(jù)。
第一客戶端在視頻編碼生成視頻數(shù)據(jù)時(shí),會(huì)按照預(yù)先的設(shè)置,設(shè)置視頻數(shù)據(jù)中的關(guān)鍵幀。例如,每隔2秒設(shè)置一幀關(guān)鍵幀。之后,第一客戶端將與直播相關(guān)的各種數(shù)據(jù)實(shí)時(shí)的連續(xù)的傳輸給服務(wù)器。
S102:保存第一子視頻數(shù)據(jù),并修改所述第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳,所述第一子視頻數(shù)據(jù)至少包括所述視頻數(shù)據(jù)中最新接收到的關(guān)鍵幀(I幀)。
S103:當(dāng)接收到第二客戶端發(fā)送的播放請(qǐng)求時(shí),將所述第一子視頻數(shù)據(jù)發(fā)送給所述第二客戶端播放。
這里需要說明的是,第一子視頻數(shù)據(jù)至少包括服務(wù)器最新接收到的I幀。第一子視頻數(shù)據(jù)還可以包括該最新接收到的I幀后的一個(gè)或多個(gè)幀,該一個(gè)或多個(gè)幀與該最新接收到的I幀屬于同一畫面組(GOP,Group of Pictures)。在視頻編碼中,GOP為視頻序列中以第一個(gè)I幀為起點(diǎn),以第二個(gè)I幀結(jié)尾、但不包括第二個(gè)I幀的幀序列。一個(gè)GOP包括一個(gè)I幀以及若干P幀和B幀。視頻序列中的第二個(gè)I幀即為另一個(gè)GOP的起始點(diǎn)。
在本實(shí)施例優(yōu)選的實(shí)施方式中,所述第一子視頻數(shù)據(jù)為所述視頻數(shù)據(jù)中最新接收到的一組畫面組。此時(shí),所述保存第一子視頻數(shù)據(jù),具體包括:逐一檢測(cè)所述視頻數(shù)據(jù)中最新接收到的幀的幀類型;當(dāng)檢測(cè)到所述最新接收到的幀的幀類型為關(guān)鍵幀時(shí),將該幀所屬的畫面組保存為所述第一子視頻數(shù)據(jù);當(dāng)再次檢測(cè)到所述最新接收到的幀的幀類型為關(guān)鍵幀時(shí),將該幀所述的畫面組替換為所述第一子視頻數(shù)據(jù)。
具體實(shí)施時(shí),服務(wù)器在接收視頻數(shù)據(jù)時(shí),先判斷接收到的幀是否為I幀;如果是,則從該幀開始,緩存接收到的每一個(gè)幀。當(dāng)服務(wù)器再次判斷出接收到的幀為I幀時(shí),停止緩存。之后,將緩存的全部的幀替換為第一子視頻數(shù)據(jù)。
這樣,第二客戶端在發(fā)送直播請(qǐng)求以接入視頻直播后,能夠立即接收到服務(wù)器發(fā)送的第一子視頻數(shù)據(jù),無需等待時(shí)間,直接對(duì)第一子視頻數(shù)據(jù)進(jìn)行解碼播放即可。
這里需要說明的是,顯然,為了保證視頻直播的正常播放,所述數(shù)據(jù)集合還包括音頻數(shù)據(jù)。但是,如果將與第一子視頻數(shù)據(jù)相對(duì)應(yīng)的音頻數(shù)據(jù)同時(shí)發(fā)送給第二客戶端播放,則第二客戶端在解碼時(shí)需進(jìn)行音視頻同步操作。這會(huì)延遲直播視頻在第二客戶端上的開播時(shí)間,延遲第二客戶端的開播時(shí)間,還會(huì)增加第二客戶端和第一客戶端之間的播放延時(shí),不利于提高第二客戶端用戶的觀看體驗(yàn)。因此,在開播時(shí)只將第一子視頻數(shù)據(jù)發(fā)送給第二客戶端播放,不向第二客戶端傳輸相應(yīng)的音頻數(shù)據(jù),可在一定程度上加快第二客戶端的開播速度,降低第二客戶端的播放延時(shí)。
在本實(shí)施例優(yōu)選的實(shí)施方式中,步驟S103之后還包括:繼續(xù)將第二子視頻數(shù)據(jù)和第二子音頻數(shù)據(jù)發(fā)送給所述第二客戶端,以使所述第二客戶端同步播放所述第二子視頻數(shù)據(jù)和第二子音頻數(shù)據(jù);其中,所述第二子視頻數(shù)據(jù)屬于所述視頻數(shù)據(jù),所述第二子視頻數(shù)據(jù)與所述第一子視頻數(shù)據(jù)在時(shí)間上是連續(xù)的且所述第一子視頻數(shù)據(jù)的開始時(shí)間早于所述第二子視頻數(shù)據(jù)的開始時(shí)間,所述第二子音頻數(shù)據(jù)與所述第二子視頻數(shù)據(jù)相對(duì)應(yīng)。
之后,服務(wù)器即可繼續(xù)向第二客戶端發(fā)送實(shí)時(shí)接收到的視頻數(shù)據(jù)和與其對(duì)應(yīng)的音頻數(shù)據(jù),以使第二客戶端正常的進(jìn)行直播視頻的播放。
在一個(gè)例子中,第二子視頻數(shù)據(jù)的起始幀可以為與第一子視頻數(shù)據(jù)之后的第一個(gè)I幀,這樣能夠保證第二客戶端所播放的視頻的連續(xù)性。但第一子視頻數(shù)據(jù)的播放會(huì)加大第二客戶端和第一客戶端之間的播放延時(shí),影響第二客戶端用戶的觀看效果。
在另一個(gè)例子中,第二子視頻數(shù)據(jù)的起始幀還可以為當(dāng)前服務(wù)器最新接收到的I幀,這樣可降低第二客戶端與第一客戶端的播放延時(shí)。但第二客戶端播放的視頻不連續(xù),跳過的視頻時(shí)長(zhǎng)受第一子視頻數(shù)據(jù)的播放時(shí)間和網(wǎng)絡(luò)傳輸?shù)纫蛩氐挠绊?,同樣不利于第二客戶端用戶的觀看效果。
因此,可通過修改第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳,縮短第二客戶端播放第一子視頻數(shù)據(jù)的時(shí)間,以減小第二客戶端的播放延時(shí)。進(jìn)一步的,還可在第二子視頻數(shù)據(jù)的起始幀為當(dāng)前服務(wù)器最新接收到的I幀時(shí),減小第二客戶端播放時(shí)所跳過的直播視頻的時(shí)長(zhǎng)。
在本實(shí)施例的一些可能的實(shí)現(xiàn)方式中,可以將所述第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳設(shè)置為預(yù)設(shè)時(shí)間范圍內(nèi)的任意時(shí)間。
作為一個(gè)示例,所述預(yù)設(shè)時(shí)間范圍內(nèi)的時(shí)間小于或者等于200毫秒(ms)。
具體的,可將所述第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳均設(shè)為0ms或近似為0ms的時(shí)間。這樣,第二客戶端在解碼播放時(shí),即可根據(jù)第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳快速的播放完第一子視頻數(shù)據(jù),減小了第二客戶端的播放延時(shí)。
另外,還可以將第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳按順序修改成遞增的時(shí)間戳,但每一幀之間的時(shí)間戳相差比較小。例如將每一幀的時(shí)間戳分別設(shè)置為0ms、10ms、20ms、30ms等,相鄰兩幀之間的時(shí)間戳以10ms間隔遞增。具體操作中,當(dāng)?shù)谝蛔右曨l數(shù)據(jù)的總幀數(shù)較少時(shí),可以將第一子視頻數(shù)據(jù)中相鄰兩幀的時(shí)間戳之間的間隔設(shè)置的較大一點(diǎn);反之,當(dāng)?shù)谝蛔右曨l數(shù)據(jù)的總幀數(shù)較多時(shí),則需相應(yīng)的減小將第一子視頻數(shù)據(jù)中相鄰兩幀的時(shí)間戳之間的間隔,以保證在播放時(shí),能夠用較短的時(shí)間播放完第一子視頻數(shù)據(jù)中的幀。
這里需要說明的是,在修改第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳?xí)r,需保證修改后實(shí)際播放時(shí),能夠達(dá)到快速播放完第一子視頻數(shù)據(jù)的效果。因此,一般來說,第一子視頻數(shù)據(jù)中最后一幀的時(shí)間戳不應(yīng)大于200ms。
本實(shí)施例提供的低延時(shí)快速播放方法,在接收到第一客戶端實(shí)時(shí)上傳的視頻數(shù)據(jù)和音頻數(shù)據(jù)時(shí),保存視頻數(shù)據(jù)中最新接收到的一組畫面組中包括關(guān)鍵幀的一幀或多幀,得到第一子視頻數(shù)據(jù),并隨著視頻數(shù)據(jù)的傳輸,實(shí)時(shí)更新保存的第一子視頻數(shù)據(jù)。同時(shí),修改所保存的第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳,使得第二客戶端在解碼播放時(shí)能夠快速跳過播放第一子視頻數(shù)據(jù)。這樣,當(dāng)接收到第二客戶端發(fā)送的播放請(qǐng)求時(shí),先將第一子視頻數(shù)據(jù)發(fā)送給第二客戶端播放,即可使第二客戶端能夠快速的開播,無需等待下一個(gè)關(guān)鍵幀。將第一子視頻數(shù)據(jù)發(fā)送給第二客戶端之后,再將實(shí)時(shí)的視頻數(shù)據(jù)發(fā)送給第二客戶端播放。修改后的第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳使得第二客戶端能夠快速的播放完第一子視頻數(shù)據(jù),再播放實(shí)時(shí)的視頻數(shù)據(jù),可降低第二客戶端和第一客戶端之間的視頻播放延時(shí),提高第二客戶端用戶的觀看體驗(yàn)。
基于上述實(shí)施例所述的低延時(shí)快速開播方法,本發(fā)明實(shí)施例還提供了一種低延時(shí)快速開播裝置。
裝置實(shí)施例:
參見圖2,該圖為本發(fā)明提供的低延時(shí)快速開播裝置實(shí)施例的結(jié)構(gòu)示意圖。
本實(shí)施例提供的低延時(shí)快速開播裝置,包括:數(shù)據(jù)接收模塊100、數(shù)據(jù)處理模塊200、請(qǐng)求接收模塊300和數(shù)據(jù)發(fā)送模塊400;
所述數(shù)據(jù)接收模塊100,用于接收第一客戶端實(shí)時(shí)上傳的數(shù)據(jù)集合,所述數(shù)據(jù)集合包括視頻數(shù)據(jù);
所述數(shù)據(jù)處理模塊200,用于保存第一子視頻數(shù)據(jù),并修改所述第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳,所述第一子視頻數(shù)據(jù)至少包括所述視頻數(shù)據(jù)中最新接收到的關(guān)鍵幀;
在本實(shí)施例的一些可能的實(shí)現(xiàn)方式中,所述第一子視頻數(shù)據(jù)為所述視頻數(shù)據(jù)中最新接收到的一組畫面組。
此時(shí),所述數(shù)據(jù)處理模塊200,包括:檢測(cè)子模塊和存儲(chǔ)子模塊(均為在圖中示出);
所述檢測(cè)子模塊,用于逐一檢測(cè)所述視頻數(shù)據(jù)中最新接收到的幀的幀類型;
所述存儲(chǔ)子模塊,用于當(dāng)所述檢測(cè)子模塊檢測(cè)到所述最新接收到的幀的幀類型為關(guān)鍵幀時(shí),將該幀所屬的畫面組保存為所述第一子視頻數(shù)據(jù);
所述存儲(chǔ)子模塊,還用于當(dāng)所述檢測(cè)子模塊再次檢測(cè)到所述最新接收到的幀的幀類型為關(guān)鍵幀時(shí),將該幀所述的畫面組替換為所述第一子視頻數(shù)據(jù)。
在本實(shí)施例的一些可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)處理模塊200,包括:時(shí)間戳修改子模塊(未在圖中示出);
在一個(gè)例子中,所述時(shí)間戳修改子模塊,用于將所述第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳設(shè)置為預(yù)設(shè)時(shí)間范圍內(nèi)的任意時(shí)間。
所述預(yù)設(shè)時(shí)間范圍內(nèi)的時(shí)間小于或者等于200毫秒。
所述請(qǐng)求接收模塊300,用于接收第二客戶端發(fā)送的播放請(qǐng)求;
所述數(shù)據(jù)發(fā)送模塊400,用于當(dāng)所述請(qǐng)求接收模塊300接收到所述播放請(qǐng)求時(shí),將所述第一子視頻數(shù)據(jù)發(fā)送給所述第二客戶端播放。
顯然,所述數(shù)據(jù)集合還包括音頻數(shù)據(jù)。此時(shí),在本實(shí)施例的一些可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)發(fā)送模塊400,還用于在將所述第一子視頻數(shù)據(jù)發(fā)送給所述第二客戶端播放后,繼續(xù)將第二子視頻數(shù)據(jù)和第二子音頻數(shù)據(jù)發(fā)送給所述第二客戶端,以使所述第二客戶端同步播放所述第二子視頻數(shù)據(jù)和第二子音頻數(shù)據(jù);其中,所述第二子視頻數(shù)據(jù)屬于所述視頻數(shù)據(jù),所述第二子視頻數(shù)據(jù)與所述第一子視頻數(shù)據(jù)在時(shí)間上是連續(xù)的且所述第一子視頻數(shù)據(jù)的開始時(shí)間早于所述第二子視頻數(shù)據(jù)的開始時(shí)間,所述第二子音頻數(shù)據(jù)與所述第二子視頻數(shù)據(jù)相對(duì)應(yīng)。
本實(shí)施例提供的低延時(shí)快速播放裝置,在數(shù)據(jù)接收模塊接收到第一客戶端實(shí)時(shí)上傳的視頻數(shù)據(jù)和音頻數(shù)據(jù)時(shí),數(shù)據(jù)處理模塊保存視頻數(shù)據(jù)中最新接收到的一組畫面組中包括關(guān)鍵幀的一幀或多幀,得到第一子視頻數(shù)據(jù),并隨著視頻數(shù)據(jù)的傳輸,實(shí)時(shí)更新保存的第一子視頻數(shù)據(jù)。同時(shí),數(shù)據(jù)處理模塊還修改所保存的第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳,使得第二客戶端在解碼播放時(shí)能夠快速跳過播放第一子視頻數(shù)據(jù)。這樣,當(dāng)請(qǐng)求接收模塊接收到第二客戶端發(fā)送的播放請(qǐng)求時(shí),數(shù)據(jù)發(fā)送模塊先將第一子視頻數(shù)據(jù)發(fā)送給第二客戶端播放,即可使第二客戶端能夠快速的開播,無需等待下一個(gè)關(guān)鍵幀。將第一子視頻數(shù)據(jù)發(fā)送給第二客戶端之后,數(shù)據(jù)發(fā)送模塊再將實(shí)時(shí)的視頻數(shù)據(jù)發(fā)送給第二客戶端播放。修改后的第一子視頻數(shù)據(jù)中每一幀的時(shí)間戳使得第二客戶端能夠快速的播放完第一子視頻數(shù)據(jù),再播放實(shí)時(shí)的視頻數(shù)據(jù),可降低第二客戶端和第一客戶端之間的播放延時(shí),提高第二客戶端用戶的觀看體驗(yàn)。
需要說明的是,本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。對(duì)于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對(duì)應(yīng),所以描述比較簡(jiǎn)單,相關(guān)之處參見方法部分說明即可。
還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(RAM)、內(nèi)存、只讀存儲(chǔ)器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動(dòng)磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。
以上所述,僅是本發(fā)明的較佳實(shí)施例而已,并非對(duì)本發(fā)明作任何形式上的限制。雖然本發(fā)明已以較佳實(shí)施例揭露如上,然而并非用以限定本發(fā)明。任何熟悉本領(lǐng)域的技術(shù)人員,在不脫離本發(fā)明技術(shù)方案范圍情況下,都可利用上述揭示的方法和技術(shù)內(nèi)容對(duì)本發(fā)明技術(shù)方案做出許多可能的變動(dòng)和修飾,或修改為等同變化的等效實(shí)施例。因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所做的任何簡(jiǎn)單修改、等同變化及修飾,均仍屬于本發(fā)明技術(shù)方案保護(hù)的范圍內(nèi)。