專利名稱:一種流媒體的傳輸方法、視頻播放裝置及終端的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及IPTV (Interactive Personal Televison,交互式個(gè)人電視)終 端領(lǐng)域,尤其涉及一種在IPTV機(jī)頂盒上通過對(duì)I幀索引的搜索來進(jìn)行快進(jìn) 快退和定位播放等各種特技操作的流媒體的傳輸方法、視頻播放裝置及終 端。
背景技術(shù):
目前,本地時(shí)移是機(jī)頂盒的一種業(yè)務(wù)描述,在纟番放一個(gè)直播頻道的同時(shí) 將此頻道的多媒體流錄制在機(jī)頂盒中,用戶可以在時(shí)移時(shí)間范圍內(nèi)進(jìn)行trick mode(特技模式,是快進(jìn)、快退、暫停、定位播放、慢放等的統(tǒng)稱。)操 作,在trickmode時(shí)播放的內(nèi)容都是機(jī)頂盒存儲(chǔ)介質(zhì)上的內(nèi)容。機(jī)頂盒在實(shí) 現(xiàn)本地時(shí)移(可以回放幾個(gè)小時(shí)之前的節(jié)目)時(shí),是播放本地錄制好的媒體 文件。當(dāng)快進(jìn)快退播放時(shí),由于帶寬、機(jī)器性能和平臺(tái)的限制,IPTV不能 像PVR ( Personal Video Recorder,個(gè)人視頻錄像機(jī))那樣播放連續(xù)的畫面, 比如播放4X的6M碼流,就需要24M的帶寬,所以只能選擇某些幀來播 放。根據(jù)編碼的格式來看,用I幀來播放是唯一的選擇,因?yàn)镮幀不需要其 他的參考幀,可以獨(dú)立解碼,所以,在快進(jìn)快退播放時(shí),就只發(fā)送I幀,不 再發(fā)送B幀或P幀。以前選取I幀的策略如下倍速為2的n次方時(shí),將跳 過n-l個(gè)I幀來發(fā)送,直到I幀數(shù)量不夠時(shí),將最后一個(gè)I幀發(fā)送出去,然 后發(fā)送RTSP (Real Time Streaming Protocol,實(shí)時(shí)流傳輸協(xié)議信令),結(jié)束本 地播放。由于不同廠家的編碼器在實(shí)際制作片源時(shí),會(huì)采取不同的編碼 法或策 略,這就使片源中I幀的數(shù)量不是一個(gè)常量,所以即使播放長度和快進(jìn)快退 的播放速度一樣的兩個(gè)不同片源,都可能出現(xiàn)快進(jìn)到尾或快退到頭時(shí)的播放 時(shí)間不同的情況。例如片1和片2都是正常播放速度下2分鐘播完的片源,片1中的I幀有180個(gè)和片2中的I幀有200個(gè),當(dāng)以2X倍速4番^t時(shí),就 應(yīng)該在1分鐘播放完畢(如果是4X,就應(yīng)該在30秒播放完畢;8X就是15 秒,以此類推),現(xiàn)在若規(guī)定每秒鐘發(fā)送的I幀個(gè)數(shù)是恒定的M,每個(gè)I幀 的發(fā)送時(shí)間很短,可以忽略不計(jì)。根據(jù)前面講到的取I幀的方法,在2X倍 速的情況下,將用1分鐘發(fā)送所有的I幀,那么在這種情況下,N=l,就是跳 過0個(gè)I幀,即連續(xù)發(fā)送I幀,這樣片1和片2的播放時(shí)間將是180/M和200/M, 本應(yīng)該都是60秒播放完畢的片源已經(jīng)出現(xiàn)了不同的播放時(shí)間。尤其在高倍 速下,幾秒應(yīng)該播放完的片子要幾十秒,這樣就導(dǎo)致了快進(jìn)快退播放的時(shí)間 不準(zhǔn)確,給依賴這個(gè)時(shí)間的程序帶來了嚴(yán)重影響。發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題是提供一種流媒體的傳輸方法、視頻播放裝置 及終端,以使快進(jìn)快退時(shí)的播放時(shí)間與理論時(shí)間相吻合。為了解決上述技術(shù)問題,本發(fā)明提供了一種流媒體的傳輸方法,其中,設(shè)置流媒體在快進(jìn)快退時(shí)單位時(shí)間內(nèi)舉送I幀的個(gè)數(shù),計(jì)算相鄰I幀的 發(fā)送間隔時(shí)間;要快進(jìn)快退時(shí),將所述相鄰I幀的發(fā)送間隔時(shí)間乘以流媒體當(dāng)前的傳輸 倍速,計(jì)算得到要取的I幀的間隔時(shí)間;根據(jù)所述要取的I幀的間隔時(shí)間在片源中查找要播放的I幀;發(fā)送所述查找到的要播放的I幀。進(jìn)一步地,上述傳輸方法還可具有以下特點(diǎn)所述根據(jù)所述要取的I幀 的間隔時(shí)間在片源中查找要播放的I幀具體實(shí)現(xiàn)為讀取當(dāng)前播放位置所在分片的第一個(gè)I幀的顯示時(shí)間戳(PTS);基于所述第一個(gè)I幀的PTS和所述要取的I幀的間隔時(shí)間,計(jì)算得到各 個(gè)要取的I幀的理論播放時(shí)間;根據(jù)所述理論播放時(shí)間在所述分片中查找相匹配的I幀,將該I幀作為 要播放的I幀。進(jìn)一步地,上述傳輸方法還可具有以下特點(diǎn)所述分片中與所述理論播中記錄的I幀偏移量最接近且大于所述理 i侖才番》文時(shí)間的I幀。進(jìn)一步地,上述傳輸方法還可具有以下特點(diǎn)所述設(shè)置流媒體在快進(jìn)快 退時(shí)單位時(shí)間內(nèi)發(fā)送I幀的個(gè)數(shù)具體實(shí)現(xiàn)為設(shè)置流媒體在快進(jìn)快退時(shí)每秒 發(fā)送3個(gè)I幀。 ,進(jìn)一步地,上述傳輸方法還可具有以下特點(diǎn)所述發(fā)送所述查找到的要 播放的I幀具體實(shí)現(xiàn)為每隔所述相鄰I幀的發(fā)送間隔時(shí)間發(fā)送一個(gè)所述要 播放的I幀。本發(fā)明還提供一種視頻播放裝置,包括,I幀個(gè)數(shù)設(shè)置模塊,用于設(shè)置流媒體在快進(jìn)快退時(shí)單位時(shí)間內(nèi)發(fā)送I幀 的個(gè)數(shù);計(jì)算模塊,用于根據(jù)所述I幀個(gè)數(shù)設(shè)置單元設(shè)置的單位時(shí)間內(nèi)發(fā)送I幀 的個(gè)數(shù)計(jì)算相鄰I幀的發(fā)送間隔時(shí)間,將所述相鄰I幀的發(fā)送間隔時(shí)間乘以 流媒體當(dāng)前的傳輸倍速得到要取的I幀的間隔時(shí)間;查找I幀模塊,用于根據(jù)所述要取的I幀的間隔時(shí)間在片源中查找要播 放的I幀,并將查找到的要播放的I幀發(fā)送給發(fā)送模塊;發(fā)送模塊,用于發(fā)送所述查找到的要播放的I幀。進(jìn)一步地,上述視頻播放裝置還可具有以下特點(diǎn)所述查找I幀模塊包括讀取單元,用于讀取當(dāng)前播放位置所在分片的第一個(gè)I幀的PTS,讀取 查找單元查找到的要播放的I幀并將該I幀發(fā)送給所述發(fā)送模塊;播放時(shí)間計(jì)算單元,用于基于所述第一個(gè)I幀的PTS和所述要取的I幀 的間隔時(shí)間,計(jì)算得到各個(gè)要取的I幀的理論播放時(shí)間;查找單元,用于才艮據(jù)所述理i侖寺番;改時(shí)間在所述分片中查找相匹配的I幀, 將該I幀作為要播放的I幀。進(jìn)一步地,上述視頻播放裝置還可具有以下特點(diǎn)所述分片中與所述理 論播放時(shí)間相匹配的I幀是指所述分片中記錄的I幀偏移量最接近且大于所 述理論播放時(shí)間的I幀。進(jìn)一步地,上述視頻播放裝置還可具有以下特點(diǎn)所述I幀個(gè)數(shù)設(shè)置模 塊用于將流媒體在快進(jìn)快退時(shí)單位時(shí)間內(nèi)發(fā)送I幀的個(gè)數(shù)設(shè)置為每秒發(fā)送3 個(gè)I幀。本發(fā)明還提供一種終端,包括上述的視頻播放裝置。本發(fā)明提供的一種流媒體的傳輸方法、視頻播放裝置及終端能使快進(jìn)快 退時(shí)的播放時(shí)間能與理論時(shí)間相吻合,完善地實(shí)現(xiàn)了快進(jìn)快退的功能。
圖1是根據(jù)本發(fā)明實(shí)施例的視頻播放裝置的示意圖;圖2是根據(jù)本發(fā)明實(shí)施例的流媒體的傳輸方法的流程圖。
具體實(shí)施方式
下面結(jié)合實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)行更詳細(xì)的說明。圖1是根據(jù)本發(fā)明實(shí)施例的視頻播放裝置的示意圖,如圖1所示,本實(shí) 施例的視頻播放裝置包括I幀個(gè)數(shù)設(shè)置模塊、計(jì)算模塊、查找I幀模塊和發(fā) 送沖莫塊,其中,I幀個(gè)數(shù)設(shè)置模塊用于設(shè)置流媒體在快進(jìn)快退時(shí)單位時(shí)間內(nèi)發(fā)送I幀的 個(gè)數(shù),例如,設(shè)置流媒體在快進(jìn)快退時(shí)每秒發(fā)送3個(gè)I幀。計(jì)算模塊用于根據(jù)單位時(shí)間內(nèi)發(fā)送I幀的個(gè)數(shù)計(jì)算相鄰I幀的發(fā)送間隔 時(shí)間,例如l/3秒;將所述相鄰l幀的發(fā)送間隔時(shí)間乘以傳輸倍速得到要取 的I幀的間隔時(shí)間,例如,以4倍速傳輸數(shù)據(jù),則要取的I幀的間隔時(shí)間為 1/3秒x 4。查找I幀模塊用于根據(jù)要取的I幀的間隔時(shí)間在片源中查找要播放的I 幀,并將查找到的要播放的I幀發(fā)送給發(fā)送模塊。查找I幀模塊具體包括讀取單元、理論播放時(shí)間計(jì)算單元和查找單元, 其中讀取單元用于當(dāng)前播放位置所在分片的第一個(gè)I幀的PTS,讀取查找單7元查找到的要播放的I幀并將該I幀發(fā)送給發(fā)送模塊;播放時(shí)間計(jì)算單元用 于基于所述第一個(gè)I幀的PTS和所述要取的I幀的間隔時(shí)間,計(jì)算得到各個(gè) 要取的I幀的理論播放時(shí)間;查找單元用于根據(jù)所述理論播放時(shí)間在所述分 片中查找相匹配的I幀,將該I幀作為要播放的I幀,這里分片中與所述理 論播放時(shí)間相匹配的I幀是指所述分片中記錄的I幀偏移量最接近且大于所 述理論播放時(shí)間的I幀。發(fā)送模塊用于發(fā)送所述要播放的I幀,具體地,每隔相鄰I幀的發(fā)送間 隔時(shí)間發(fā)送一個(gè)所述要播放的I幀。本發(fā)明還提供一種終端,該終端包括上述的視頻播放裝置。該終端可以 是機(jī)頂盒,例如IPTV機(jī)頂盒。圖2是根據(jù)本發(fā)明實(shí)施例的流々某體的傳輸方法的流程圖,如圖2所示, 本發(fā)明實(shí)施例的流媒體的傳輸方法,包括步驟l,設(shè)置流媒體在快進(jìn)快退時(shí)單位時(shí)間內(nèi)發(fā)送I幀的個(gè)數(shù)m,則可 以得到相鄰I幀的發(fā)送間隔時(shí)間,為單^f立時(shí)間除以m??梢栽O(shè)置在快進(jìn)快退時(shí)每秒鐘發(fā)送3個(gè)I幀,這是個(gè)經(jīng)驗(yàn)值,則相鄰I 幀的發(fā)送間隔時(shí)間為1/3秒。如果每秒鐘發(fā)送I幀的個(gè)數(shù)少于3個(gè)的話,畫 面在流暢度方面表現(xiàn)的較差;大于3,對(duì)于效果的增益不大。當(dāng)然每秒鐘發(fā) 送I幀的個(gè)數(shù)M不限于3個(gè),也可以是其它個(gè)數(shù),可以由廠家等根據(jù)實(shí)際 情況自由i殳定。步驟2,計(jì)算要取的I幀的間隔時(shí)間。要快進(jìn)快退時(shí),要取的I幀的間隔時(shí)間為相鄰I幀的發(fā)送間隔時(shí)間乘以 流媒體當(dāng)前的傳輸倍速。例如,每秒鐘發(fā)送I幀的個(gè)數(shù)為3,則相鄰I幀的發(fā)送間隔時(shí)間為333 毫秒,就是i兌每333毫秒就發(fā)送一個(gè)I幀;傳輸倍速(speed )例如為2、 4、 8等2的n次方;要耳又的I幀的間隔時(shí)間應(yīng)該是333毫秒乘以speed。比如i兌,speed是4x,8那么,在正常倍速下,要取的I幀的間隔時(shí)間就是333x4毫秒。 步驟3,查找I幀。通過步驟1和步驟2知道要找的每一個(gè)I幀的間隔時(shí)間是多少,再加上當(dāng) 前播放位置所在分片的第一個(gè)I幀的PTS (presentation time stamp,顯示時(shí) 間戳),就可以得到下一個(gè)要播放的I幀的PTS??梢匀菀椎貜钠吹姆制?讀取當(dāng)前播放位置所在分片的第一個(gè)I幀的PTS??梢酝ㄟ^分片索引文件和I幀索引文件來查找I幀,其中分片索引文件 中包含片源有幾個(gè)分片、分片的名字、分片在磁盤中的位置、每個(gè)分片對(duì)應(yīng) 的I幀索引文件的名稱和每個(gè)分片的顯示時(shí)間范圍,例如分片l是從第O 分鐘到第l分鐘,分片2是從第一分鐘到第二分鐘;I幀索引文件中記錄每 個(gè)I幀的序號(hào)、偏移量、大小和PTS等。首先需要查找要播放的I幀所在的分片位置,即找I幀在某個(gè)分片的偏 移量,先大致確定I幀在哪個(gè)分片中,這個(gè)主要是通過判斷I幀的PTS是否 在這個(gè)分片的顯示時(shí)間范圍內(nèi)。然后再在這個(gè)分片對(duì)應(yīng)的I幀索引文件中查找與該I帕的PTS接近的I 幀記錄,由于在I幀索引文件中記錄了每個(gè)I幀相對(duì)于第一個(gè)I幀的播放時(shí) 間間隔、偏移量和大小,所以只要取出第一個(gè)I幀的PTS作為基準(zhǔn),加上步 驟2中算出的要取的I幀的時(shí)間間隔,就可以得到下一個(gè)要取的I幀(要取 的第二個(gè)I幀)的理論播放時(shí)間,將該理論播放時(shí)間記錄下來;然后在I幀 索引文件中查找相匹配的I幀。由于不可能找到完全與上述得到的理論播放 時(shí)間相對(duì)應(yīng)的值的I幀,所以根據(jù)就近原則且I幀索引文件中記錄的I幀的 偏移量大于這個(gè)理論播放時(shí)間來查找I幀;最后,根據(jù)找到的I幀的偏移量和大小,將I幀數(shù)據(jù)讀取出來,等待發(fā) 送。當(dāng)發(fā)送出去后,計(jì)算下一個(gè)I幀時(shí),要用記錄下來的上一個(gè)I幀的理論 播放時(shí)間加上步驟2中算出的要取的I幀的時(shí)間間隔,而不是之前找到的那 個(gè)I幀的實(shí)際播放時(shí)間加上步驟2中算出的要取的I幀的時(shí)間間隔。也就是 基于當(dāng)前播放位置所在分片的第一個(gè)I幀的PTS和步驟2中算出的要取的I 幀的間隔時(shí)間,計(jì)算得到各個(gè)要取的I幀的理論播放時(shí)間。這樣做可以減少誤差的累積,因?yàn)檎业降腎幀的PTS并不是完全等于計(jì)算出來的理論值,當(dāng)下一次找I幀時(shí),就要用到上一個(gè)發(fā)送I幀的PTS,如果用I幀實(shí)際的PTS,那么就會(huì)產(chǎn)生一個(gè)誤差,如此循環(huán),這個(gè)誤差就會(huì)增大。
步驟4,調(diào)整I幀發(fā)送時(shí)間發(fā)送I幀,需要說明的是找到I幀所花費(fèi)的時(shí)間很短,可以忽略不計(jì),當(dāng)一個(gè)I幀發(fā)送出去后,并不能馬上發(fā)送第二個(gè),要等待一段時(shí)間,這個(gè)時(shí)間就是相鄰I幀的發(fā)送間隔時(shí)間。
由于只發(fā)送I幀,所以如果不控制一下發(fā)送速度,那么就會(huì)有圖像和理論時(shí)間不匹配,如果不控制發(fā)送的間隔時(shí)間,加上網(wǎng)絡(luò)傳輸延時(shí)的忽略,估計(jì)在幾秒內(nèi)就能播放完畢,嚴(yán)重和理論的1分鐘不符合。例如,若要在1秒鐘內(nèi)發(fā)送3個(gè)I幀,則相鄰I幀的發(fā)送的時(shí)間間隔是1000/3 = 333ms。
本發(fā)明提供的流媒體的傳輸方法改進(jìn)了取I幀的策略,通過計(jì)算應(yīng)該發(fā)送的I幀的時(shí)間間隔來取I幀,以達(dá)到快進(jìn)快退時(shí)的播放時(shí)間能與理論時(shí)間相吻合(理論時(shí)間就是要播放時(shí)間除以播放倍速),從而完美地實(shí)現(xiàn)了快進(jìn)快退功能,尤其在高倍速下(32x以上),播放時(shí)間幾乎和理論時(shí)間相差無幾,較現(xiàn)有技術(shù)的取I幀的策略有極大的提升,無論是現(xiàn)場測試還是用戶體驗(yàn)都得到了非常好的評(píng)價(jià)。本發(fā)明提供的流媒體的傳輸方法也可以應(yīng)用到其他的流媒體傳輸方面,對(duì)于流媒體平臺(tái)的特技顯示的傳輸,也可借鑒此本發(fā)明提供的流媒體的傳輸方法來完成快進(jìn)快退的碼流傳輸。
顯然,根據(jù)本發(fā)明的技術(shù)方案及其較佳實(shí)施例的描述,本領(lǐng)域的技術(shù)人員可以做出各種可能的等同改變或替換,而所有這些改變或替換都應(yīng)屬于本發(fā)明的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1、一種流媒體的傳輸方法,其中,設(shè)置流媒體在快進(jìn)快退時(shí)單位時(shí)間內(nèi)發(fā)送I幀的個(gè)數(shù),計(jì)算相鄰I幀的發(fā)送間隔時(shí)間;要快進(jìn)快退時(shí),將所述相鄰I幀的發(fā)送間隔時(shí)間乘以流媒體當(dāng)前的傳輸倍速,計(jì)算得到要取的I幀的間隔時(shí)間;根據(jù)所述要取的I幀的間隔時(shí)間在片源中查找要播放的I幀;發(fā)送所述查找到的要播放的I幀。
2、 如權(quán)利要求1所述的傳輸方法,其特征在于所述根據(jù)所述要取的 I幀的間隔時(shí)間在片源中查找要播放的I幀具體實(shí)現(xiàn)為讀取當(dāng)前播放位置所在分片的第一個(gè)I幀的顯示時(shí)間戳(PTS);基于所述第一個(gè)I幀的PTS和所述要取的I幀的間隔時(shí)間,計(jì)算得到各 個(gè)要取的I幀的理論播放時(shí)間;根據(jù)所述理論播放時(shí)間在所述分片中查找相匹配的I幀,將該I幀作為 要播放的I幀。
3、 如權(quán)利要求2所述的傳輸方法,其特征在于所述分片中與所述理論播放時(shí)間相匹配的I幀是指所述分片中記錄的I 幀偏移量最接近且大于所述理論播放時(shí)間的I幀。
4、 如權(quán)利要求1所述的傳輸方法,其特征在于所述設(shè)置流媒體在快 進(jìn)快退時(shí)單位時(shí)間內(nèi)發(fā)送I幀的個(gè)數(shù)具體實(shí)現(xiàn)為設(shè)置流媒體在快進(jìn)快退時(shí)每秒發(fā)送3個(gè)I幀。
5、 如權(quán)利要求1至4任一項(xiàng)所述的傳輸方法,其特征在于所述發(fā)送 所述查找到的要播放的I幀具體實(shí)現(xiàn)為每隔所述相鄰I幀的發(fā)送間隔時(shí)間發(fā)送一個(gè)所述要播放的I幀。
6、 一種^L頻播放裝置,包括,I幀個(gè)數(shù)設(shè)置模塊,用于設(shè)置流媒體在快進(jìn)快退時(shí)單位時(shí)間內(nèi)發(fā)送I幀的個(gè)數(shù);計(jì)算模塊,用于根據(jù)所述I幀個(gè)數(shù)設(shè)置單元設(shè)置的單位時(shí)間內(nèi)發(fā)送I幀 的個(gè)數(shù)計(jì)算相鄰I幀的發(fā)送間隔時(shí)間,將所述相鄰I幀的發(fā)送間隔時(shí)間乘以流媒體當(dāng)前的傳輸倍速得到要取的I幀的間隔時(shí)間;查找I幀模塊,用于根據(jù)所述要取的I幀的間隔時(shí)間在片源中查找要播 放的I幀,并將查找到的要播放的I幀發(fā)送給發(fā)送模塊;發(fā)送模塊,用于發(fā)送所述查找到的要播放的I幀。
7、 如權(quán)利要求6所述的視頻播放裝置,其特征在于所述查找I幀模 塊包括讀取單元,用于讀取當(dāng)前播放位置所在分片的第一個(gè)I幀的PTS,讀取 查找單元查找到的要播放的I幀并將該I幀發(fā)送給所述發(fā)送模塊;播放時(shí)間計(jì)算單元,用于基于所述第一個(gè)I幀的PTS和所述要取的I幀 的間隔時(shí)間,計(jì)算得到各個(gè)要取的I幀的理論播放時(shí)間;查找單元,用于根據(jù)所述理論播放時(shí)間在所述分片中查找相匹配的I幀, 將該I幀作為要播放的I幀。
8、 如權(quán)利要求7所述的視頻播放裝置,其特征在于所述分片中與所述理論播放時(shí)間相匹配的I幀是指所述分片中記錄的I 幀偏移量最接近且大于所述理論播放時(shí)間的I幀。
9、 如權(quán)利要求6至8任一項(xiàng)所述的視頻播放裝置,其特征在于所述I幀個(gè)數(shù)設(shè)置模塊用于將流媒體在快進(jìn)快退時(shí)單位時(shí)間內(nèi)發(fā)送I幀 的個(gè)數(shù)設(shè)置為每秒發(fā)送3個(gè)I幀。
10、 一種終端,包括如權(quán)利要求6至9任一項(xiàng)所述的視頻播放裝置。
全文摘要
本發(fā)明提供一種流媒體的傳輸方法、視頻播放裝置及終端,該方法包括設(shè)置流媒體在快進(jìn)快退時(shí)單位時(shí)間內(nèi)發(fā)送I幀的個(gè)數(shù),計(jì)算相鄰I幀的發(fā)送間隔時(shí)間;要快進(jìn)快退時(shí),將所述相鄰I幀的發(fā)送間隔時(shí)間乘以流媒體當(dāng)前的傳輸倍速,計(jì)算得到要取的I幀的間隔時(shí)間;根據(jù)所述要取的I幀的間隔時(shí)間在片源中查找要播放的I幀;發(fā)送所述查找到的要播放的I幀。根據(jù)本發(fā)明能夠使快進(jìn)快退時(shí)的播放時(shí)間與理論時(shí)間相吻合。
文檔編號(hào)H04N7/24GK101635847SQ20091016894
公開日2010年1月27日 申請(qǐng)日期2009年9月2日 優(yōu)先權(quán)日2009年9月2日
發(fā)明者趙國強(qiáng) 申請(qǐng)人:中興通訊股份有限公司