專利名稱:一種碼流定點(diǎn)搜索方法、裝置及播放器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于數(shù)字碼流播放技術(shù)領(lǐng)域,尤其涉及一種碼流定點(diǎn)搜索方法、裝置及播放器。
背景技術(shù):
在數(shù)字碼流(如音樂(lè)、視頻等)播放中,經(jīng)常有從某個(gè)特定時(shí)間點(diǎn)開(kāi)始播放的需求,也即碼流定點(diǎn)播放,需要先搜索與 該特定時(shí)間點(diǎn)對(duì)應(yīng)的碼流文件位置,從而從該文件位置處播放,進(jìn)一步實(shí)現(xiàn)音視頻數(shù)據(jù)的同步,如用戶想從第5分鐘開(kāi)始觀看視頻,則需要找到碼流中最接近5分鐘的圖像時(shí)間戳,并跳到該位置開(kāi)始播放,而該時(shí)間戳表明了每一幀圖像的輸出時(shí)間。對(duì)于有位置索引的碼流,可以通過(guò)索引表,直接跳到需要的時(shí)間進(jìn)行播放,但對(duì)索引表不完整或無(wú)索引表的數(shù)字碼流時(shí),則無(wú)法通過(guò)查找索引表的方法進(jìn)行精確搜索。針對(duì)無(wú)索引表的碼流,目前用到的一種搜索方法的步驟如下,如說(shuō)明書(shū)附圖1所示:在步驟SlOl中,根據(jù)預(yù)設(shè)的待搜索時(shí)間、碼流總時(shí)間及碼流總大小,獲取與該待搜索時(shí)間對(duì)應(yīng)的預(yù)選碼流文件位置。具體地,利用預(yù)設(shè)的待搜索時(shí)間、碼流總時(shí)間及碼流總大小,根據(jù)下式計(jì)算得到待搜索時(shí)間對(duì)應(yīng)的碼流文件位置:Pos = Tseek*Stotal/Ttotal.
其中,Tseek為待搜索時(shí)間,Ttotal為碼流總時(shí)間,也即視頻碼流總時(shí)間,Stotal為碼流總大小,也即視頻碼流總大小,Pos為估算得到的預(yù)選碼流文件位置。在步驟S102中,將碼流跳轉(zhuǎn)到該預(yù)選碼流文件位置處,獲取與該碼流文件位置對(duì)應(yīng)的時(shí)間戳,并記錄該跳轉(zhuǎn)的次數(shù)。具體地,將碼流跳轉(zhuǎn)到計(jì)算得到的預(yù)選文件位置Pos,找到該位置附近的時(shí)間戳Tfound,并記錄該跳轉(zhuǎn)的次數(shù)。在步驟S103中,判斷該時(shí)間戳減去該待搜索時(shí)間的差值是否超過(guò)預(yù)設(shè)的精度值范圍,是,則執(zhí)行步驟S104,否,則執(zhí)行步驟S109,結(jié)束搜索。在步驟S104中,將該碼流文件位置減去預(yù)設(shè)的偏移量,以獲取新的碼流文件位置。在步驟S105中,判斷該待搜索時(shí)間減去該時(shí)間戳的差值是否超過(guò)該預(yù)設(shè)的精度值范圍,是,則執(zhí)行步驟S106,否,則執(zhí)行步驟S109,結(jié)束搜索。在步驟S106中,將該碼流文件位置加上該預(yù)設(shè)的偏移量,以獲取新的碼流文件位置。具體地,比較找到的時(shí)間戳Tfound與待搜索時(shí)間Tseek,若Tfound大于/小于待搜Tseek超過(guò)設(shè)定精度,則對(duì)應(yīng)地把Pos減/加上一定的偏移量。步驟S107,更新該預(yù)選碼流文件位置為新的碼流文件位置。步驟S108,判斷該跳轉(zhuǎn)的次數(shù)是否超過(guò)預(yù)設(shè)的次數(shù),是,則執(zhí)行步驟S109,結(jié)束搜素,否,則返回執(zhí)行步驟S102。
該搜索方法能夠達(dá)到精確搜索的一個(gè)前提是:整個(gè)碼流的碼率變化較小,即碼流播放中每秒鐘所占的文件大小基本相同,而當(dāng)碼流的碼率變化較大時(shí),則很難在較少的文件跳轉(zhuǎn)次數(shù)內(nèi)達(dá)到一定的精度,多次的文件跳轉(zhuǎn)和尋找碼流的時(shí)間會(huì)大大降低搜索的效率。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的在于提供一種碼流定點(diǎn)搜索方法、裝置及播放器,旨在解決利用現(xiàn)有的碼流定點(diǎn)搜索方法進(jìn)行定點(diǎn)搜索時(shí),搜索時(shí)間長(zhǎng)、搜索到的文件位置精度低的問(wèn)題。本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種碼流定點(diǎn)搜索方法,所述方法包括下述步驟:獲取與待搜索時(shí)間對(duì)應(yīng)的預(yù)選文件位置以及與所述預(yù)選文件位置對(duì)應(yīng)的時(shí)間戳;當(dāng)所述時(shí)間戳與所述待搜索時(shí)間的差的絕對(duì)值大于預(yù)設(shè)的誤差值時(shí),進(jìn)一步根據(jù)獲取的時(shí)間戳的次數(shù)、所述時(shí)間戳及上一次獲取的時(shí)間戳與所述待搜索時(shí)間的位置關(guān)系,對(duì)所述預(yù)選文件位置進(jìn)行校正計(jì)算,以獲取新的文件位置,并記錄校正的次數(shù);當(dāng)所述新的文件位置與所述預(yù)選文件位置不相同且所述校正次數(shù)沒(méi)有超過(guò)預(yù)設(shè)的次數(shù)時(shí),更新所述預(yù)選文件位置為所述新的文件位置;獲取與所述新的文件位置對(duì)應(yīng)的時(shí)間戳,重新判斷所述時(shí)間戳與所述待搜索時(shí)間的差的絕對(duì)值是否大于預(yù)設(shè)的誤差值,直至滿足預(yù)設(shè)的條件,退出本次搜索。本發(fā)明實(shí)施例的另一目的在于提供一種碼流定點(diǎn)搜索裝置,所述裝置包括:獲取單元,用于獲取與待搜索時(shí)間對(duì)應(yīng)的預(yù)選文件位置以及與所述預(yù)選文件位置對(duì)應(yīng)的時(shí)間戳;校正單元,用于當(dāng)所述時(shí)間戳與所述待搜索時(shí)間的差的絕對(duì)值大于預(yù)設(shè)的誤差值時(shí),進(jìn)一步根據(jù)獲取的時(shí)間戳的次數(shù)、所述時(shí)間戳及上一次獲取的時(shí)間戳與所述待搜索時(shí)間的位置關(guān)系,對(duì)所述預(yù)選文件位置進(jìn)行校正計(jì)算,以獲取新的文件位置,并記錄校正的次數(shù);更新單元,用于當(dāng)所述新的文件位置與所述預(yù)選文件位置不相同且所述校正次數(shù)沒(méi)有超過(guò)預(yù)設(shè)的次數(shù)時(shí),更新所述預(yù)選文件位置為所述新的文件位置;以及時(shí)間戳獲取及判斷單元,用于獲取與所述新的文件位置對(duì)應(yīng)的時(shí)間戳,并重新判斷所述時(shí)間戳與所述待搜索時(shí)間的差的絕對(duì)值是否大于預(yù)設(shè)的誤差值,直至滿足預(yù)設(shè)的條件,退出本次搜索。本發(fā)明實(shí)施例的另一目的在于提供一種包括上述碼流定點(diǎn)搜索裝置的播放器。本發(fā)明實(shí)施例通過(guò)獲取與待搜索時(shí)間對(duì)應(yīng)的預(yù)選文件位置及與其對(duì)應(yīng)的時(shí)間戳,當(dāng)該時(shí)間戳與該待搜索時(shí)間的差的絕對(duì)值大于預(yù)設(shè)的誤差值時(shí),進(jìn)一步根據(jù)獲取的時(shí)間戳的次數(shù)、該時(shí)間戳及上一次獲取的時(shí)間戳與該待搜索時(shí)間的位置關(guān)系,對(duì)該預(yù)選文件位置進(jìn)行校正計(jì)算,以獲取新的文件位置,并記錄校正的次數(shù),當(dāng)該新的文件位置與該預(yù)選文件位置不相同且該校正次數(shù)沒(méi)有超過(guò)預(yù)設(shè)的次數(shù)時(shí),更新該預(yù)選文件位置為該新的文件位置,并獲取與該新的文件位置對(duì)應(yīng)的時(shí)間戳,重新判斷該時(shí)間戳與該待搜索時(shí)間的差的絕對(duì)值是否大于預(yù)設(shè)的誤差值,直至滿足預(yù)設(shè)的條件,退出本次搜索,從而獲取到具有較高精度的文件位置,解決了利用現(xiàn)有的碼流定點(diǎn)搜索方法對(duì)無(wú)索引表的碼流進(jìn)行定點(diǎn)搜索時(shí),搜索時(shí)間長(zhǎng)、搜索到的文件位置精度低的問(wèn)題,縮短了搜索時(shí)間,提高了搜索到的文件位置精度。
圖1是現(xiàn)有的碼流搜索方法的實(shí)現(xiàn)流程圖;圖2是本發(fā)明第一實(shí)施例提供的碼流定點(diǎn)搜索方法的實(shí)現(xiàn)流程圖;圖3是本發(fā)明第二實(shí)施例提供的碼流定點(diǎn)搜索方法的實(shí)現(xiàn)流程圖;圖4是本發(fā)明第三實(shí)施例提供的碼流定點(diǎn)搜索裝置的結(jié)構(gòu)圖;圖5是本發(fā)明第三實(shí)施例提供的碼流定點(diǎn)搜索裝置中校正單元的具體結(jié)構(gòu)圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明實(shí)施例通過(guò)待搜索時(shí)間獲取初始搜索的文件位置,并根據(jù)與該文件位置對(duì)應(yīng)的時(shí)間戳、上一次獲取的時(shí)間戳以及待搜索時(shí)間之間的位置關(guān)系,對(duì)該文件位置進(jìn)行校正,直至滿足預(yù)設(shè)的條件,使得搜索時(shí)間得到降低,搜索的精度得到提高。本發(fā)明實(shí)施例提供了一種碼流定點(diǎn)搜索方法,所述方法包括下述步驟:獲取與待搜索時(shí)間對(duì)應(yīng)的預(yù)選文件位置以及與所述預(yù)選文件位置對(duì)應(yīng)的時(shí)間戳;當(dāng)所述時(shí)間戳與所述待搜索時(shí)間的差的絕對(duì)值大于預(yù)設(shè)的誤差值時(shí),進(jìn)一步根據(jù)獲取的時(shí)間戳的次數(shù)、所述時(shí)間戳及上一次獲取的時(shí)間戳與所述待搜索時(shí)間的位置關(guān)系,對(duì)所述預(yù)選文件位置進(jìn)行校正計(jì)算,以獲取新的文件位置,并記錄校正的次數(shù);當(dāng)所述新的文件位置與所述預(yù)選文件位置不相同且所述校正次數(shù)沒(méi)有超過(guò)預(yù)設(shè)的次數(shù)時(shí),更新所述預(yù)選文件位置為所述新的文件位置;獲取與所述新的文件位置對(duì)應(yīng)的時(shí)間戳,重新判斷所述時(shí)間戳與所述待搜索時(shí)間的差的絕對(duì)值是否大于預(yù)設(shè)的誤差值,直至滿足預(yù)設(shè)的條件,退出本次搜索。本發(fā)明實(shí)施例還提供了一種碼流定點(diǎn)搜索裝置,所述裝置包括:獲取單元,用于獲取與待搜索時(shí)間對(duì)應(yīng)的預(yù)選文件位置以及與所述預(yù)選文件位置對(duì)應(yīng)的時(shí)間戳;校正單元,用于當(dāng)所述時(shí)間戳與所述待搜索時(shí)間的差的絕對(duì)值大于預(yù)設(shè)的誤差值時(shí),進(jìn)一步根據(jù)獲取的時(shí)間戳的次數(shù)、所述時(shí)間戳及上一次獲取的時(shí)間戳與所述待搜索時(shí)間的位置關(guān)系,對(duì)所述預(yù)選文件位置進(jìn)行校正計(jì)算,以獲取新的文件位置,并記錄校正的次數(shù);更新單元,用于當(dāng)所述新的文件位置與所述預(yù)選文件位置不相同且所述校正次數(shù)沒(méi)有超過(guò)預(yù)設(shè)的次數(shù)時(shí),更新所述預(yù)選文件位置為所述新的文件位置;以及時(shí)間戳獲取及判斷單元,用于獲取與所述新的文件位置對(duì)應(yīng)的時(shí)間戳,并重新判斷所述時(shí)間戳與所述待搜索時(shí)間的差的絕對(duì)值是否大于預(yù)設(shè)的誤差值,直至滿足預(yù)設(shè)的條件,退出本次搜索。本發(fā)明實(shí)施例還提供了 一種包括上述碼流定點(diǎn)搜索裝置的播放器。本發(fā)明實(shí)施例通過(guò)待搜索時(shí)間獲取初始搜索的文件位置,并根據(jù)與該文件位置對(duì)應(yīng)的時(shí)間戳、上一次獲取的時(shí)間戳以及待搜索時(shí)間之間的位置關(guān)系,對(duì)該搜索到的文件位置進(jìn)行校正,直至滿足預(yù)設(shè)的條件,解決了利用現(xiàn)有的碼流定點(diǎn)搜索方法對(duì)無(wú)索引表的碼流進(jìn)行定點(diǎn)搜索時(shí),搜索時(shí)間長(zhǎng)、搜索到的文件位置精度低的問(wèn)題,減少了定點(diǎn)播放時(shí)所用的搜索時(shí)間,提高了定點(diǎn)播放所需的文件位置的精度。以下結(jié)合具體實(shí)施例對(duì)本發(fā)明的具體實(shí)現(xiàn)進(jìn)行詳細(xì)描述:實(shí)施例一:圖2示出了本發(fā)明第一實(shí)施例提供的碼流定點(diǎn)搜索方法的實(shí)現(xiàn)流程,詳述如下:在步驟S201中,獲取與待搜索時(shí)間對(duì)應(yīng)的預(yù)選文件位置以及與該預(yù)選文件位置對(duì)應(yīng)的時(shí)間戳。在具體實(shí)施過(guò)程中,利用已知的待搜索時(shí)間、碼流總時(shí)間及碼流總大小,根據(jù)公式(I)計(jì)算得到待搜索時(shí)間對(duì)應(yīng)的預(yù)選文件位置:Pos = Tseek*Stotal/Ttotal ; (I)公式(I)中,Tseek為待搜索時(shí)間,Ttotal為碼流總時(shí)間,也即視頻碼流總時(shí)間,Stotal為碼流總大小,也即視頻碼流總大小,Pos為估算得到的預(yù)選文件位置。進(jìn)一步地,碼流跳轉(zhuǎn)到得到的該文件位置Pos處,找到該文件位置附近的時(shí)間戳,此時(shí)碼流跳轉(zhuǎn)的次數(shù)與獲取時(shí)間戳的次數(shù)相等。在步驟S202中,當(dāng)該時(shí)間戳與該待搜索時(shí)間的差的絕對(duì)值大于預(yù)設(shè)的誤差值時(shí),進(jìn)一步根據(jù)獲取的時(shí)間戳的次數(shù)、該時(shí)間戳及上一次獲取的時(shí)間戳與該待搜索時(shí)間的位置關(guān)系,對(duì)該預(yù)選文件位置進(jìn)行進(jìn)行校正計(jì)算,以獲取新的文件位置,并記錄校正的次數(shù)。其中,該步驟S202具體包括以下步驟:當(dāng)判斷該時(shí)間戳與該待搜索時(shí)間的差的絕對(duì)值大于預(yù)設(shè)的誤差值時(shí),繼續(xù)判斷獲取的時(shí)間戳的次數(shù)是否為I ;當(dāng)該次數(shù)大于1,且該時(shí)間戳與上一次獲取的時(shí)間戳位于待搜索時(shí)間的兩側(cè)時(shí),利用線性校正計(jì)算獲取新的文件位置;當(dāng)該次數(shù)為1,或者當(dāng)該時(shí)間戳與上一次獲取的時(shí)間戳位于待搜索時(shí)間的同側(cè)時(shí),利用非線性校正計(jì)算獲取新的文件位置;記錄校正的次數(shù)。其中,該時(shí)間戳與上一次獲取的時(shí)間戳位于該待搜索時(shí)間的兩側(cè)是指該時(shí)間戳與上一次獲取的時(shí)間戳其中之一小于待搜索時(shí)間或者其中之一大于待搜索時(shí)間,而該時(shí)間戳與上一次獲取的時(shí)間戳位于待搜索時(shí)間的同側(cè)是指該時(shí)間戳與上一次獲取的時(shí)間戳同時(shí)大于或者同時(shí)小于待搜索時(shí)間。該非線性校正公式如下公式(2)所示:Pos_new = Tseek*Pos/Tfound ; (2)其中,Pos_new為新的文件位置,Tseek為待搜索時(shí)間,Pos為本次搜索到的碼流文件位置,也即預(yù)選文件位置,Tfound為與Pos對(duì)應(yīng)的時(shí)間戳。該線性校正公式如下公式(3)所示:
Pos_new = ((Tseek-Tfound)*Pos_old+(Tfound_old_Tseek)*Pos)/(Tfound_old-Tfound).(3)其中,Pos_new為新的文件位置,Tseek為待搜索時(shí)間,Pos為本次搜索的文件位置,也即預(yù)選文件位置,Tfound為與Pos對(duì)應(yīng)的時(shí)間戳,Pos_old為上一次搜索的文件位置,Tfound_old為與Pos_old對(duì)應(yīng)的時(shí)間戳。在本發(fā)明實(shí)施例中,當(dāng)該時(shí)間戳Tfound與該待搜索時(shí)間Tseek的差的絕對(duì)值小于或者等于預(yù)設(shè)的誤差值時(shí),則退出搜索,此時(shí)獲取的預(yù)選文件位置Pos即為利用該碼流定點(diǎn)搜索方法獲取的與待搜索時(shí)間對(duì)應(yīng)的碼流文件位置,從而從該文件位置處播放碼流文件,以實(shí)現(xiàn)音視頻的同步播放。在步驟S203中,當(dāng)該新的文件位置與該預(yù)選文件位置不相同且該校正次數(shù)沒(méi)有超過(guò)預(yù)設(shè)的次數(shù)時(shí),更該預(yù)選文件位置為該新的文件位置。在具體實(shí)施過(guò)程中,當(dāng)該新的文件位置Pos_new與該預(yù)選文件位置Pos相同時(shí),則退出搜索;而當(dāng)不相同時(shí),則繼續(xù)判斷該校正次數(shù)是否超過(guò)預(yù)設(shè)的次數(shù),當(dāng)該校正次數(shù)超過(guò)了預(yù)設(shè)的次數(shù)時(shí),也退出搜索,否則更該預(yù)選文件位置為該新的文件位置,同時(shí),也將上一次獲取的文件位置更新為預(yù)選文件位置,具體為Pos_old = Pos ;Pos = Pos_new,此處”表示賦值,在搜索過(guò)程中,可以綜合考慮搜索時(shí)間以及搜索精度的要求來(lái)預(yù)先設(shè)定上述時(shí)間戳的誤差值和校正次數(shù)。在步驟S204中,獲取與該新的文件位置對(duì)應(yīng)的時(shí)間戳,重新判斷該時(shí)間戳與該待搜索時(shí)間的差的絕對(duì)值是否大于預(yù)設(shè)的誤差值,直至滿足預(yù)設(shè)的條件,退出本次搜索。其中,該預(yù)設(shè)的條件是指該時(shí)間戳與該待搜索時(shí)間的差的絕對(duì)值小于預(yù)設(shè)的誤差值,或者該新的文件位置與該預(yù)選文件位置相同,或者該校正次數(shù)超過(guò)預(yù)設(shè)的次數(shù)。在具體實(shí)施過(guò)程中,在獲取與該新的文件位置對(duì)應(yīng)的時(shí)間戳?xí)r,Tfound_old =Tfound ( “ = ”表示賦值,),重復(fù)判斷該時(shí)間戳與該待搜索時(shí)間的差的絕對(duì)值是否大于預(yù)設(shè)的誤差值,具體地,在獲取與該新的文件位置對(duì)應(yīng)的時(shí)間戳后,返回執(zhí)行步驟S202,直至滿足條件退出本次搜索。在本發(fā)明實(shí)施例中,該碼流定點(diǎn)搜索方法首先利用簡(jiǎn)單的計(jì)算得到初始搜索的文件位置,然后根據(jù)在該文件位置找到的時(shí)間戳,對(duì)該文件位置進(jìn)行非線性校正,而當(dāng)出現(xiàn)找到的時(shí)間圍繞目標(biāo)時(shí)間震蕩時(shí)(即本次找到的時(shí)間戳與上一次找到的時(shí)間戳分布在待搜索時(shí)間兩側(cè)),則認(rèn)為非線性校正無(wú)法進(jìn)一步發(fā)揮作用,這種情況下采用線性校正的方法來(lái)調(diào)整文件位置,從而減少了精確定點(diǎn)播放的耗時(shí),提聞了精確定點(diǎn)播放的精度。實(shí)施例二:圖3示出了本發(fā)明第二實(shí)施例提供的碼流定點(diǎn)搜索方法的實(shí)現(xiàn)流程,以具體說(shuō)明該碼流定點(diǎn)搜索方法實(shí)現(xiàn)的過(guò)程,詳述如下:在步驟S301中,獲取與待搜索時(shí)間對(duì)應(yīng)的預(yù)選文件位置。在步驟S302中,將該碼流跳轉(zhuǎn)到該位置處,記錄該跳轉(zhuǎn)的次數(shù),并獲取與該預(yù)選文件位置對(duì)應(yīng)的時(shí)間戳。在具體實(shí)施過(guò)程中,利用待搜索時(shí)間、碼流總時(shí)間及碼流總大小,根據(jù)上述公式
(I)計(jì)算得到待搜索時(shí)間對(duì)應(yīng)的預(yù)選文件位置。進(jìn)一步地,跳轉(zhuǎn)到得到的該文件位置Pos處,記錄該跳轉(zhuǎn)的次數(shù)N或者是記錄獲取與文件位置對(duì)應(yīng)的時(shí)間戳的次數(shù),此處兩者值相等,找到該文件位置附近的時(shí)間戳Tfound。在步驟S303中,判斷該時(shí)間戳與該待搜索時(shí)間的差的絕對(duì)值是否大于預(yù)設(shè)的誤差值,否,則執(zhí)行步驟S311,是,則執(zhí)行步驟S304。在具體實(shí)施過(guò)程中,比較Tfound與Tseek,若兩者差的絕對(duì)值在小于或者等于預(yù)設(shè)的誤差值時(shí),比如2s,則退出搜索,從而本次獲取的預(yù)選文件位置Pos為搜索到的精確的碼流文件位置,否則繼續(xù)執(zhí)行后續(xù)步驟,其中該預(yù)設(shè)的誤差值根據(jù)實(shí)際需要設(shè)定。在步驟S304中,判斷該跳轉(zhuǎn)的次數(shù)是否為1,是,則執(zhí)行步驟S305 ;否,則執(zhí)行步驟S306。在具體實(shí)施過(guò)程中,當(dāng)記錄的跳轉(zhuǎn)次數(shù)為1,也即第一次跳轉(zhuǎn)時(shí),直接執(zhí)行步驟S305,若大于I次,則轉(zhuǎn)至執(zhí)行步驟S306。在步驟S305中,利用非線性校正公式獲取新的文件位置。該非線性校正公式如上述公式(2)所示。在步驟S306中,判斷該時(shí)間戳與上一次獲取的時(shí)間戳是否位于待搜索時(shí)間的同偵牝是,則返回步驟S305,否,則執(zhí)行步驟S307。其中,當(dāng)該時(shí)間戳Tfound與上一次獲取的時(shí)間戳Tf 0Und_01 d位于待搜索時(shí)間Tseek的不同側(cè)(兩側(cè))是指該時(shí)間戳與上一次獲取的時(shí)間戳其中之一小于待搜索時(shí)間或者其中之一大于待搜索時(shí)間,即(Tfound < Tseek < Tfound_old)或(Tfound_old < Tseek
<Tfound),此時(shí)利用線性公式進(jìn)行校正,獲取新的文件位置Pos_new,并保存Tfound、Pos為 Tfound_old> Pos_old ;當(dāng)該時(shí)間戳與上一次獲取的時(shí)間戳位于待搜索時(shí)間的同側(cè)是指該時(shí)間戳與上一次獲取的時(shí)間戳同時(shí)大于或者同時(shí)小于待搜索時(shí)間,即(Tfound < TseekMTfound_oId
<Tseek)或(Tseek < Tfound_old&&Tseek < Tfound),則此時(shí)利用非線性校正公式進(jìn)行校正,重新計(jì)算新的文件位置Pos_new,并保存Tfound、Pos為T(mén)found_old、Pos_old。在步驟S307中,利用線性校正公式更新該位置,并執(zhí)行步驟S208。該線性校正公式如上述公式(3)所。在步驟S308中,判斷該新的文件位置是否與預(yù)選文件位置相同,是,則執(zhí)行步驟S311,否,則執(zhí)行步驟S309。在具體實(shí)施過(guò)程中,判斷PoS_neW與Pos是否相等,如果相等,則退出該搜索過(guò)程,否則繼續(xù)執(zhí)行步驟S309。在步驟S309中,判斷該校正次數(shù)是否超過(guò)預(yù)設(shè)的次數(shù),是,則執(zhí)行步驟S311,否,則執(zhí)行步驟S310。具體地,當(dāng)獲取的PoS_neW與Pos不相同,則進(jìn)一步判斷該校正次數(shù),即循環(huán)次數(shù)是否超過(guò)預(yù)設(shè)的次數(shù),比如預(yù)設(shè)的次數(shù)為30次。在步驟S310中,更新預(yù)選文件位置為新的文件位置,并返回步驟S302。具體更新的內(nèi)容為,Pos_old = Pos ;Pos = Pos_new,從而在執(zhí)行步驟S302后,獲取與該新的文件位置對(duì)應(yīng)的時(shí)間戳Tfound,也即Tfound_old = Tfound,繼續(xù)執(zhí)行后續(xù)步驟,直至滿足條件退出本次搜索,此處,“=”表示賦值。在步驟S311中,退出搜索。在本發(fā)明實(shí)施例中,以無(wú)索引表的rmvb視頻碼流為例,對(duì)比背景技術(shù)中提到的現(xiàn)有搜索方法與本發(fā)明實(shí)施例提到的搜索方法,通過(guò)實(shí)驗(yàn)來(lái)比較本發(fā)明的優(yōu)點(diǎn),其中,該方法,設(shè)定待搜索時(shí)間與獲取的時(shí)間戳的差的絕對(duì)值不超過(guò)預(yù)設(shè)的誤差范圍2s,預(yù)設(shè)的校正次數(shù)為30次。具體結(jié)果如下表一所示為現(xiàn)有技術(shù)方案或者搜索方法的搜索結(jié)果,而下表二所示為本發(fā)明實(shí)施例提出的定點(diǎn)搜索方法搜索的結(jié)果。表一
權(quán)利要求
1.一種碼流定點(diǎn)捜索方法,其特征在于,所述方法包括下述步驟: 獲取與待搜索時(shí)間對(duì)應(yīng)的預(yù)選文件位置以及與所述預(yù)選文件位置對(duì)應(yīng)的時(shí)間戳; 當(dāng)所述時(shí)間戳與所述待搜索時(shí)間的差的絕對(duì)值大于預(yù)設(shè)的誤差值時(shí),進(jìn)一歩根據(jù)獲取的時(shí)間戳的次數(shù)、所述時(shí)間戳及上一次獲取的時(shí)間戳與所述待搜索時(shí)間的位置關(guān)系,對(duì)所述預(yù)選文件位置進(jìn)行校正計(jì)算,以獲取新的文件位置,并記錄校正的次數(shù); 當(dāng)所述新的文件位置與所述預(yù)選文件位置不相同且所述校正次數(shù)沒(méi)有超過(guò)預(yù)設(shè)的次數(shù)時(shí),更新所述預(yù)選文件位置為所述新的文件位置; 獲取與所述新的文件位置對(duì)應(yīng)的時(shí)間戳,重新判斷所述時(shí)間戳與所述待搜索時(shí)間的差的絕對(duì)值是否大于預(yù)設(shè)的誤差值,直至滿足預(yù)設(shè)的條件,退出本次捜索。
2.如權(quán)利要求1所述的方法,其特征在于,所述預(yù)設(shè)的條件是指所述時(shí)間戳與所述待捜索時(shí)間的差的絕對(duì)值小于預(yù)設(shè)的誤差值,或者所述新的文件位置與預(yù)選文件位置相同,或者所述校正次數(shù)超過(guò)預(yù)設(shè)的次數(shù)。
3.如權(quán)利要求1所述的方法,其特征在于,在所述獲取與待搜索時(shí)間對(duì)應(yīng)的預(yù)選文件位置以及與所述預(yù)選文件位置對(duì)應(yīng)的時(shí)間戳的步驟之后,所述方法還包括: 記錄獲取與文件位置對(duì)應(yīng)的時(shí)間戳的次數(shù)。
4.如權(quán)利要求3所述的方法,其特征在于,所述當(dāng)所述時(shí)間戳與所述待搜索時(shí)間的差的絕對(duì)值大于預(yù)設(shè)的誤差值時(shí),進(jìn)一歩根據(jù)獲取的時(shí)間戳的次數(shù)、所述時(shí)間戳及上一次獲取的時(shí)間戳與所述待搜索時(shí)間的位置關(guān)系,對(duì)所述預(yù)選文件位置進(jìn)行校正計(jì)算,以獲取新的文件位置,并記錄校正的次數(shù)的步驟具體包括以下步驟: 當(dāng)判斷所述時(shí)間戳與所述待搜索時(shí)間的差的絕對(duì)值大于預(yù)設(shè)的誤差值時(shí),判斷獲取的時(shí)間戳的次數(shù)是否為1 ; 當(dāng)所述次數(shù)大于1,且所述時(shí)間戳與上一次獲取的時(shí)間戳位于待搜索時(shí)間的兩側(cè)時(shí),利用線性校正計(jì)算獲取新的文件位置; 當(dāng)所述次數(shù)為1,或者當(dāng)所述時(shí)間戳與上一次獲取的時(shí)間戳位于待搜索時(shí)間的同側(cè)時(shí),利用非線性校正計(jì)算獲取新的文件位置; 記錄校正的次數(shù)。
5.如權(quán)利要求4所述的方法,其特征在于,所述時(shí)間戳與上一次獲取的時(shí)間戳位于待捜索時(shí)間的兩側(cè)是指所述時(shí)間戳與上一次獲取的時(shí)間戳其中之一小于待搜索時(shí)間或者其中之一大于待搜索時(shí)間,所述時(shí)間戳與上一次獲取的時(shí)間戳位于待搜索時(shí)間的同側(cè)是指所述時(shí)間戳與上一次獲取的時(shí)間戳同時(shí)大于或者同時(shí)小于待搜索時(shí)間。
6.一種碼流定點(diǎn)捜索裝置,其特征在于,所述裝置包括: 獲取單元,用于獲取與待搜索時(shí)間對(duì)應(yīng)的預(yù)選文件位置以及與所述預(yù)選文件位置對(duì)應(yīng)的時(shí)間戳;校正単元,用于當(dāng)所述時(shí)間戳與所述待搜索時(shí)間的差的絕對(duì)值大于預(yù)設(shè)的誤差值時(shí),進(jìn)ー步根據(jù)獲取的時(shí)間戳的次數(shù)、所述時(shí)間戳及上一次獲取的時(shí)間戳與所述待搜索時(shí)間的位置關(guān)系,對(duì)所述預(yù)選文件位置進(jìn)行校正計(jì)算,以獲取新的文件位置,并記錄校正的次數(shù);更新単元,用于當(dāng)所述新的文件位置與所述預(yù)選文件位置不相同且所述校正次數(shù)沒(méi)有超過(guò)預(yù)設(shè)的次數(shù)時(shí),更新所述預(yù)選文件位置為所述新的文件位置;以及 時(shí)間戳獲取及判斷単元,用于獲取與所述新的文件位置對(duì)應(yīng)的時(shí)間戳,并重新判斷所述時(shí)間戳與所述待搜索時(shí)間的差的絕對(duì)值是否大于預(yù)設(shè)的誤差值,直至滿足預(yù)設(shè)的條件,退出本次搜索。
7.如權(quán)利要求6所述的裝置,其特征在于,所述預(yù)設(shè)的條件是指所述時(shí)間戳與所述待搜索時(shí)間的差的絕對(duì)值小于預(yù)設(shè)的誤差值,或者所述新的文件位置與預(yù)選文件位置相同,或者所述校正次數(shù)超過(guò)預(yù)設(shè)的次數(shù)。
8.如權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括: 時(shí)間戳次數(shù)獲取單元,用于記錄獲取與文件位置對(duì)應(yīng)的時(shí)間戳的次數(shù)。
9.如權(quán)利要求8所述的裝置,其特征在于,所述校正單元具體包括: 次數(shù)判斷單元,用于當(dāng)判斷所述時(shí)間戳與所述待搜索時(shí)間的差的絕對(duì)值大于預(yù)設(shè)的誤差值時(shí),判斷獲取的時(shí)間戳的次數(shù)是否為I ; 線性校正單元,用于當(dāng)所述次數(shù)判斷單元輸出結(jié)果為否,且當(dāng)所述時(shí)間戳與上一次獲取的時(shí)間戳位于待搜索時(shí)間的兩側(cè)時(shí),利用線性校正計(jì)算獲取新的文件位置; 非線性校正單元,用于當(dāng)所述次數(shù)判斷單元輸出結(jié)果為是,或者當(dāng)所述時(shí)間戳與上一次獲取的時(shí)間戳位于待搜索時(shí)間的同側(cè)時(shí),利用非線性校正計(jì)算獲取新的文件位置;以及 校正次數(shù)記錄單元,用于記錄校正的次數(shù)。
10.一種播放器,其特征在于,所述播放器包括如權(quán)利要求6至9任一項(xiàng)所述的數(shù)字碼流定點(diǎn)搜索裝置。`
全文摘要
本發(fā)明適用于數(shù)字碼流播放技術(shù)領(lǐng)域,提供了一種碼流定點(diǎn)搜索方法、裝置及播放器,所述方法包括獲取與待搜索時(shí)間對(duì)應(yīng)的預(yù)選文件位置及與其對(duì)應(yīng)的時(shí)間戳;當(dāng)該時(shí)間戳與該待搜索時(shí)間的差的絕對(duì)值大于預(yù)設(shè)的誤差值時(shí),對(duì)該文件位置,對(duì)該預(yù)選文件位置進(jìn)行校正,以獲取新的文件位置,并記錄校正的次數(shù);當(dāng)新的文件位置與該預(yù)選文件位置不相同且該校正次數(shù)沒(méi)有超過(guò)預(yù)設(shè)的次數(shù)時(shí),更新該預(yù)選文件位置為該新的文件位置;獲取與該新的文件位置對(duì)應(yīng)的時(shí)間戳,重新判斷該時(shí)間戳與該待搜索時(shí)間的差的絕對(duì)值是否大于預(yù)設(shè)的誤差值,直至滿足預(yù)設(shè)的條件,退出本次搜索。本發(fā)明相對(duì)于現(xiàn)有的定點(diǎn)搜索方法,具有搜索時(shí)間更短,搜索到的文件位置精度更高的特點(diǎn)。
文檔編號(hào)H04N5/93GK103137168SQ201110398939
公開(kāi)日2013年6月5日 申請(qǐng)日期2011年12月5日 優(yōu)先權(quán)日2011年12月5日
發(fā)明者衛(wèi)敏, 方偉 申請(qǐng)人:炬力集成電路設(shè)計(jì)有限公司