專利名稱:位流中的flash視頻標(biāo)簽的搜尋方法及其搜尋裝置的制作方法
位流中的FLASH視頻標(biāo)簽的搜尋方法及其搜尋裝置技術(shù)領(lǐng)域
本發(fā)明是有關(guān)于一種位流(bitstream)中的視頻標(biāo)簽(tag)的搜尋方法,且特別有關(guān)于一種位流中的FLASH視頻(FLASH Video,以下簡稱為FLV)標(biāo)簽的搜尋方法及其搜尋>j-U ρ α裝直。
背景技術(shù):
FLV格式通常用于媒體播放器(例如,Adobe Flash播放器)中。此外,F(xiàn)LV格式已廣泛應(yīng)用于許多視頻網(wǎng)站中,舉例而言,YouTube、tudou、56. com、ku6. com、Sina視頻等等。因此,F(xiàn)LV格式的支援已成為電子消費產(chǎn)品(例如,數(shù)字電視、移動電話、個人數(shù)字助理(PDA)) 中的多媒體功能的不可或缺的一部分。
于FLV格式的播放(playback)程序中,需要利用標(biāo)簽作為將分別由視頻解碼器與音頻解碼器解碼的基本單元,來擷取視頻數(shù)據(jù)與音頻數(shù)據(jù)。因此,于擷取視頻數(shù)據(jù)與音頻數(shù)據(jù)之前,必須找到每一 FLV標(biāo)簽的正確開始位置。然而,由于并無定位每一 FLV標(biāo)簽的開始位置(或相對位置)的可用開始碼,當(dāng)FLV標(biāo)簽中發(fā)生錯誤時,將中斷FLV格式的數(shù)據(jù)的播放程序。
因此,如何提升FLV標(biāo)簽的搜尋性能已成為本領(lǐng)域中的設(shè)計者需要解決的重要問題。
發(fā)明內(nèi)容
本發(fā)明其中一個目的在于提供一種位流中的FLASH視頻標(biāo)簽的搜尋方法及其搜尋裝置,以解決上述問題。
本發(fā)明實施例提供一種位流中的FLASH視頻標(biāo)簽的搜尋方法,包含設(shè)置第一開始位置以及關(guān)于第一搜尋程序的第一搜尋長度,其中第一搜尋長度指示對位流執(zhí)行的第一搜尋程序的位流長度;自第一開始位置對位流開始第一搜尋程序以搜尋FLASH視頻標(biāo)簽; 其中當(dāng)于第一搜尋長度中未找到FLASH視頻標(biāo)簽時,設(shè)置關(guān)于接續(xù)第一搜尋程序的第二搜尋程序的第二開始位置,其中第一開始位置與第二開始位置是通過時間段分離,時間段等于第一搜尋長度與第一跳過長度的總和,其中第一跳過長度對應(yīng)于第一搜尋程序;以及自第二開始位置對位流開始第二搜尋程序以搜尋FLASH視頻標(biāo)簽。
本發(fā)明實施例另提供一種位流中的FLASH視頻標(biāo)簽的搜尋裝置,包含設(shè)置模塊, 用于設(shè)置第一開始位置以及關(guān)于第一搜尋程序的第一搜尋長度,其中第一搜尋長度指示對位流執(zhí)行的第一搜尋程序的位流長度;以及搜尋模塊,用于自第一開始位置對位流開始第一搜尋程序以搜尋FLASH視頻標(biāo)簽;其中當(dāng)于第一搜尋長度中未找到FLASH視頻標(biāo)簽時,設(shè)置模塊進一步用于設(shè)置關(guān)于緊接第一搜尋程序的第二搜尋程序的第二開始位置,其中第一開始位置與第二開始位置是通過時間段分離,時間段等于第一搜尋長度與第一跳過長度的總和,其中第一跳過長度對應(yīng)于第一搜尋程序;以及搜尋模塊進一步用于自第二開始位置對位流開始第二搜尋程序以搜尋FLASH視頻標(biāo)簽。
在參閱隨后的通過附圖解釋說明的優(yōu)選具體實施方式
的詳盡描述后,本領(lǐng)域的技 術(shù)人員便可了解本發(fā)明的上述或者其他發(fā)明目的。
圖1是FLV標(biāo)簽的數(shù)據(jù)結(jié)構(gòu)的示意圖。圖2是如圖1所示的FLV標(biāo)簽中的音頻數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)的示意圖。圖3是如圖1所示的FLV標(biāo)簽中的視頻數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)的示意圖。圖4是依本發(fā)明第一實施例的位流中的FLV標(biāo)簽的搜尋裝置的示意圖。圖5是示意如何搜尋位流中的FLV標(biāo)簽的示意圖。圖6是依本發(fā)明第二實施例的位流中的FLV標(biāo)簽的搜尋裝置的方塊示意圖。圖7是如圖4或圖6所示的搜尋模塊的實施范例的示意圖。圖8是依本發(fā)明實施例的位流中的FLV標(biāo)簽的搜尋方法的范例的流程示意圖。圖9是依本發(fā)明實施例的位流中的FLV標(biāo)簽的搜尋方法的另一范例的流程示意 圖。圖10是依本發(fā)明實施例的位流中的FLV標(biāo)簽的搜尋方法的又一范例的流程示意 圖。圖11A是依本發(fā)明實施例的通過參考FLV標(biāo)簽的特定特性逐字節(jié)順序搜尋位流中 的FLV標(biāo)簽的范例的流程示意圖。圖11B是如圖11A所示的步驟S1210的詳細步驟的流程示意圖。圖11C是如圖11A所示的步驟S1220的詳細步驟的流程示意圖。圖11D是如圖11A所示的步驟S1230的詳細步驟的流程示意圖。
具體實施例方式于說明書及權(quán)利要求書當(dāng)中使用了某些詞匯來指稱特定的元件。所屬領(lǐng)域中普 通技術(shù)人員應(yīng)可理解,硬件制造商可能會用不同的名詞來稱呼同樣的元件。本說明書及權(quán) 利要求書并不以名稱的差異來作為區(qū)分元件的方式,而是以元件在功能上的差異來作為區(qū) 分的準則。于通篇說明書及權(quán)利要求當(dāng)中所提及的“包含”為一開放式的用語,故應(yīng)解釋成 “包含但不限定于”。另外,“耦接”一詞在此是包含任何直接及間接的電氣連接手段。因此, 若文中描述一第一裝置耦接于一第二裝置,則代表該第一裝置可直接電氣連接于該第二裝 置,或通過其他裝置或連接手段間接地電氣連接至該第二裝置。首先,為使本發(fā)明揭示的內(nèi)容易于理解,下文將簡述FLV標(biāo)簽的數(shù)據(jù)結(jié)構(gòu)。請參考圖1,圖1是FLV標(biāo)簽的數(shù)據(jù)結(jié)構(gòu)的示意圖。如圖1所示,F(xiàn)LV標(biāo)簽包含名 為“標(biāo)簽類型”的欄位、名為“數(shù)據(jù)大小”的欄位、名為“時戳(time stamp)”的欄位、名為“擴 展時戳(time stamp extended)”的欄位、名為“串流ID”的欄位、以及名為“數(shù)據(jù)”的欄位。 此處名為“標(biāo)簽類型”的欄位指示標(biāo)簽的類型。請注意,當(dāng)對應(yīng)于欄位“標(biāo)簽類型”的字節(jié)值 (byte value)等于第一數(shù)值(例如,8)時,其指示音頻類型;對應(yīng)于欄位“標(biāo)簽類型”的字節(jié) 值等于第二數(shù)值(例如,9)時,其指示視頻類型。此外,欄位“數(shù)據(jù)大小”指示FLV標(biāo)簽中的 欄位“數(shù)據(jù)”的數(shù)據(jù)長度。欄位“時戳”以及“擴展時戳”與播放時間有關(guān)。對應(yīng)于欄位“串 流ID”的字節(jié)值通常為0。欄位“數(shù)據(jù)”指示FLV標(biāo)簽中的數(shù)據(jù)類型,例如音頻數(shù)據(jù)、視頻數(shù)據(jù)、或臨時數(shù)據(jù)目標(biāo)(scrip data object)。
圖2是如圖1所示的FLV標(biāo)簽中的音頻數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)的示意圖,圖3是如圖1 所示的FLV標(biāo)簽中的視頻數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)的示意圖。如圖2所示,音頻數(shù)據(jù)包含名為“聲音格式”的子欄位、名為“聲音速率”的子欄位、名為“聲音大小”的子欄位、名為“聲音類型” 的子欄位、以及名為“聲音數(shù)據(jù)”的子欄位。如圖3所示,視頻數(shù)據(jù)包含名為“幀類型(Frame Type)”的子欄位、名為“編解碼器ID”的子欄位、以及名為“視頻數(shù)據(jù)”的子欄位。由于對應(yīng)于每一子欄位的類型與描述已于圖2與圖3中詳述,故為簡潔起見,此處不另贅述。
請結(jié)合圖5來參考圖4,圖4是依本發(fā)明第一實施例的位流中的FLV標(biāo)簽的搜尋裝置400的示意圖,而圖5是示意如何搜尋位流中的FLV標(biāo)簽的示意圖。如圖4所示,搜尋裝置400包含設(shè)置模塊410與搜尋模塊420。設(shè)置模塊410用于設(shè)置第一開始位置Pl以及關(guān)于第一搜尋程序SRl的第一搜尋長度LI,其中第一搜尋長度LI指示對位流BS執(zhí)行的第一搜尋程序SRl的位流長度。搜尋模塊420用于自第一開始位置Pl (通過設(shè)置模塊410 決定)對位流BS開始第一搜尋程序SRl以搜尋FLV標(biāo)簽。當(dāng)于第一搜尋長度LI中未找到 FLV標(biāo)簽時,設(shè)置模塊410進一步用于設(shè)置關(guān)于緊接第一搜尋程序SRl的第二搜尋程序SR2 的第二開始位置P2,其中第一開始位置Pl與第二開始位置P2是通過時間段Tl分離,時間段Tl等于第一搜尋長度LI與第一跳過(skip)長度LI’的總和,其中第一跳過長度LI’對應(yīng)于第一搜尋程序SRl ;以及搜尋模塊420進一步用于自第二開始位置P2對位流BS開始第二搜尋程序SR2以搜尋FLV標(biāo)簽。
此外,當(dāng)于第一搜尋長度LI中未找到FL V標(biāo)簽時,設(shè)置模塊410進一步用于設(shè)置關(guān)于第二搜尋程序SR2的第二搜尋長度L2,其中第二搜尋長度L2指示對位流BS執(zhí)行的第二搜尋程序SR2的位流長度。因此,當(dāng)于第二搜尋長度L2中未找到FLV標(biāo)簽時,設(shè)置模塊 410進一步用于設(shè)置關(guān)于緊接第二搜尋程序SR2的第三搜尋程序SR3的第三開始位置P3, 其中第二開始位置P2與第三開始位置P3是通過時間段T2分離,時間段T2等于第二搜尋長度L2與第二跳過長度L2’的總和,其中第二跳過長度L2’對應(yīng)于第二搜尋程序SR2。以此類推,可輕易推導(dǎo)出后續(xù)的搜尋程序。舉例而言,當(dāng)于第η個搜尋長度Ln中未找到FLV 標(biāo)簽時,設(shè)置模塊410進一步用于設(shè)置關(guān)于第(η+1)個搜尋程序SR(n+l)的第(n+1)個搜尋長度L(n+1),其中第(n+1)個搜尋長度L(n+1)指示對位流BS執(zhí)行的第(n+1)個搜尋程序SR (n+1)的位流長度。
請注意,于圖5所示的實施例中,第二跳過長度L2’設(shè)置為較第一跳過長度LI’大, 第三跳過長度L3’設(shè)置為較第二跳過長度L2’大,等等。但此處不應(yīng)視作本發(fā)明的限制。于其他實施例中,舉例而言,第二跳過長度L2’可設(shè)置為實質(zhì)上等于第一跳過長度LI’,等等。 當(dāng)然,熟悉本案的人士可輕易理解,舉凡援依本發(fā)明的精神對上述跳過長度LI’ Ln’所做的各種變化,皆應(yīng)涵蓋于權(quán)利要求書內(nèi)。
此外,于本實施例中,第一搜尋長度LI (或第二搜尋長度L2)可設(shè)置為等于視頻標(biāo)簽大小與音頻標(biāo)簽大小的總和,其中視頻標(biāo)簽大小與視頻格式相關(guān),而音頻標(biāo)簽大小與音頻格式相關(guān)。于其他實施例中,搜尋長度LI Ln可設(shè)置為大于或小于視頻標(biāo)簽大小與音頻標(biāo)簽大小的總和,其亦應(yīng)涵蓋于權(quán)利要求書內(nèi)。此外,于本實施例中,當(dāng)位流BS中發(fā)生位流錯誤時,可將第一開始位置Pl設(shè)置為錯誤位置,但此處不應(yīng)視作本發(fā)明的限制。
圖6是依本發(fā)明第二實施例的位流中的FLV標(biāo)簽的搜尋裝置600的方塊示意圖。搜尋裝置600的結(jié)構(gòu)類似于圖4所示的搜尋裝置400,兩者主要區(qū)別在于搜尋裝置600更包含位于設(shè)置模塊610與搜尋模塊620之間的數(shù)據(jù)緩沖器630,用于緩沖如第一搜尋長度LI 指示的位流BS的一部分。因此,搜尋模塊620自第一開始位置Pl對位流BS的已緩沖部分 BS’開始第一搜尋程序SRl以搜尋FLV標(biāo)簽。
請注意,搜尋模塊420/620可依據(jù)FLV標(biāo)簽的特定特性逐字節(jié)(byte by byte)順序搜尋位流BS (或位流BS的已緩沖部分BS’)中的FLV標(biāo)簽。下文將作出進一步描述。
圖7是如圖4或圖6所示的搜尋模塊420/620的實施范例的示意圖。于本實施例中,搜尋模塊420/620包含,但不限于,第一檢測單元710、第二檢測單元720、第三檢測單元 730、以及第四檢測單元740。請同時參考圖1與圖2,第一檢測單元710用于檢測對應(yīng)于位流中的標(biāo)簽類型的字節(jié)值是否等于第一數(shù)值(例如,8)(指示為音頻類型)或第二數(shù)值(例如,9)(指示為視頻類型)。第二檢測單元720用于檢測對應(yīng)于時戳的字節(jié)值是否大于臨界值TH以及當(dāng)對應(yīng)于標(biāo)簽類型的字節(jié)值等于第一數(shù)值(例如,8)或第二數(shù)值(例如,9)時,依據(jù)檢測結(jié)果決定擴展時戳是否包含至少一個等于第一預(yù)定值(例如,O)的字節(jié)值。請注意, 第二檢測單元720可通過第一決定子單元722與第二決定子單元724實現(xiàn)。當(dāng)對應(yīng)于時戳的字節(jié)值不大于臨界值TH時,第一決定子單元722用于決定對應(yīng)于擴展時戳的字節(jié)值是否等于第一預(yù)定值(例如,O)。當(dāng)對應(yīng)于擴展時戳的字節(jié)值等于第一預(yù)定值(例如,O)時,第二決定子單元724用于決定對應(yīng)于串流ID的字節(jié)值是否等于第二預(yù)定值(例如,0),以及當(dāng)對應(yīng)于時戳的字節(jié)值大于臨界值TH時,用于決定對應(yīng)于串流ID的字節(jié)值是否等于第二預(yù)定值(例如,O)。此外,當(dāng)對應(yīng)于串流ID的字節(jié)值等于第二預(yù)定值(例如,O)時,第三檢測單元730 用于決定對應(yīng)于位流中的標(biāo)簽類型的字節(jié)值是否等于第一數(shù)值(例如,8)。當(dāng)對應(yīng)于標(biāo)簽類型的字節(jié)值等于第一數(shù)值(例如,8)時,第四檢測單元740用于決定是否已接收到音頻信息,當(dāng)已接收到音頻信息時,用于決定對應(yīng)于音頻信息的字節(jié)值是否等于已接收的音頻信息,以及當(dāng)對應(yīng)于音頻信息的字節(jié)值等于已接收的音頻信息時,用于指示已找到關(guān)于音頻格式的FLV標(biāo)簽。
請注意,當(dāng)對應(yīng)于串流ID的字節(jié)值等于第二預(yù)定值(例如,O)時,如圖7所示的第三檢測單元730亦可用于決定對應(yīng)于位流中的標(biāo)簽類型的字節(jié)值是否等于第二數(shù)值(例如,9);當(dāng)對應(yīng)于標(biāo)簽類型的字節(jié)值等于第二數(shù)值(例如,9)時,如圖7所示的第四檢測單元 740可用于決定是否已接收到編解碼器ID,當(dāng)已接收到編解碼器ID時,用于決定對應(yīng)于編解碼器ID的字節(jié)值是否等于已接收的編解碼器ID,以及當(dāng)對應(yīng)于編解碼器ID的字節(jié)值等于已接收的編解碼器ID時,用于指示已找到關(guān)于視頻格式的FLV標(biāo)簽。
請注意,于某些實施例中,臨界值TH可設(shè)置為Oxffffff,其指示對應(yīng)于時戳的最大字節(jié)值(3個字節(jié)或24個位)。然而,其并非本發(fā)明的限制。于其他實施例中,臨界值TH 可設(shè)置為小于Oxffffff,且當(dāng)對應(yīng)于時戳的字節(jié)值不大于臨界值TH時,第一決定子單元 722可用于決定對應(yīng)于時戳與擴展時戳的剩余未利用部分的組合的字節(jié)值是否等于第一預(yù)定值(例如,O)。
請參考圖8,圖8是依本發(fā)明實施例的位流中的FLV標(biāo)簽的搜尋方法的范例的流程示意圖。請注意,若可獲得大體相同的結(jié)果,后續(xù)步驟并非限制于依據(jù)圖8所示的確切順序執(zhí)行。搜尋方法包含,但不限于,下列步驟
S810:設(shè)置第一開始位置以及關(guān)于第一搜尋程序的第一搜尋長度,其中第一搜尋長度指示對位流執(zhí)行的第一搜尋程序的位流長度。
S820 自第一開始位置對位流開始第一搜尋程序以搜尋FLV標(biāo)簽。
S830 :是否找到FLV標(biāo)簽。當(dāng)找到FLV標(biāo)簽,轉(zhuǎn)至步驟S840 ;否則,轉(zhuǎn)至步驟S850。
S840 :依據(jù)第一搜尋長度中找到的FLV標(biāo)簽來播放位流。
S850:設(shè)置關(guān)于接續(xù)第一搜尋程序的第二搜尋程序的第二開始位置,其中第一開始位置與第二開始位置是通過時間段分離,時間段等于第一搜尋長度與第一跳過長度的總和,其中第一跳過長度對應(yīng)于第一搜尋程序。
S860 自第二開始位置對位流開始第二搜尋程序以搜尋FLV標(biāo)簽。
由于于閱讀關(guān)于搜尋裝置400的上述描述之后,熟悉本案的人士可輕易理解圖8 中的步驟的細節(jié),故為簡潔起見,此處不另贅述。此處步驟S810與S850可通過設(shè)置模塊 410執(zhí)行,而步驟S820與S860可通過搜尋模塊420執(zhí)行。
圖9是依本發(fā)明實施例的位流中的FLV標(biāo)簽的搜尋方法的另一范例的流程示意圖。請注意,若可獲得大體相同的結(jié)果,后續(xù)步驟并非限制于依據(jù)圖9所示的確切順序執(zhí)行。搜尋方法包含,但不限于,下列步驟
S810:設(shè)置第一開始位置以及關(guān)于第一搜尋程序的第一搜尋長度,其中第一搜尋長度指示對位流執(zhí)行的第一搜尋程序的位流長度。
S820 自第一開始位置對位流開始第一搜尋程序以搜尋FLV標(biāo)簽。
S830 :是否找到FLV標(biāo)簽。當(dāng)找到FLV標(biāo)簽,轉(zhuǎn)至步驟S840 ;否則,轉(zhuǎn)至步驟S850。
S840 :依據(jù)第一搜尋長度中找到的FLV標(biāo)簽來播放位流。
S850:設(shè)置關(guān)于接續(xù)第一搜尋程序的第二搜尋程序的第二開始位置,其中第一開始位置與第二開始位置是通過時間段分離,時間段等于第一搜尋長度與第一跳過長度的總和,其中第一跳過長度對應(yīng)于第一搜尋程序。
S860 自第二開始位置對位流開始第二搜尋程序以搜尋FLV標(biāo)簽。
S910 :是否找到FLV標(biāo)簽。當(dāng)找到FLV標(biāo)簽,轉(zhuǎn)至步驟S840 ;否則,轉(zhuǎn)至步驟S920。
S920:設(shè)置關(guān)于第二搜尋程序的第二搜尋長度,其中第二搜尋長度指示對位流執(zhí)行的第二搜尋程序的位流長度。
S930:設(shè)置關(guān)于緊接第二搜尋程序的第三搜尋程序的第三開始位置,其中第二開始位置與第三開始位置是通過時間段分離,時間段等于第二搜尋長度與第二跳過長度的總和,其中第二跳過長度對應(yīng)于第二搜尋程序。
圖9中所示的步驟類似于圖8所示的步驟,而兩者主要區(qū)別在于圖9中所示的步驟進一步包含步驟S920與S930,分別用于當(dāng)于第一搜尋長度中未找到FLV標(biāo)簽時,設(shè)置關(guān)于第二搜尋程序的第二搜尋長度,以及當(dāng)于第二搜尋長度中未找到FLV標(biāo)簽時,設(shè)置關(guān)于緊接第二搜尋程序的第三搜尋程序的第三開始位置。
圖10是依本發(fā)明實施例的位流中的FLV標(biāo)簽的搜尋方法的又一范例的流程示意圖。請注意,若可獲得大體相同的結(jié)果,后續(xù)步驟并非限制于依據(jù)圖10所示的確切順序執(zhí)行。搜尋方法包含,但不限于,下列步驟
S1010 :緩沖通過第一搜尋長度指示的位流的一部分。
S810:設(shè)置第一開始位置以及關(guān)于第一搜尋程序的第一搜尋長度,其中第一搜尋長度指示對位流執(zhí)行的第一搜尋程序的位流長度。
S1020 自第一開始位置對位流的已緩沖部分開始第一搜尋程序以搜尋FLV標(biāo)簽。
S830 :是否找到FLV標(biāo)簽。當(dāng)找到FLV標(biāo)簽,轉(zhuǎn)至步驟S840 ;否則,轉(zhuǎn)至步驟S850。
S840 :依據(jù)第一搜尋長度中找到的FLV標(biāo)簽來播放位流。
S850:設(shè)置關(guān)于接續(xù)第一搜尋程序的第二搜尋程序的第二開始位置,其中第一開始位置與第二開始位置是通過時間段分離,時間段等于第一搜尋長度與第一跳過長度的總和,其中第一跳過長度對應(yīng)于第一搜尋程序。
S860 自第二開始位置對位流開始第二搜尋程序以搜尋FLV標(biāo)簽。
圖10中所示的步驟類似于圖8所示的步驟,而兩者主要區(qū)別在于圖10中所示的步驟進一步包含步驟S1010,用于緩沖通過第一搜尋長度指示的位流的一部分,以及將原本圖8所示的步驟S820替換為步驟S1020。請注意,于圖6所示的上述實施例中亦已詳細闡述步驟S1010與S1020的作業(yè)。
請注意,上述流程圖的步驟僅用于說明本發(fā)明的目的,而并非本發(fā)明的限定。熟悉本案的人士應(yīng)可理解,如圖8、圖9、以及圖10所示的方法可包含其他中間步驟或多個步驟可合成單個步驟,上述依本發(fā)明的精神所做的等效變化與修飾,皆應(yīng)涵蓋于權(quán)利要求書內(nèi)。 舉例而言,圖8或圖9中所示的步驟S820或圖10中所示的步驟S1020的執(zhí)行可依據(jù)FLV 標(biāo)簽的特定特性逐字節(jié)順序搜尋位流中的FLV標(biāo)簽,以及可進一步包含多個詳細步驟。請參考圖11A,圖1lA是依本發(fā)明實施例的通過參考FLV標(biāo)簽的特定特性逐字節(jié)順序搜尋位流中的FLV標(biāo)簽的詳細步驟的流程示意圖。搜尋方法包含,但不限于,下列步驟
SlllO :檢測對應(yīng)于位流中的標(biāo)簽類型的字節(jié)值是否等于第一數(shù)值(指示音頻類型)或第二數(shù)值(指示視頻類型)。
S1120 :檢測對應(yīng)于時戳的字節(jié)值以及檢測對應(yīng)于擴展時戳的字節(jié)值。
S1130 :當(dāng)對應(yīng)于標(biāo)簽類型的字節(jié)值等于第一數(shù)值時,決定是否已找到關(guān)于音頻格式的FLV標(biāo)簽。
S1140 :當(dāng)對應(yīng)于標(biāo)簽類型的字節(jié)值等于第二數(shù)值時,決定是否已找到關(guān)于視頻格式的FLV標(biāo)簽。
圖1lB是如圖1lA所示的步驟S1120的詳細步驟的流程示意圖,包含下列步驟
SI 121 :當(dāng)對應(yīng)于時戳的字節(jié)值不大于臨界值時,決定對應(yīng)于擴展時戳的字節(jié)值是否等于第一預(yù)定值。
S1122 :當(dāng)對應(yīng)于擴展時戳的字節(jié)值等于第一預(yù)定值時,決定對應(yīng)于串流ID的字節(jié)值是否等于第二預(yù)定值。
S1123 :當(dāng)對應(yīng)于時戳的字節(jié)值大于臨界值時,決定對應(yīng)于串流ID的字節(jié)值是否等于第二預(yù)定值。
圖1lC是如圖1lA所示的步驟S1130的詳細步驟的流程示意圖,包含下列步驟
S1131 :當(dāng)對應(yīng)于串流ID的字節(jié)值等于第二預(yù)定值時,決定對應(yīng)于位流中的標(biāo)簽類型的字節(jié)值是否等于第一數(shù)值。
S1132:當(dāng)對應(yīng)于標(biāo)簽類型的字節(jié)值等于第一數(shù)值時,決定是否已接收到音頻信肩、O
S1133:當(dāng)已接收到音頻信息時,決定對應(yīng)于音頻信息的字節(jié)值是否等于已接收的音頻信息。
S1134:當(dāng)對應(yīng)于音頻信息的字節(jié)值等于已接收的音頻信息時,指示已找到關(guān)于音頻格式的FLV標(biāo)簽。
圖1lD是如圖1lA所示的步驟S1140的詳細步驟的流程示意圖,包含下列步驟
S1141 :當(dāng)對應(yīng)于串流ID的字節(jié)值等于第二預(yù)定值時,決定對應(yīng)于位流中的標(biāo)簽類型的字節(jié)值是否等于第二數(shù)值。
S1142:當(dāng)對應(yīng)于標(biāo)簽類型的字節(jié)值等于第二數(shù)值時,決定是否已接收到編解碼器 ID。
S1143 :當(dāng)已接收到編解碼器ID時,決定對應(yīng)于編解碼器ID的字節(jié)值是否等于已接收的編解碼器ID。
S1144 :當(dāng)對應(yīng)于編解碼器ID的字節(jié)值等于已接收的編解碼器ID時,指示已找到關(guān)于視頻格式的FLV標(biāo)簽。
請注意,上述流程圖的步驟僅用于說明本發(fā)明的目的,而并非本發(fā)明的限定。熟悉本案的人士應(yīng)可理解,如圖8、圖9、圖10、以及圖1lA-圖1lD所示的方法可包含其他中間步驟或多個步驟可合成單個步驟,上述依本發(fā)明的精神所做的等效變化與修飾,皆應(yīng)涵蓋于權(quán)利要求書內(nèi)。
上述實施例僅用于說明本發(fā)明的目的,而并非本發(fā)明的限定。簡言之,本發(fā)明提供一種位流中的FLV標(biāo)簽的搜尋方法及其搜尋裝置。通過將本發(fā)明揭露的跳過長度插入每一搜尋程序中,可較輕易、較快速地找到FLV標(biāo)簽來擷取視頻數(shù)據(jù)與音頻數(shù)據(jù)。因此,當(dāng)FLV 標(biāo)簽中發(fā)生錯誤時,可不停止地播放FLV格式的數(shù)據(jù)的播放程序。
以上所述僅為本發(fā)明的較佳實施例,舉凡熟悉本案的人士援依本發(fā)明的精神所做的等效變化與修飾,皆應(yīng)涵蓋于權(quán)利要求書內(nèi)。
權(quán)利要求
1.一種位流中的FLASH視頻標(biāo)簽的搜尋方法,包含 設(shè)置一第一開始位置以及關(guān)于一第一搜尋程序的一第一搜尋長度,其中該第一搜尋長度指示對該位流執(zhí)行的該第一搜尋程序的一位流長度; 自該第一開始位置對該位流開始該第一搜尋程序以搜尋該FLASH視頻標(biāo)簽; 其中當(dāng)于該第一搜尋長度中未找到該FLASH視頻標(biāo)簽時,設(shè)置關(guān)于接續(xù)該第一搜尋程序的一第二搜尋程序的一第二開始位置,其中該第一開始位置與該第二開始位置是通過一時間段分離,該時間段等于該第一搜尋長度與一第一跳過長度的總和,其中該第一跳過長度對應(yīng)于該第一搜尋程序;以及 自該第二開始位置對該位流開始該第二搜尋程序以搜尋該FLASH視頻標(biāo)簽。
2.根據(jù)權(quán)利要求1所述的位流中的FLASH視頻標(biāo)簽的搜尋方法,更包含 當(dāng)于該第一搜尋長度中未找到該FLASH視頻標(biāo)簽時,設(shè)置關(guān)于該第二搜尋程序的一第二搜尋長度,其中該第二搜尋長度指示對該位流執(zhí)行的該第二搜尋程序的一位流長度;以及 當(dāng)于該第二搜尋長度中未找到該FLASH視頻標(biāo)簽時,設(shè)置關(guān)于緊接該第二搜尋程序的一第三搜尋程序的一第三開始位置,其中該第二開始位置與該第三開始位置是通過另一時間段分離,該另一時間段等于該第二搜尋長度與一第二跳過長度的總和,其中該第二跳過長度對應(yīng)于該第二搜尋程序。
3.根據(jù)權(quán)利要求2所述的位流中的FLASH視頻標(biāo)簽的搜尋方法,其中該第二跳過長度實質(zhì)上等于該第一跳過長度。
4.根據(jù)權(quán)利要求2所述的位流中的FLASH視頻標(biāo)簽的搜尋方法,其中該第二跳過長度大于該第一跳過長度。
5.根據(jù)權(quán)利要求1所述的位流中的FLASH視頻標(biāo)簽的搜尋方法,其中該第一搜尋長度等于一視頻標(biāo)簽大小與一音頻標(biāo)簽大小的總和,該視頻標(biāo)簽大小與一視頻格式相關(guān)且該音頻標(biāo)簽大小與一音頻格式相關(guān)。
6.根據(jù)權(quán)利要求1所述的位流中的FLASH視頻標(biāo)簽的搜尋方法,其中當(dāng)該位流中發(fā)生一位流錯誤時,該第一開始位置被設(shè)置為一錯誤位置。
7.根據(jù)權(quán)利要求1所述的位流中的FLASH視頻標(biāo)簽的搜尋方法,更包含 緩沖通過該第一搜尋長度指示的該位流的一部分; 其中該自該第一開始位置對該位流開始該第一搜尋程序的步驟包含 自該第一開始位置對該位流的已緩沖部分開始該第一搜尋程序以搜尋該FLASH視頻標(biāo)簽。
8.根據(jù)權(quán)利要求1所述的位流中的FLASH視頻標(biāo)簽的搜尋方法,其中該自該第一開始位置對該位流開始該第一搜尋程序的步驟包含 依據(jù)該FLASH視頻標(biāo)簽的一特定特性逐字節(jié)順序搜尋該位流中的該FLASH視頻標(biāo)簽。
9.根據(jù)權(quán)利要求8所述的位流中的FLASH視頻標(biāo)簽的搜尋方法,其中該依據(jù)該FLASH視頻標(biāo)簽的該特定特性逐字節(jié)順序搜尋該位流中的該FLASH視頻標(biāo)簽的步驟包含 檢測對應(yīng)于該位流中的一標(biāo)簽類型的字節(jié)值是否等于指示一音頻類型的一第一數(shù)值或指示一視頻類型的一第二數(shù)值。
10.根據(jù)權(quán)利要求9所述的位流中的FLASH視頻標(biāo)簽的搜尋方法,其中該依據(jù)該FLASH視頻標(biāo)簽的該特定特性逐字節(jié)順序搜尋該位流中的該FLASH視頻標(biāo)簽的步驟更包含當(dāng)對應(yīng)于該標(biāo)簽類型的字節(jié)值等于該第一數(shù)值或該第二數(shù)值時,檢測對應(yīng)于一時戳的字節(jié)值是否大于一臨界值以及依據(jù)一檢測結(jié)果決定一擴展時戳是否包含至少一個等于一第一預(yù)定值的字節(jié)值。
11.根據(jù)權(quán)利要求10所述的位流中的FLASH視頻標(biāo)簽的搜尋方法,其中該依據(jù)該檢測結(jié)果決定該擴展時戳是否包含該至少一個等于該第一預(yù)定值的字節(jié)值的步驟包含 當(dāng)對應(yīng)于該時戳的字節(jié)值不大于該臨界值時,決定對應(yīng)于該擴展時戳的字節(jié)值是否等于該第一預(yù)定值; 當(dāng)對應(yīng)于該擴展時戳的字節(jié)值等于該第一預(yù)定值時,決定對應(yīng)于一串流ID的字節(jié)值是否等于一第二預(yù)定值;以及 當(dāng)對應(yīng)于該時戳的字節(jié)值大于該臨界值時,決定對應(yīng)于該串流ID的字節(jié)值是否等于該第二預(yù)定值。
12.根據(jù)權(quán)利要求11所述的位流中的FLASH視頻標(biāo)簽的搜尋方法,其中該依據(jù)該FLASH視頻標(biāo)簽的該特定特性逐字節(jié)順序搜尋該位流中的該FLASH視頻標(biāo)簽的步驟更包含 當(dāng)對應(yīng)于該串流ID的字節(jié)值等于該第二預(yù)定值時,決定對應(yīng)于該位流中的該標(biāo)簽類型的字節(jié)值是否等于該第一數(shù)值; 當(dāng)對應(yīng)于該標(biāo)簽類型的字節(jié)值等于該第一數(shù)值時,決定是否已接收到一音頻信息;當(dāng)已接收到該音頻信息時,決定對應(yīng)于該音頻信息的字節(jié)值是否等于該已接收的音頻/[目息;以及 當(dāng)對應(yīng)于該音頻信息的字節(jié)值等于該已接收的音頻信息時,指示已找到關(guān)于一音頻格式的該FLASH視頻標(biāo)簽。
13.根據(jù)權(quán)利要求11所述的位流中的FLASH視頻標(biāo)簽的搜尋方法,其中該依據(jù)該FLASH視頻標(biāo)簽的該特定特性逐字節(jié)順序搜尋該位流中的該FLASH視頻標(biāo)簽的步驟更包含 當(dāng)對應(yīng)于該串流ID的字節(jié)值等于該第二預(yù)定值時,決定對應(yīng)于該位流中的該標(biāo)簽類型的字節(jié)值是否等于該第二數(shù)值; 當(dāng)對應(yīng)于該標(biāo)簽類型的字節(jié)值等于該第二數(shù)值時,決定是否已接收到一編解碼器ID ;當(dāng)已接收到該編解碼器ID時,決定對應(yīng)于該編解碼器ID的字節(jié)值是否等于該已接收的編解碼器ID;以及 當(dāng)對應(yīng)于該編解碼器ID的字節(jié)值等于該已接收的編解碼器ID時,指示已找到關(guān)于一視頻格式的該FLASH視頻標(biāo)簽。
14.一種位流中的FLASH視頻標(biāo)簽的搜尋裝置,包含 一設(shè)置模塊,用于設(shè)置一第一開始位置以及關(guān)于一第一搜尋程序的一第一搜尋長度,其中該第一搜尋長度指示對該位流執(zhí)行的該第一搜尋程序的一位流長度;以及 一搜尋模塊,用于自該第一開始位置對該位流開始該第一搜尋程序以搜尋該FLASH視頻標(biāo)簽; 其中當(dāng)于該第一搜尋長度中未找到該FLASH視頻標(biāo)簽時,該設(shè)置模塊進一步用于設(shè)置關(guān)于緊接該第一搜尋程序的一第二搜尋程序的一第二開始位置,其中該第一開始位置與該第二開始位置是通過一時間段分離,該時間段等于該第一搜尋長度與一第一跳過長度的總和,其中該第一跳過長度對應(yīng)于該第一搜尋程序;以及該搜尋模塊進一步用于自該第二開始位置對該位流開始該第二搜尋程序以搜尋該FLASH視頻標(biāo)簽。
15.根據(jù)權(quán)利要求14所述的位流中的FLASH視頻標(biāo)簽的搜尋裝置,其中該設(shè)置模塊進一步用于 當(dāng)于該第一搜尋長度中未找到該FLASH視頻標(biāo)簽時,設(shè)置關(guān)于該第二搜尋程序的一第二搜尋長度,其中該第二搜尋長度指示對該位流執(zhí)行的該第二搜尋程序的一位流長度;以及 當(dāng)于該第二搜尋長度中未找到該FLASH視頻標(biāo)簽時,設(shè)置關(guān)于緊接該第二搜尋程序的一第三搜尋程序的一第三開始位置,其中該第二開始位置與該第三開始位置是通過另一時間段分離,該另一時間段等于該第二搜尋長度與一第二跳過長度的總和,其中該第二跳過長度對應(yīng)于該第二搜尋程序。
16.根據(jù)權(quán)利要求15所述的位流中的FLASH視頻標(biāo)簽的搜尋裝置,其中該第二跳過長度實質(zhì)上等于該第一跳過長度。
17.根據(jù)權(quán)利要求15所述的位流中的FLASH視頻標(biāo)簽的搜尋裝置,其中該第二跳過長度大于該第一跳過長度。
18.根據(jù)權(quán)利要求14所述的位流中的FLASH視頻標(biāo)簽的搜尋裝置,其中該第一搜尋長度等于一視頻標(biāo)簽大小與一音頻標(biāo)簽大小的總和,該視頻標(biāo)簽大小有關(guān)于一視頻格式且該音頻標(biāo)簽大小有關(guān)于一音頻格式。
19.根據(jù)權(quán)利要求14所述的位流中的FLASH視頻標(biāo)簽的搜尋裝置,其中當(dāng)該位流中發(fā)生一位流錯誤時,該設(shè)置模塊將該第一開始位置設(shè)置為一錯誤位置。
20.根據(jù)權(quán)利要求14所述的位流中的FLASH視頻標(biāo)簽的搜尋裝置,更包含 一數(shù)據(jù)緩沖器,用于緩沖通過該第一搜尋長度指示的該位流的一部分; 其中該搜尋模塊自該第一開始位置對該位流的已緩沖部分開始該第一搜尋程序以搜尋該FLASH視頻標(biāo)簽。
21.根據(jù)權(quán)利要求14所述的位流中的FLASH視頻標(biāo)簽的搜尋裝置,其中該搜尋模塊依據(jù)該FLASH視頻標(biāo)簽的一特定特性逐字節(jié)順序搜尋該位流中的該FLASH視頻標(biāo)簽。
22.根據(jù)權(quán)利要求21所述的位流中的FLASH視頻標(biāo)簽的搜尋裝置,其中該搜尋模塊包含 一第一檢測單元,用于檢測對應(yīng)于該位流中的一標(biāo)簽類型的字節(jié)值是否等于指示一音頻類型的一第一數(shù)值或指示一視頻類型的一第二數(shù)值。
23.根據(jù)權(quán)利要求22所述的位流中的FLASH視頻標(biāo)簽的搜尋裝置,其中該搜尋模塊更包含 一第二檢測單元,用于當(dāng)對應(yīng)于該標(biāo)簽類型的字節(jié)值等于該第一數(shù)值或該第二數(shù)值時,檢測對應(yīng)于一時戳的字節(jié)值是否大于一臨界值以及依據(jù)一檢測結(jié)果決定一擴展時戳是否包含至少一個等于一第一預(yù)定值的字節(jié)值。
24.根據(jù)權(quán)利要求23所述的位流中的FLASH視頻標(biāo)簽的搜尋裝置,其中該第二檢測單元包含 一第一決定子單元,用于當(dāng)對應(yīng)于該時戳的字節(jié)值不大于該臨界值時,決定對應(yīng)于該擴展時戳的字節(jié)值是否等于該第一預(yù)定值;以及 一第二決定子單元,用于當(dāng)對應(yīng)于該擴展時戳的字節(jié)值等于該第一預(yù)定值時,決定對應(yīng)于一串流ID的字節(jié)值是否等于一第二預(yù)定值,以及用于當(dāng)對應(yīng)于該時戳的字節(jié)值大于該臨界值時,決定對應(yīng)于該串流ID的字節(jié)值是否等于該第二預(yù)定值。
25.根據(jù)權(quán)利要求24所述的位流中的FLASH視頻標(biāo)簽的搜尋裝置,其中該搜尋模塊更包含 一第三檢測單元,用于當(dāng)對應(yīng)于該串流ID的字節(jié)值等于該第二預(yù)定值時,決定對應(yīng)于該位流中的該標(biāo)簽類型的字節(jié)值是否等于該第一數(shù)值;以及 一第四檢測單元,用于當(dāng)對應(yīng)于該標(biāo)簽類型的字節(jié)值等于該第一數(shù)值時,決定是否已接收到一音頻信息,用于當(dāng)已接收到該音頻信息時,決定對應(yīng)于該音頻信息的字節(jié)值是否等于該已接收的音頻信息,以及用于當(dāng)對應(yīng)于該音頻信息的字節(jié)值等于該已接收的音頻信息時,指示已找到關(guān)于一音頻格式的該FLASH視頻標(biāo)簽。
26.根據(jù)權(quán)利要求24所述的位流中的FLASH視頻標(biāo)簽的搜尋裝置,其中該搜尋模塊更包含 一第三檢測單元,用于當(dāng)對應(yīng)于該串流ID的字節(jié)值等于該第二預(yù)定值時,決定對應(yīng)于該位流中的該標(biāo)簽類型的字節(jié)值是否等于該第二數(shù)值;以及 一第四檢測單元,用于當(dāng)對應(yīng)于該標(biāo)簽類型的字節(jié)值等于該第二數(shù)值時,決定是否已接收到一編解碼器ID,用于當(dāng)已接收到該編解碼器ID時,決定對應(yīng)于該編解碼器ID的字節(jié)值是否等于該已接收的編解碼器ID,以及用于當(dāng)對應(yīng)于該編解碼器ID的字節(jié)值等于該已接收的編解碼器ID時,指示已找到關(guān)于一視頻格式的該FLASH視頻標(biāo)簽。
全文摘要
本發(fā)明提供一種位流中的FLASH視頻標(biāo)簽的搜尋方法及其搜尋裝置。位流中的FLASH視頻標(biāo)簽的搜尋方法包含設(shè)置一第一開始位置以及關(guān)于一第一搜尋程序的一第一搜尋長度,第一搜尋長度指示對位流執(zhí)行的第一搜尋程序的一位流長度;自第一開始位置對位流開始第一搜尋程序以搜尋FLASH視頻標(biāo)簽;其中當(dāng)于第一搜尋長度中未找到FLASH視頻標(biāo)簽時,設(shè)置關(guān)于接續(xù)第一搜尋程序的一第二搜尋程序的一第二開始位置,其中第一開始位置與第二開始位置是通過一時間段分離,時間段等于第一搜尋長度與一第一跳過長度的總和,其中第一跳過長度對應(yīng)于第一搜尋程序;以及自第二開始位置對位流開始第二搜尋程序以搜尋FLASH視頻標(biāo)簽。
文檔編號H04N7/26GK103004189SQ201080068075
公開日2013年3月27日 申請日期2010年7月15日 優(yōu)先權(quán)日2010年7月15日
發(fā)明者崔俊 申請人:聯(lián)發(fā)科技(新加坡)私人有限公司