一種流媒體文件的定位方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及多媒體數(shù)據(jù)處理領(lǐng)域,特別設(shè)及一種流媒體文件的定位方法及裝置。
【背景技術(shù)】
[0002] 在流媒體文件播放時,用戶快速頻繁地拖動播放器時,常常會出現(xiàn)卡屏、花屏的現(xiàn) 象;例如在視頻監(jiān)控行業(yè)中,事后查詢錄像文件是頻度很高的業(yè)務(wù),如果用戶快速頻繁的拖 動播放器,經(jīng)常會出現(xiàn)卡屏、花屏的現(xiàn)象,由此可見,如果沒有一種好的快速定位流媒體文 件的方法,會影響到整個監(jiān)控系統(tǒng)的體驗。
[0003] 因此,如何進行快速準確地定位流媒體文件,是本領(lǐng)域技術(shù)人員需要解決的技術(shù) 問題。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的是提供一種流媒體文件的定位方法及裝置,能夠快速檢索和定位正 在播放中的流媒體文件;且當(dāng)用戶快速頻繁拖動播放器時,能夠防止出現(xiàn)卡屏、花屏的現(xiàn) 象。
[0005] 為解決上述技術(shù)問題,本發(fā)明提供一種流媒體文件的定位方法,包括:
[0006] 當(dāng)用戶打開流媒體文件時,在內(nèi)存中導(dǎo)入所述流媒體文件對應(yīng)的帖索引單元列 表;
[0007] 根據(jù)用戶拖動進度條操作,計算出拖動條對應(yīng)的播放時間;
[000引將所述播放時間與所述帖索引單元列表中的時間戳進行比較,確定拖動條對應(yīng)的 帖單元;
[0009] 將所述播放時間依次與所述帖單元中對應(yīng)的各個帖的時間戳進行比較,確定要播 放的帖。
[0010] 其中,所述將所述播放時間與所述帖索引單元列表中的時間戳進行比較,確定拖 動條對應(yīng)的帖單元,包括:
[0011] 依次將所述播放時間與所述帖索引單元列表中的各個帖單元的時間戳進行比較;
[0012] 直到存在帖單元的時間戳的值大于所述播放時間,則將大于所述播放時間的時間 戳對應(yīng)的帖單元作為拖動條對應(yīng)的帖單元。
[0013] 其中,所述將所述播放時間依次與所述帖單元中對應(yīng)的各個帖的時間戳進行比 較,確定要播放的帖,包括:
[0014] 依次將所述播放時間與大于所述播放時間的時間戳對應(yīng)的帖單元中對應(yīng)的各個 帖的時間戳進行比較;
[0015] 直到存在帖的時間戳的值大于所述播放時間,則將大于所述播放時間的時間戳對 應(yīng)的帖作為要播放的帖。
[0016] 其中,所述流媒體文件的封裝格式包括:
[0017] 流媒體文件頭信息包括:流媒體文件的開始時間,結(jié)束時間及文件總的帖單元數(shù) 量,將各個帖單元依次編碼建立帖索引單元列表;其中,所述帖單元的格式包括:
[0018]帖單元編碼,帖單元開始時間,帖單元結(jié)束時間,帖單元在所述流媒體文件中的位 置。
[0019]其中,還包括;
[0020] 判斷播放內(nèi)容是否正確;
[0021] 若不正確,則發(fā)送錯誤提示。
[0022 ]本發(fā)明提供一種流媒體文件的定位裝置,包括:
[0023] 導(dǎo)入模塊,用于當(dāng)用戶打開流媒體文件時,在內(nèi)存中導(dǎo)入所述流媒體文件對應(yīng)的 帖索引單元列表;
[0024] 計算模塊,用于根據(jù)用戶拖動進度條操作,計算出拖動條對應(yīng)的播放時間;
[0025] 粗定位模塊,用于將所述播放時間與所述帖索引單元列表中的時間戳進行比較, 確定拖動條對應(yīng)的帖單元;
[0026] 精定位模塊,用于將所述播放時間依次與所述帖單元中對應(yīng)的各個帖的時間戳進 行比較,確定要播放的帖。
[0027] 其中,所述粗定位模塊包括:
[0028] 粗比較單元,用于依次將所述播放時間與所述帖索引單元列表中的各個帖單元的 時間戳進行比較;
[0029] 粗定位單元,用于直到存在帖單元的時間戳的值大于所述播放時間,則將大于所 述播放時間的時間戳對應(yīng)的帖單元作為拖動條對應(yīng)的帖單元。
[0030] 其中,所述精定位模塊包括:
[0031] 精比較單元,用于依次將所述播放時間與大于所述播放時間的時間戳對應(yīng)的帖單 元中對應(yīng)的各個帖的時間戳進行比較;
[0032] 精定位單元,用于直到存在帖的時間戳的值大于所述播放時間,則將大于所述播 放時間的時間戳對應(yīng)的帖作為要播放的帖。
[0033] 其中,包括存儲模塊,用于存儲所述流媒體文件,其中,所述流媒體文件的封裝格 式包括:
[0034] 流媒體文件頭信息包括:流媒體文件的開始時間,結(jié)束時間及文件總的帖單元數(shù) 量,將各個帖單元依次編碼建立帖索引單元列表;其中,所述帖單元的格式包括:帖單元編 碼,帖單元開始時間,帖單元結(jié)束時間,帖單元在所述流媒體文件中的位置。
[0035] 其中,還包括:
[0036] 提示模塊,用于判斷播放內(nèi)容是否正確;若不正確,則發(fā)送錯誤提示。
[0037] 本發(fā)明所提供的流媒體文件的定位方法及裝置,當(dāng)用戶打開流媒體文件時,在內(nèi) 存中導(dǎo)入所述流媒體文件對應(yīng)的帖索引單元列表;根據(jù)用戶拖動進度條操作,計算出拖動 條對應(yīng)的播放時間;將所述播放時間與所述帖索引單元列表中的時間戳進行比較,確定拖 動條對應(yīng)的帖單元;將所述播放時間依次與所述帖單元中對應(yīng)的各個帖的時間戳進行比 較,確定要播放的帖;
[0038] 用戶打開流媒體文件開始播放時,先根據(jù)流媒體文件中文件頭信息將帖索引單元 列表導(dǎo)入到內(nèi)存中,當(dāng)用戶拖動時,先在內(nèi)存中找到大致對應(yīng)的位置,再在帖信息中進行精 確定位,運種二級定位方法大大減輕了播放器在查找定位帖的時間和運算量;即能夠快速 檢索和定位正在播放中的流媒體文件;且當(dāng)用戶快速頻繁拖動播放器時,能夠防止出現(xiàn)卡 屏、花屏的現(xiàn)象。
【附圖說明】
[0039] 為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可W根據(jù) 提供的附圖獲得其他的附圖。
[0040] 圖1為本發(fā)明實施例所提供的流媒體文件的定位方法的流程圖;
[0041 ]圖2為本發(fā)明實施例所提供的流媒體文件封裝格式的示意圖;
[0042] 圖3為本發(fā)明實施例所提供的流媒體文件的定位裝置的結(jié)構(gòu)框圖。
【具體實施方式】
[0043] 本發(fā)明的核屯、是提供一種流媒體文件的定位方法及裝置,能夠快速檢索和定位正 在播放中的流媒體文件;且當(dāng)用戶快速頻繁拖動播放器時,能夠防止出現(xiàn)卡屏、花屏的現(xiàn) 象。
[0044] 為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例 中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是 本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員 在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0045] 請參考圖1,圖1為本發(fā)明實施例所提供的流媒體文件的定位方法的流程圖;該方 法可W包括:
[0046] slOO、當(dāng)用戶打開流媒體文件時,在內(nèi)存中導(dǎo)入所述流媒體文件對應(yīng)的帖索引單 元列表;
[0047] 其中,當(dāng)用戶要打開一個流媒體文件時,會在內(nèi)存中導(dǎo)入該流媒體文件對應(yīng)的帖 索引單元列表。帖索引單元列表中保存該流媒體文件中各個帖單元的起終時間W及每個帖 單元中各個帖單元的時間戳即帖的起始時間。優(yōu)選的,請參考圖2,圖2為流媒體文件封裝格 式的示意圖;運里流媒體文件的封裝格式具體可W包括:
[0048] 流媒體文件頭信息包括:流媒體文件的開始時間,結(jié)束時間及文件總的帖單元數(shù) 量,帖索引單元列表,其中,帖索引單元列表是將各個帖單元依次編碼建立帖索引單元;其 中,每個帖索引單元即帖單元的格式包括:
[0049] 帖單元編碼,帖單元開始時間,帖單元結(jié)束時間,帖單元在所述流媒體文件中的位 置。
[0050] 其中,即每個帖單元都存在各個帖長,帖時間戳,是否為關(guān)鍵帖W及帖數(shù)據(jù)等實際 帖數(shù)據(jù)。
[0051] 當(dāng)打開流媒體文件時,文件頭信息可W被保存到下面的數(shù)據(jù)結(jié)構(gòu)(請參見圖2)中, 在內(nèi)存中會建立一個帖索引單元列表,使用運個索引列表,可W快速、精確定位到每一帖。 八文件總的數(shù)據(jù)單元定義 t\pedef struct tagMAINHDR { TIMEUNIT TimeUnit; 八文件時間段 BYTE btUnitSum; //文件總單元數(shù) UNiTDBSC UnitD賊C腳;//單元描述 I MAlNHD民; 公單元巧縣時巧 typedef 化 UCt 1:agTIMEU]SlIT { BYTE btStart [STR TIME LEN]; BYTE btEnd [STR_TIME_LEN];
[0052] j TIM EUN IT; 冷單虎貓遂 typedef struct tagUN ITDESC { WO民DwUnitlD; 分單元編碼 TIMEUNIT TimeUNIT; //蘋充巧禱腫閥 DWORD dwPos; //UNIT對應(yīng)的城在文祥中的偏移 SUN1TDESC; //中貧決的定文 typedef struct tagFRAMEHDR { DWORD dwFrameSize; W憤長 DWORD dwTime; //時間戳:前后兩頓的差 BYTEbtKeyFlag; //關(guān)鍵憤標識
[005;3] 1FRAMEF1DR;
[0054] sllO、根據(jù)用戶拖動進度條操作,計算出拖動條對應(yīng)的播放時間;
[0055] S120、將所述播放時間與所述帖索引單元列表中的時間戳進行比較,確定拖動條 對應(yīng)的帖單元;
[0056] 其中,當(dāng)用戶拖動時,先在內(nèi)存中找到大致對應(yīng)的位置;即先確定大概在哪個帖單 元中,具體的過程如下:
[0057] 依次將所述播放時間與所述帖索引單元列表中的各個帖單元的時間戳進行比較;
[0058] 直到存在帖單元的時間戳的值大于所述播放時間,則將大于所述播放時間的時間 戳對應(yīng)的帖單元作為拖動條對應(yīng)的帖單元。
[0059] 目P,通過上述步驟實現(xiàn)在帖索引單元中模糊定位,當(dāng)用戶拖動進度條時,借助內(nèi)存 中的帖索引單元實現(xiàn)模糊定位,方法如下:
[0060] 步驟1、計算出拖動條對應(yīng)的播放時間化;
[0061] 步驟2、逐個與內(nèi)存中保存的帖索引單元列表的時間戳比較;
[0062] 步驟3、如果發(fā)現(xiàn)帖索引單元化的時間戳化〉Tp,則認定化對應(yīng)的帖是要