流媒體數(shù)據(jù)處理方法和電子設(shè)備的制作方法
【專(zhuān)利摘要】提供了一種流媒體數(shù)據(jù)處理方法和電子設(shè)備。該方法包括:當(dāng)接收啟動(dòng)或搜索指令時(shí),接收節(jié)目的傳輸流片段,所述傳輸流片段具有預(yù)定的時(shí)間長(zhǎng)度;解碼并播放接收的傳輸流片段;當(dāng)檢測(cè)到第一預(yù)定條件時(shí),確定與該預(yù)定條件有關(guān)的第一傳輸流片段;獲取該第一傳輸流片段在節(jié)目的播放列表中的位置,從而確定該第一傳輸流片段相對(duì)于節(jié)目的起始時(shí)間;以及接收該第一傳輸流片段,并且在解碼所述第一傳輸流片段中的基本流數(shù)據(jù)時(shí),將每個(gè)基本流數(shù)據(jù)的播放時(shí)間戳加上該起始時(shí)間,從而使得每個(gè)基本流數(shù)據(jù)具有相對(duì)于整個(gè)節(jié)目的正確的時(shí)間戳。
【專(zhuān)利說(shuō)明】流媒體數(shù)據(jù)處理方法和電子設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及電子設(shè)備的領(lǐng)域,更具體地,本發(fā)明涉及一種數(shù)據(jù)處理方法、檢測(cè)方法和電子設(shè)備。
【背景技術(shù)】
[0002]隨著電子產(chǎn)品和網(wǎng)絡(luò)的發(fā)展,在線(xiàn)播放已經(jīng)變得越來(lái)越普遍。不同廠(chǎng)家提出了不同的流媒體標(biāo)準(zhǔn),例如,HTTP Live Streaming (HLS)是Apple公司提出的一套流媒體標(biāo)準(zhǔn),但目前只有Apple生產(chǎn)的設(shè)備上完全支持。因此,對(duì)于非Apple的設(shè)備,也已經(jīng)提出一種流媒體標(biāo)準(zhǔn)是 Android Honeycomb (Android ν3.0, ν3.I, ν3.2, ν4.01),其已經(jīng)有一個(gè) HLS 的實(shí)現(xiàn)框架,但是有很多關(guān)鍵問(wèn)題沒(méi)有解決。
[0003]其中主要的問(wèn)題有:
[0004]問(wèn)題1:HLS有潛在的三種不連續(xù)(DISCONTINUITY):1)遇到m3u8中的標(biāo)簽DISCONTINUITY ;2)帶寬切換;3)搜索操作。當(dāng)HLS的DISCONTINUITY發(fā)生時(shí),音視頻的規(guī)格和播放時(shí)間戳(PTS)時(shí)間會(huì)發(fā)生跳變,HLS要求播放引擎能夠處理傳輸流(TS流)的這種不連續(xù)性。Android中的Stagefright播放引擎無(wú)法處理視頻時(shí)間戳的不連續(xù)性,從而可能導(dǎo)致音視頻不同步或播放進(jìn)度錯(cuò)誤。
[0005]問(wèn)題2: An droid中的Stagefright播放引擎在播放HLS時(shí)搜索響應(yīng)時(shí)間過(guò)長(zhǎng)。
[0006]為此,期望提供一種流媒體數(shù)據(jù)處理方法和電子設(shè)備,其能夠在出現(xiàn)不連續(xù)的情況下以正確的時(shí)間戳來(lái)處理流媒體數(shù)據(jù),并且快速響應(yīng)播放/搜索操作。
【發(fā)明內(nèi)容】
[0007]根據(jù)本發(fā)明一個(gè)實(shí)施例,提供一種流媒體數(shù)據(jù)處理方法,應(yīng)用于電子設(shè)備,該方法包括:
[0008]當(dāng)接收啟動(dòng)或搜索指令時(shí),接收節(jié)目的傳輸流片段,所述傳輸流片段具有預(yù)定的時(shí)間長(zhǎng)度;
[0009]解碼并播放接收的傳輸流片段;
[0010]當(dāng)檢測(cè)到第一預(yù)定條件時(shí),確定與該預(yù)定條件有關(guān)的第一傳輸流片段;
[0011]獲取該第一傳輸流片段在節(jié)目的播放列表中的位置,從而確定該第一傳輸流片段相對(duì)于節(jié)目的起始時(shí)間;以及
[0012]接收該第一傳輸流片段,并且在解碼所述第一傳輸流片段中的基本流數(shù)據(jù)時(shí),將每個(gè)基本流數(shù)據(jù)的播放時(shí)間戳加上該起始時(shí)間,從而使得每個(gè)基本流數(shù)據(jù)具有相對(duì)于整個(gè)節(jié)目的正確的時(shí)間戳。
[0013]優(yōu)選地,所述第一預(yù)定條件包括:
[0014]播放傳輸流片段時(shí)檢測(cè)到索引文件中的不連續(xù)標(biāo)簽;
[0015]播放傳輸流片段時(shí)檢測(cè)到帶寬切換;或者
[0016]播放傳輸流片段時(shí)檢測(cè)到搜索操作。[0017]優(yōu)選地,確定與該預(yù)定條件有關(guān)的第一傳輸流片段包括:
[0018]當(dāng)播放傳輸流片段時(shí)檢測(cè)到索引文件中的不連續(xù)標(biāo)簽時(shí),確定當(dāng)前播放的傳輸流片段為第一傳輸流片段;
[0019]當(dāng)播放傳輸流片段時(shí)檢測(cè)到帶寬切換時(shí),確定當(dāng)前播放的傳輸流片段為第一傳輸流片段;以及
[0020]當(dāng)播放傳輸流片段時(shí)檢測(cè)到搜索操作時(shí),確定搜索操作指定的新播放位置處的傳輸流片段為第一傳輸流片段。
[0021]優(yōu)選地,獲取該第一傳輸流片段在播放列表中的位置,從而確定該第一傳輸流片段相對(duì)于節(jié)目的起始時(shí)間包括:
[0022]獲取該第一傳輸流片段在播放列表中的位置,確定在該播放列表中在該第一傳輸流片段之前的傳輸流片段的數(shù)量;
[0023]將該第一傳輸流片段之前的所有傳輸流片段的時(shí)間長(zhǎng)度求和,獲得一總和時(shí)間;以及
[0024]將該總和時(shí)間設(shè)為該第一傳輸流片段相對(duì)于節(jié)目的起始時(shí)間。
[0025]優(yōu)選地,所述的數(shù)據(jù)處理方法還包括:
[0026]記錄該起始時(shí)間,作為后續(xù)的傳輸流片段中的基本流數(shù)據(jù)的時(shí)間戳校準(zhǔn)時(shí)間。
[0027]優(yōu)選地,傳輸流分組以預(yù)定單位大小預(yù)先進(jìn)行分割,并且當(dāng)接收啟動(dòng)或搜索指令時(shí),按照所述預(yù)定單位大小的整數(shù)倍接收分割后的傳輸流片段,并且解碼和播放接收的分割后的傳輸流片段。
[0028]優(yōu)選地,所述數(shù)據(jù)處理方法還包括:
[0029]當(dāng)進(jìn)行搜索操作后,確定搜索操作指定的新播放位置處的傳輸流片段為第一傳輸流片段;
[0030]獲取與該第一傳輸流片段對(duì)應(yīng)的起始時(shí)間;以及
[0031]從獲取的起始時(shí)間開(kāi)始播放節(jié)目。
[0032]根據(jù)本發(fā)明另一實(shí)施例,提供了一種電子設(shè)備,包括:
[0033]接收單元,配置為當(dāng)接收啟動(dòng)或搜索指令時(shí),接收節(jié)目的傳輸流片段,所述傳輸流片段具有預(yù)定的時(shí)間長(zhǎng)度;
[0034]解碼播放單元,配置為解碼并播放接收的傳輸流片段;
[0035]傳輸流片段確定單元,配置為當(dāng)檢測(cè)到第一預(yù)定條件時(shí),確定與該預(yù)定條件有關(guān)的第一傳輸流片段;
[0036]起始時(shí)間確定單元,配置為獲取該第一傳輸流片段在節(jié)目的播放列表中的位置,從而確定該第一傳輸流片段相對(duì)于節(jié)目的起始時(shí)間;以及
[0037]時(shí)間戳校正單元,配置為通過(guò)所述接收單元接收該第一傳輸流片段,并且在通過(guò)所述解碼播放單元解碼所述第一傳輸流片段中的基本流數(shù)據(jù)時(shí),將每個(gè)基本流數(shù)據(jù)的播放時(shí)間戳加上該起始時(shí)間,從而使得每個(gè)基本流數(shù)據(jù)具有相對(duì)于整個(gè)節(jié)目的正確的時(shí)間戳。
[0038]優(yōu)選地,所述第一預(yù)定條件包括:
[0039]播放傳輸流片段時(shí)檢測(cè)到索引文件中的不連續(xù)標(biāo)簽;
[0040]播放傳輸流片段時(shí)檢測(cè)到帶寬切換;或者
[0041]播放傳輸流片段時(shí)檢測(cè)到搜索操作。[0042]優(yōu)選地,所述傳輸流片段確定單元進(jìn)一步配置為:
[0043]當(dāng)播放傳輸流片段時(shí)檢測(cè)到索引文件中的不連續(xù)標(biāo)簽時(shí),確定當(dāng)前播放的傳輸流片段為第一傳輸流片段;
[0044]當(dāng)播放傳輸流片段時(shí)檢測(cè)到帶寬切換時(shí),確定當(dāng)前播放的傳輸流片段為第一傳輸流片段;以及
[0045]當(dāng)播放傳輸流片段時(shí)檢測(cè)到搜索操作時(shí),確定搜索操作指定的新播放位置處的傳輸流片段為第一傳輸流片段。
[0046]優(yōu)選地,所述起始時(shí)間確定單元進(jìn)一步配置為:
[0047]獲取該第一傳輸流片段在播放列表中的位置,確定在該播放列表中在該第一傳輸流片段之前的傳輸流片段的數(shù)量;
[0048]將該第一傳輸流片段之前的所有傳輸流片段的時(shí)間長(zhǎng)度求和,獲得一總和時(shí)間;以及
[0049]將該總和時(shí)間設(shè)為該第一傳輸流片段相對(duì)于節(jié)目的起始時(shí)間。
[0050]優(yōu)選地,所述電子設(shè)備還包括記錄單元,配置為記錄該起始時(shí)間,作為后續(xù)的傳輸流片段中的基本流數(shù)據(jù)的時(shí)間戳校準(zhǔn)時(shí)間。
[0051]優(yōu)選地,傳輸流分組以預(yù)定單位大小預(yù)先進(jìn)行分割,當(dāng)接收啟動(dòng)或搜索指令時(shí),所述接收單元按照所述預(yù)定單位大小的整數(shù)倍接收分割后的傳輸流片段,并且所述解碼播放單元解碼和播放接收的分割后的傳輸流片段。
[0052]優(yōu)選地,所述傳輸流片段確定單元進(jìn)一步配置為當(dāng)進(jìn)行搜索操作后,確定搜索操作指定的新播放位置處的傳輸流片段為第一傳輸流片段,所述起始時(shí)間確定單元進(jìn)一步配置為獲取與該第一傳輸流片段對(duì)應(yīng)的起始時(shí)間,以及所述解碼播放單元進(jìn)一步配置為從獲取的起始時(shí)間開(kāi)始播放節(jié)目。
[0053]利用根據(jù)本發(fā)明實(shí)施例的流媒體數(shù)據(jù)處理方法和電子設(shè)備,能夠在出現(xiàn)不連續(xù)的情況下以正確的時(shí)間戳來(lái)處理流媒體數(shù)據(jù),并且快速響應(yīng)搜索操作。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0054]圖1是根據(jù)本發(fā)明實(shí)施例的流媒體數(shù)據(jù)處理方法的流程圖;
[0055]圖2是根據(jù)本發(fā)明實(shí)施例的電子設(shè)備的框圖。
【具體實(shí)施方式】
[0056]下面,將參考附圖詳細(xì)描述根據(jù)本發(fā)明實(shí)施例的流媒體數(shù)據(jù)處理方法和電子設(shè)備。需要說(shuō)明的是,本發(fā)明的流媒體處理方法主要是針對(duì)Android平臺(tái)下的HLS框架。
[0057]在描述根據(jù)本發(fā)明實(shí)施例的流媒體數(shù)據(jù)處理方法和電子設(shè)備之前,首先對(duì)現(xiàn)有的流媒體播放技術(shù)進(jìn)行簡(jiǎn)單介紹。
[0058]在現(xiàn)有的流系統(tǒng)中,主要包括以下幾個(gè)組成單元。
[0059]ES流(Elementary Stream):也叫基本碼流,包含視頻、音頻或數(shù)據(jù)的連續(xù)碼流。
[0060]PES流(Packet Elementary Stream):也叫打包的基本碼流,是將基本的碼流ES流根據(jù)需要分成長(zhǎng)度不等的數(shù)據(jù)包,并加上包頭就形成了打包的基本碼流PES流。
[0061]TS流(Transport Stream):也叫傳輸流,是由固定長(zhǎng)度為188字節(jié)的包組成,含有獨(dú)立時(shí)基的一個(gè)或多個(gè)program, —個(gè)program又可以包含多個(gè)視頻、音頻、和文字信息的ES流;每個(gè)ES流會(huì)有不同的PID標(biāo)示。
[0062]節(jié)目由多個(gè)傳輸流(TS)片段構(gòu)成。在播放節(jié)目時(shí),首先在本地接收TS片段,然后對(duì)該TS片段進(jìn)行解碼,獲得PES數(shù)據(jù),將PES數(shù)據(jù)去掉報(bào)頭就獲得ES數(shù)據(jù),將ES數(shù)據(jù)在解碼器中進(jìn)行解碼就可以獲得一幀一幀的視頻數(shù)據(jù)。需要注意的是,在現(xiàn)有技術(shù)中,因?yàn)槊總€(gè)ES具有的PTS (播放時(shí)間戳)只是指示與前一幀的相對(duì)時(shí)間的時(shí)間標(biāo)記(即,例如指示與前一幀間隔幾秒),所以當(dāng)出現(xiàn)不連續(xù)狀況時(shí),該P(yáng)TS指示的相對(duì)時(shí)間將不正確,從而導(dǎo)致音視頻不同步或播放進(jìn)度錯(cuò)誤。
[0063]為此,根據(jù)本發(fā)明實(shí)施例的流媒體數(shù)據(jù)處理方法100包括:
[0064]步驟SlOl:當(dāng)接收啟動(dòng)或搜索指令時(shí),接收節(jié)目的傳輸流片段,所述傳輸流片段具有預(yù)定的時(shí)間長(zhǎng)度。
[0065]在一個(gè)實(shí)施例中,在該步驟中,例如針對(duì)某個(gè)視頻內(nèi)容,當(dāng)用戶(hù)輸入開(kāi)始播放指令時(shí),在本地開(kāi)始接收對(duì)應(yīng)該視頻內(nèi)容的節(jié)目的傳輸流(TS)片段,每個(gè)傳輸流片段具有預(yù)定的時(shí)間長(zhǎng)度,例如I分鐘。在另一實(shí)施例中,用戶(hù)可以對(duì)要播放的內(nèi)容進(jìn)行搜索,并且在搜索后的位置開(kāi)始播放。
[0066]步驟S102:解碼并播放接收的傳輸流片段。
[0067]在一個(gè)實(shí)施例中,在該步驟中,只要一個(gè)TS片段接收完成,就可以開(kāi)始對(duì)其進(jìn)行解碼。如后面提到的,在另一實(shí)施例中,當(dāng)TS片段劃分為更小的片時(shí),則不需要等待一個(gè)TS片段接收完成,而只需要在最小單位的片接收完成時(shí),就可以開(kāi)始解碼。當(dāng)解碼包括編碼的視頻數(shù)據(jù)、音頻數(shù)據(jù)和其它數(shù)據(jù)(如字幕數(shù)據(jù)、控制數(shù)據(jù)等)的ES數(shù)據(jù)流時(shí),可以獲得視頻數(shù)據(jù)、音頻數(shù)據(jù)和其它數(shù)據(jù),并且在播放時(shí),根據(jù)ES中的PTS標(biāo)記來(lái)控制視頻數(shù)據(jù)的顯示、音頻數(shù)據(jù)的輸出以及其它數(shù)據(jù)的輸出。
[0068]步驟S103:當(dāng)檢測(cè)到第一預(yù)定條件時(shí),確定與該預(yù)定條件有關(guān)的第一傳輸流片段。
[0069]在該步驟中,如果檢測(cè)到第一預(yù)定條件,例如播放傳輸流片段時(shí)檢測(cè)到索引文件中的不連續(xù)標(biāo)簽,播放傳輸流片段時(shí)檢測(cè)到帶寬切換,或者播放傳輸流片段時(shí)檢測(cè)到搜索操作,則意味著從解碼器輸出的音視頻的規(guī)格和PTS時(shí)間會(huì)發(fā)生跳變。此時(shí),如果繼續(xù)根據(jù)當(dāng)前ES中的PTS顯示音視頻內(nèi)容,則可能導(dǎo)致音視頻內(nèi)容不同步或者播放進(jìn)度錯(cuò)誤。
[0070]舉例來(lái)說(shuō),當(dāng)檢測(cè)到帶寬切換操作時(shí),由于帶寬發(fā)生變化,則接收TS片段的比特率改變,此時(shí)音視頻的輸出比特率也改變,如果仍然按照之前的PTS時(shí)間輸出,則將導(dǎo)致音視頻內(nèi)容的不同步。
[0071]因此,針對(duì)這樣的情況,需要確定出現(xiàn)這樣的情況時(shí)的第一傳輸流片段。
[0072]步驟S104:獲取該第一傳輸流片段在節(jié)目的播放列表中的位置,從而確定該第一傳輸流片段相對(duì)于節(jié)目的起始時(shí)間。
[0073]在該步驟中,檢測(cè)該第一傳輸流片段在節(jié)目的播放列表中的位置,也就是說(shuō),因?yàn)楣?jié)目是由多個(gè)TS片段組成,所以需要檢測(cè)該第一傳輸流片段在整個(gè)TS片段中的位置,從而確定該第一傳輸流片段相對(duì)于節(jié)目的起始時(shí)間,也就是說(shuō),相對(duì)于整個(gè)節(jié)目的絕對(duì)時(shí)間,而不是相對(duì)于前一 TS的偏移時(shí)間。
[0074]步驟S105:接收該第一傳輸流片段,并且在解碼所述第一傳輸流片段中的基本流數(shù)據(jù)時(shí),將每個(gè)基本流數(shù)據(jù)的播放時(shí)間戳加上該起始時(shí)間,從而使得每個(gè)基本流數(shù)據(jù)具有相對(duì)于整個(gè)節(jié)目的正確的時(shí)間戳。
[0075]在該步驟中,因?yàn)樵谔幚淼谝粋鬏斄髌螘r(shí)出現(xiàn)不連續(xù),所以需要接收該第一傳輸流片段。在接收該第一傳輸流片段后,因?yàn)橐呀?jīng)獲得該第一傳輸流片段在整個(gè)節(jié)目中的絕對(duì)時(shí)間位置作為該第一傳輸流片段的起始時(shí)間,所以在解碼該第一傳輸流片段中的各個(gè)ES流數(shù)據(jù)時(shí),可以將各個(gè)ES流數(shù)據(jù)的PTS加上該起始時(shí)間,從而使得每個(gè)ES流數(shù)據(jù)具有相對(duì)于整個(gè)節(jié)目的正確的時(shí)間戳,而與之前的TS流片段沒(méi)有關(guān)聯(lián)。
[0076]具體來(lái)說(shuō),例如,當(dāng)播放傳輸流片段時(shí)檢測(cè)到索引文件中的不連續(xù)標(biāo)簽時(shí),確定當(dāng)前播放的傳輸流片段為第一傳輸流片段?;蛘撸?dāng)播放傳輸流片段時(shí)檢測(cè)到帶寬切換時(shí),確定當(dāng)前播放的傳輸流片段為第一傳輸流片段?;蛘?,當(dāng)播放傳輸流片段時(shí)檢測(cè)到搜索操作時(shí),確定搜索操作指定的新播放位置處的傳輸流片段為第一傳輸流片段。
[0077]然后,獲取該第一傳輸流片段在播放列表中的位置,確定在該播放列表中在該第一傳輸流片段之前的傳輸流片段的數(shù)量。例如,根據(jù)該第一傳輸流片段的段號(hào),確定其在播放列表中的位置。然后,可以確定在該第一傳輸流片段之前的傳輸流片段的數(shù)量。
[0078]此后,可以將該第一傳輸流片段之前的所有傳輸流片段的時(shí)間長(zhǎng)度求和,獲得一總和時(shí)間。因?yàn)槊總€(gè)傳輸流片段的時(shí)間長(zhǎng)度是預(yù)先可知的,所以通過(guò)將之前的所有傳輸流片段的時(shí)間長(zhǎng)度進(jìn)行加法操作,就可以獲得在該第一傳輸流片段之前的總時(shí)間長(zhǎng)度。然后,將該總和時(shí)間設(shè)為該第一傳輸流片段相對(duì)于節(jié)目的起始時(shí)間。也就是說(shuō),無(wú)論發(fā)生什么不連續(xù)的情況,只要從該起始時(shí)間開(kāi)始播放該第一傳輸流片段,就可以使得第一傳輸流片段正確地播放。
[0079]然后,還可以將該起始時(shí)間記錄在該第一傳輸流片段的屬性信息中,作為后續(xù)相關(guān)的傳輸流片段中的基本流數(shù)據(jù)的時(shí)間戳校準(zhǔn)時(shí)間。例如,該第一傳輸流片段的下一個(gè)傳輸流片段可以參考該第一傳輸流片段中記錄的起始時(shí)間信息,將該起始時(shí)間加上該第一傳輸流片段的時(shí)間長(zhǎng)度,就可以獲得自身相對(duì)于整個(gè)節(jié)目的絕對(duì)時(shí)間位置,從而該下一個(gè)傳輸流片段中的基本流數(shù)據(jù)也可以獲得相對(duì)于整個(gè)節(jié)目的絕對(duì)時(shí)間位置,而不是與該第一傳輸流片段的相對(duì)時(shí)間位置。
[0080]在另一實(shí)施例中,傳輸流分組以預(yù)定單位大小預(yù)先進(jìn)行分割,并且當(dāng)接收啟動(dòng)或搜索指令時(shí),按照所述預(yù)定單位大小的整數(shù)倍接收分割后的傳輸流片段,并且解碼和播放接收的分割后的傳輸流片段。
[0081]具體來(lái)說(shuō),根據(jù)HLS的規(guī)定,TS片段可以加密或者不加密,當(dāng)TS片段加密時(shí),根據(jù)前面描述的實(shí)施例的方式,可以對(duì)加密的TS片段下載完成后進(jìn)行解密,并且進(jìn)行解碼和播放。
[0082]另一方面,當(dāng)TS片段不加密時(shí),則可以對(duì)沒(méi)有加密的節(jié)目進(jìn)行優(yōu)化,對(duì)其進(jìn)行進(jìn)一步分片,然后進(jìn)行下載。具體來(lái)說(shuō),因?yàn)門(mén)S有效數(shù)據(jù)包的最小單位是188字節(jié),因此啟動(dòng)或搜索后下載的第一個(gè)TS片段按照188的整數(shù)倍(如I倍、10倍、或100倍等)個(gè)字節(jié)進(jìn)行分片下載并緩沖,從而可以使得在整個(gè)TS片段下載完成之前就可以將獲得的ES數(shù)據(jù)輸入解碼器中解碼并播放。這樣,可以更快地、更實(shí)時(shí)地播放節(jié)目?jī)?nèi)容,從而提高用戶(hù)的使用體驗(yàn)。
[0083]在進(jìn)行搜索的實(shí)施例中,當(dāng)進(jìn)行搜索操作后,確定搜索操作指定的新播放位置處的傳輸流片段為第一傳輸流片段。然后根據(jù)上面的方式,獲取與該第一傳輸流片段對(duì)應(yīng)的起始時(shí)間,并且從獲取的起始時(shí)間開(kāi)始播放節(jié)目。
[0084]此外,在現(xiàn)有技術(shù)中,當(dāng)搜索發(fā)生以后,緩存中的數(shù)據(jù)失效被清空,此時(shí)基準(zhǔn)PTS也被清空。如果依賴(lài)于基準(zhǔn)PTS,將無(wú)法在上次搜索完成前再次進(jìn)行搜索。然而,根據(jù)本實(shí)施例的方法,因?yàn)橹甘鞠鄬?duì)時(shí)間位置的PTS已經(jīng)校正為現(xiàn)對(duì)于整個(gè)節(jié)目的絕對(duì)時(shí)間位置的PTS,所以可以消除TS之間的PTS依賴(lài),使得只需要計(jì)算處TS段號(hào)就可以完成搜索。
[0085]此外,在搜索操作時(shí),也可以根據(jù)TS片段加密或不加密,在TS片段下載完成后進(jìn)行解碼播放或?qū)S片段進(jìn)行分片下載并解碼播放。
[0086]因此,根據(jù)本發(fā)明實(shí)施例的流媒體處理方法,可以獲得每個(gè)TS片段相對(duì)于節(jié)目的絕對(duì)時(shí)間位置,從而不需要依靠指示與之前TS片段的相對(duì)時(shí)間位置的播放時(shí)間戳來(lái)進(jìn)行播放。因此,可以通過(guò)用絕對(duì)時(shí)間位置校正后的播放時(shí)間戳來(lái)正確地播放節(jié)目,而不管出現(xiàn)何種不連續(xù)的情況。此外,還可以任意地進(jìn)行搜索操作,而不管之前的搜索操作是否完成。
[0087]另外,當(dāng)TS片段為不加密的TS片段時(shí),可以將TS片段劃分為更小的片進(jìn)行下載和解碼播放,從而能夠更快地響應(yīng)播放操作。
[0088]因此,利用根據(jù)本發(fā)明實(shí)施例的流媒體數(shù)據(jù)處理方法,能夠在出現(xiàn)不連續(xù)的情況下以正確的時(shí)間戳來(lái)處理流媒體數(shù)據(jù),并且快速響應(yīng)播放/搜索操作。
[0089]根據(jù)本發(fā)明另一實(shí)施例,提供了一種電子設(shè)備200,包括:
[0090]接收單元201,配置為當(dāng)接收啟動(dòng)或搜索指令時(shí),接收節(jié)目的傳輸流片段,所述傳輸流片段具有預(yù)定的時(shí)間長(zhǎng)度;
[0091]解碼播放單元202,配置為解碼并播放接收的傳輸流片段;
[0092]傳輸流片段確定單元203,配置為當(dāng)檢測(cè)到第一預(yù)定條件時(shí),確定與該預(yù)定條件有關(guān)的第一傳輸流片段;
[0093]起始時(shí)間確定單元204,配置為獲取該第一傳輸流片段在節(jié)目的播放列表中的位置,從而確定該第一傳輸流片段相對(duì)于節(jié)目的起始時(shí)間;以及
[0094]時(shí)間戳校正單元205,配置為通過(guò)所述接收單元201接收該第一傳輸流片段,并且在通過(guò)所述解碼播放單元202解碼所述第一傳輸流片段中的基本流數(shù)據(jù)時(shí),將每個(gè)基本流數(shù)據(jù)的播放時(shí)間戳加上該起始時(shí)間,從而使得每個(gè)基本流數(shù)據(jù)具有相對(duì)于整個(gè)節(jié)目的正確的時(shí)間戳。
[0095]優(yōu)選地,所述第一預(yù)定條件包括:
[0096]播放傳輸流片段時(shí)檢測(cè)到索引文件中的不連續(xù)標(biāo)簽;
[0097]播放傳輸流片段時(shí)檢測(cè)到帶寬切換;或者
[0098]播放傳輸流片段時(shí)檢測(cè)到搜索操作。
[0099]優(yōu)選地,所述傳輸流片段確定單元203進(jìn)一步配置為:
[0100]當(dāng)播放傳輸流片段時(shí)檢測(cè)到索引文件中的不連續(xù)標(biāo)簽時(shí),確定當(dāng)前播放的傳輸流片段為第一傳輸流片段;
[0101]當(dāng)播放傳輸流片段時(shí)檢測(cè)到帶寬切換時(shí),確定當(dāng)前播放的傳輸流片段為第一傳輸流片段;以及
[0102]當(dāng)播放傳輸流片段時(shí)檢測(cè)到搜索操作時(shí),確定搜索操作指定的新播放位置處的傳輸流片段為第一傳輸流片段。[0103]優(yōu)選地,所述起始時(shí)間確定單元204進(jìn)一步配置為:
[0104]獲取該第一傳輸流片段在播放列表中的位置,確定在該播放列表中在該第一傳輸流片段之前的傳輸流片段的數(shù)量;
[0105]將該第一傳輸流片段之前的所有傳輸流片段的時(shí)間長(zhǎng)度求和,獲得一總和時(shí)間;以及
[0106]將該總和時(shí)間設(shè)為該第一傳輸流片段相對(duì)于節(jié)目的起始時(shí)間。
[0107]優(yōu)選地,所述電子設(shè)備200還包括記錄單元206,配置為記錄該起始時(shí)間,作為后續(xù)的傳輸流片段中的基本流數(shù)據(jù)的時(shí)間戳校準(zhǔn)時(shí)間。
[0108]優(yōu)選地,傳輸流分組以預(yù)定單位大小預(yù)先進(jìn)行分割,當(dāng)接收啟動(dòng)或搜索指令時(shí),所述接收單元201按照所述預(yù)定單位大小的整數(shù)倍接收分割后的傳輸流片段,并且所述解碼播放單元202解碼和播放接收的分割后的傳輸流片段。
[0109]優(yōu)選地,所述傳輸流片段確定單元203進(jìn)一步配置為當(dāng)進(jìn)行搜索操作后,確定搜索操作指定的新播放位置處的傳輸流片段為第一傳輸流片段,所述起始時(shí)間確定單元204進(jìn)一步配置為獲取與該第一傳輸流片段對(duì)應(yīng)的起始時(shí)間,以及所述解碼播放單元202進(jìn)一步配置為從獲取的起始時(shí)間開(kāi)始播放節(jié)目。
[0110]可以理解,根據(jù)本實(shí)施例的電子設(shè)備200可以是專(zhuān)用或通用計(jì)算機(jī),其通過(guò)執(zhí)行程序執(zhí)行上面所述的流媒體數(shù)據(jù)處理方法。
[0111]因此,利用根據(jù)本發(fā)明實(shí)施例的電子設(shè)備,能夠在出現(xiàn)不連續(xù)的情況下以正確的時(shí)間戳來(lái)處理流媒體數(shù)據(jù),并且快速響應(yīng)播放/搜索操作。
[0112]應(yīng)用實(shí)施例一
[0113]當(dāng)在諸如智能手機(jī)的電子設(shè)備上應(yīng)用根據(jù)本發(fā)明實(shí)施例的流媒體數(shù)據(jù)處理方法時(shí),如果用戶(hù)選擇在線(xiàn)觀(guān)看電影,該電子設(shè)備可以根據(jù)自身的網(wǎng)絡(luò)帶寬情況自動(dòng)選擇某個(gè)傳輸比特率來(lái)接收該電影的傳輸流數(shù)據(jù),并進(jìn)行解碼以獲得音視頻數(shù)據(jù),并且進(jìn)行播放。
[0114]在播放過(guò)程中,如果當(dāng)前的網(wǎng)絡(luò)帶寬情況發(fā)生改變,例如由于信號(hào)不好,導(dǎo)致傳輸帶寬下降,則該電子設(shè)備檢測(cè)出現(xiàn)帶寬變化的傳輸流片段,并且接收該傳輸流片段,并且根據(jù)上述實(shí)施例中的方法,計(jì)算該傳輸流片段的相對(duì)于整個(gè)節(jié)目的絕對(duì)時(shí)間位置,從而在該傳輸流片段接收完成并進(jìn)行解碼播放時(shí),能夠使得該傳輸流片段中的音視頻數(shù)據(jù)同步,并且與之前的播放進(jìn)度相符,從而使得用戶(hù)能夠流暢地觀(guān)看電影,而不會(huì)受網(wǎng)絡(luò)帶寬變化的影響,從而極大地提高用戶(hù)體驗(yàn)。
[0115]應(yīng)用實(shí)施例二
[0116]當(dāng)在諸如智能手機(jī)的電子設(shè)備上應(yīng)用根據(jù)本發(fā)明實(shí)施例的流媒體數(shù)據(jù)處理方法時(shí),如果用戶(hù)選擇在線(xiàn)觀(guān)看電影,該電子設(shè)備可以根據(jù)自身的網(wǎng)絡(luò)帶寬情況自動(dòng)選擇某個(gè)傳輸比特率來(lái)接收該電影的傳輸流數(shù)據(jù),并進(jìn)行解碼以獲得音視頻數(shù)據(jù),并且進(jìn)行播放。
[0117]在播放過(guò)程中,如果用戶(hù)對(duì)當(dāng)前內(nèi)容不感興趣,希望拖動(dòng)到后面直接進(jìn)行觀(guān)看,用戶(hù)可以進(jìn)行搜索操作,例如將播放按鈕拖動(dòng)到某個(gè)位置。此時(shí),該電子設(shè)備可以檢測(cè)當(dāng)前播放按鈕的位置所對(duì)應(yīng)的傳輸流片段,并且計(jì)算該傳輸流片段的相對(duì)于整個(gè)節(jié)目的絕對(duì)時(shí)間位置,從而在該傳輸流片段接收完成并進(jìn)行解碼播放時(shí),能夠使得該傳輸流片段中的音視頻數(shù)據(jù)同步,從而使得用戶(hù)能夠根據(jù)需要自由地選擇希望觀(guān)看的位置,從而極大地提高用戶(hù)體驗(yàn)。[0118]應(yīng)用實(shí)施例三
[0119]當(dāng)在諸如智能手機(jī)的電子設(shè)備上應(yīng)用根據(jù)本發(fā)明實(shí)施例的流媒體數(shù)據(jù)處理方法時(shí),如果用戶(hù)選擇在線(xiàn)觀(guān)看電影,該電子設(shè)備可以根據(jù)自身的網(wǎng)絡(luò)帶寬情況自動(dòng)選擇某個(gè)傳輸比特率來(lái)接收該電影的傳輸流數(shù)據(jù),并進(jìn)行解碼以獲得音視頻數(shù)據(jù),并且進(jìn)行播放。
[0120]在播放過(guò)程中,如果用戶(hù)對(duì)當(dāng)前內(nèi)容不感興趣,希望拖動(dòng)到后面直接進(jìn)行觀(guān)看,用戶(hù)可以進(jìn)行搜索操作,例如將播放按鈕拖動(dòng)到某個(gè)位置。此時(shí),還可以給用戶(hù)提供快速觀(guān)看的選項(xiàng)。即,根據(jù)上面描述的方法,當(dāng)用戶(hù)選擇快速觀(guān)看時(shí),該電子設(shè)備可以檢測(cè)當(dāng)前播放按鈕的位置所對(duì)應(yīng)的傳輸流片段,并且計(jì)算該傳輸流片段的相對(duì)于整個(gè)節(jié)目的絕對(duì)時(shí)間位置。然后,該電子設(shè)備將該傳輸流片段分給成更小的單元,從而在該一個(gè)單元收完成后,就能夠立即進(jìn)行解碼播放,從而使得用戶(hù)能夠根據(jù)需要更快地觀(guān)看期望的內(nèi)容,從而極大地提聞?dòng)脩?hù)體驗(yàn)。
[0121]需要說(shuō)明的是,在本說(shuō)明書(shū)中,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
[0122]最后,還需要說(shuō)明的是,上述一系列處理不僅包括以這里所述的順序按時(shí)間序列執(zhí)行的處理,而且包括并行或分別地、而不是按時(shí)間順序執(zhí)行的處理。
[0123]通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以全部通過(guò)硬件來(lái)實(shí)施?;谶@樣的理解,本發(fā)明的技術(shù)方案對(duì)【背景技術(shù)】做出貢獻(xiàn)的全部或者部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中 ,如R0M/RAM、磁碟、光盤(pán)等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
[0124]以上對(duì)本發(fā)明進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
【權(quán)利要求】
1.一種流媒體數(shù)據(jù)處理方法,應(yīng)用于電子設(shè)備,該方法包括: 當(dāng)接收啟動(dòng)或搜索指令時(shí),接收節(jié)目的傳輸流片段,所述傳輸流片段具有預(yù)定的時(shí)間長(zhǎng)度; 解碼并播放接收的傳輸流片段; 當(dāng)檢測(cè)到第一預(yù)定條件時(shí),確定與該預(yù)定條件有關(guān)的第一傳輸流片段; 獲取該第一傳輸流片段在節(jié)目的播放列表中的位置,從而確定該第一傳輸流片段相對(duì)于節(jié)目的起始時(shí)間;以及 接收該第一傳輸流片段,并且在解碼所述第一傳輸流片段中的基本流數(shù)據(jù)時(shí),將每個(gè)基本流數(shù)據(jù)的播放時(shí)間戳加上該起始時(shí)間,從而使得每個(gè)基本流數(shù)據(jù)具有相對(duì)于整個(gè)節(jié)目的正確的時(shí)間戳。
2.如權(quán)利要求1所述的數(shù)據(jù)處理方法,其中所述第一預(yù)定條件包括: 播放傳輸流片段時(shí)檢測(cè)到索引文件中的不連續(xù)標(biāo)簽; 播放傳輸流片段時(shí)檢測(cè)到帶寬切換;或者 播放傳輸流片段時(shí)檢測(cè)到搜索操作。
3.如權(quán)利要求2所述的數(shù)據(jù)處理方法,其中確定與該預(yù)定條件有關(guān)的第一傳輸流片段包括: 當(dāng)播放傳輸流片段時(shí)檢測(cè)到索引文件中的不連續(xù)標(biāo)簽時(shí),確定當(dāng)前播放的傳輸流片段為第一傳輸流片段; 當(dāng)播放傳輸流片段時(shí)檢測(cè) 到帶寬切換時(shí),確定當(dāng)前播放的傳輸流片段為第一傳輸流片段;以及 當(dāng)播放傳輸流片段時(shí)檢測(cè)到搜索操作時(shí),確定搜索操作指定的新播放位置處的傳輸流片段為第一傳輸流片段。
4.如權(quán)利要求1所述的數(shù)據(jù)處理方法,其中獲取該第一傳輸流片段在播放列表中的位置,從而確定該第一傳輸流片段相對(duì)于節(jié)目的起始時(shí)間包括: 獲取該第一傳輸流片段在播放列表中的位置,確定在該播放列表中在該第一傳輸流片段之前的傳輸流片段的數(shù)量; 將該第一傳輸流片段之前的所有傳輸流片段的時(shí)間長(zhǎng)度求和,獲得一總和時(shí)間;以及 將該總和時(shí)間設(shè)為該第一傳輸流片段相對(duì)于節(jié)目的起始時(shí)間。
5.如權(quán)利要求1所述的數(shù)據(jù)處理方法,還包括: 記錄該起始時(shí)間,作為后續(xù)的傳輸流片段中的基本流數(shù)據(jù)的時(shí)間戳校準(zhǔn)時(shí)間。
6.如權(quán)利要求1所述的數(shù)據(jù)處理方法,其中傳輸流分組以預(yù)定單位大小預(yù)先進(jìn)行分害!],并且當(dāng)接收啟動(dòng)或搜索指令時(shí),按照所述預(yù)定單位大小的整數(shù)倍接收分割后的傳輸流片段,并且解碼和播放接收的分割后的傳輸流片段。
7.如權(quán)利要求1所述的數(shù)據(jù)處理方法,還包括: 當(dāng)進(jìn)行搜索操作后,確定搜索操作指定的新播放位置處的傳輸流片段為第一傳輸流片段; 獲取與該第一傳輸流片段對(duì)應(yīng)的起始時(shí)間;以及 從獲取的起始時(shí)間開(kāi)始播放節(jié)目。
8.—種電子設(shè)備,包括:接收單元,配置為當(dāng)接收啟動(dòng)或搜索指令時(shí),接收節(jié)目的傳輸流片段,所述傳輸流片段具有預(yù)定的時(shí)間長(zhǎng)度; 解碼播放單元,配置為解碼并播放接收的傳輸流片段; 傳輸流片段確定單元,配置為當(dāng)檢測(cè)到第一預(yù)定條件時(shí),確定與該預(yù)定條件有關(guān)的第一傳輸流片段; 起始時(shí)間確定單元,配置為獲取該第一傳輸流片段在節(jié)目的播放列表中的位置,從而確定該第一傳輸流片段相對(duì)于節(jié)目的起始時(shí)間;以及 時(shí)間戳校正單元,配置為通過(guò)所述接收單元接收該第一傳輸流片段,并且在通過(guò)所述解碼播放單元解碼所述第一傳輸流片段中的基本流數(shù)據(jù)時(shí),將每個(gè)基本流數(shù)據(jù)的播放時(shí)間戳加上該起始時(shí)間,從而使得每個(gè)基本流數(shù)據(jù)具有相對(duì)于整個(gè)節(jié)目的正確的時(shí)間戳。
9.如權(quán)利要求1所述的電子設(shè)備,其中所述第一預(yù)定條件包括: 播放傳輸流片段時(shí)檢測(cè)到索引文件中的不連續(xù)標(biāo)簽; 播放傳輸流片段時(shí)檢測(cè)到帶寬切換;或者 播放傳輸流片段時(shí)檢測(cè)到搜索操作。
10. 如權(quán)利要求9所述的電子設(shè)備,其中所述傳輸流片段確定單元進(jìn)一步配置為: 當(dāng)播放傳輸流片段時(shí)檢測(cè)到索引文件中的不連續(xù)標(biāo)簽時(shí),確定當(dāng)前播放的傳輸流片段為第一傳輸流片段; 當(dāng)播放傳輸流片段時(shí)檢測(cè)到帶寬切換時(shí),確定當(dāng)前播放的傳輸流片段為第一傳輸流片段;以及 當(dāng)播放傳輸流片段時(shí)檢測(cè)到搜索操作時(shí),確定搜索操作指定的新播放位置處的傳輸流片段為第一傳輸流片段。
11.如權(quán)利要求8所述的電子設(shè)備,其中所述起始時(shí)間確定單元進(jìn)一步配置為: 獲取該第一傳輸流片段在播放列表中的位置,確定在該播放列表中在該第一傳輸流片段之前的傳輸流片段的數(shù)量; 將該第一傳輸流片段之前的所有傳輸流片段的時(shí)間長(zhǎng)度求和,獲得一總和時(shí)間;以及 將該總和時(shí)間設(shè)為該第一傳輸流片段相對(duì)于節(jié)目的起始時(shí)間。
12.如權(quán)利要求8所述的電子設(shè)備,還包括記錄單元,配置為記錄該起始時(shí)間,作為后續(xù)的傳輸流片段中的基本流數(shù)據(jù)的時(shí)間戳校準(zhǔn)時(shí)間。
13.如權(quán)利要求8所述的電子設(shè)備,其中傳輸流分組以預(yù)定單位大小預(yù)先進(jìn)行分割,當(dāng)接收啟動(dòng)或搜索指令時(shí),所述接收單元按照所述預(yù)定單位大小的整數(shù)倍接收分割后的傳輸流片段,并且所述解碼播放單元解碼和播放接收的分割后的傳輸流片段。
14.如權(quán)利要求8所述的電子設(shè)備,其中所述傳輸流片段確定單元進(jìn)一步配置為當(dāng)進(jìn)行搜索操作后,確定搜索操作指定的新播放位置處的傳輸流片段為第一傳輸流片段,所述起始時(shí)間確定單元進(jìn)一步配置為獲取與該第一傳輸流片段對(duì)應(yīng)的起始時(shí)間,以及所述解碼播放單元進(jìn)一步配置為從獲取的起始時(shí)間開(kāi)始播放節(jié)目。
【文檔編號(hào)】H04N21/8547GK103491430SQ201210193367
【公開(kāi)日】2014年1月1日 申請(qǐng)日期:2012年6月12日 優(yōu)先權(quán)日:2012年6月12日
【發(fā)明者】赫伽寧 申請(qǐng)人:聯(lián)想(北京)有限公司