專利名稱:視頻文件播放方法及系統(tǒng)、用戶端設(shè)備、服務(wù)器設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,具體涉及一種視頻文件播放方法及系統(tǒng)、用戶端設(shè) 備、服務(wù)器設(shè)備。
背景技術(shù):
隨著互聯(lián)網(wǎng)的發(fā)展,視頻監(jiān)控與網(wǎng)絡(luò)流媒體點播越來越得到廣泛的應(yīng)用,點播回 放遠(yuǎn)程視頻需求日益強勁。在現(xiàn)有技術(shù)中,都是從遠(yuǎn)程服務(wù)器上下載碼流緩存到內(nèi)存進行 播放的。在服務(wù)器端,同一個時間軸的視頻文件以一個視頻文件的形式保存在服務(wù)器端供 用戶端下載,該視頻文件有索引區(qū)和二級索引區(qū),其中索引區(qū)包括起始地址、文件長度、起 始時間、結(jié)束時間、文件信息及二級索引等,二級索引區(qū)包括各個幀內(nèi)編碼幀I幀信息,該I 幀信息具體有I幀的起始時間、I幀的地址以及私有信息等。在對現(xiàn)有技術(shù)的研究和實踐過程中,本發(fā)明的發(fā)明人發(fā)現(xiàn),在現(xiàn)有技術(shù)中,都是從 遠(yuǎn)程服務(wù)器上下載碼流緩存到內(nèi)存進行播放的,隨著高清時代的來臨,這對終端的內(nèi)存的 消耗提出了更高的要求。并且,在同一時間軸上不同視頻文件連續(xù)下載在當(dāng)前的應(yīng)用中幾 乎是一片空白。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種視頻文件播放方法及系統(tǒng)、用戶端設(shè)備、服務(wù)器設(shè)備,解決 了用戶端從遠(yuǎn)程服務(wù)器上下載視頻文件進行播放時,在同一時間軸上不同視頻文件不能夠 連續(xù)下載的問題。一種視頻文件播放方法,包括用戶端從服務(wù)器下載視頻文件;將所述視頻文件添加索引區(qū),所述索引區(qū)包括所述視頻文件的起始地址、下一個 文件地址、起始時間;根據(jù)所述視頻文件索引區(qū)的起始時間將所述視頻文件插入到本地的視頻文件隊 列中,所述視頻文件的上一個視頻文件的索引區(qū)的下一個文件地址為所述視頻文件的索引 區(qū)的起始地址,所述視頻文件的索引區(qū)的下一個文件地址為所述視頻文件的下一個視頻文 件的索引區(qū)的起始地址,所述視頻文件隊列為由多個視頻文件根據(jù)索引區(qū)的起始時間的先 后順序前后拼接而成的大視頻文件;播放所述視頻文件。一種視頻文件播放方法,包括接收用戶端發(fā)送的視頻文件下載請求消息,所述視頻文件下載請求消息攜帶播放 時間;根據(jù)所述播放時間查找對應(yīng)的視頻文件;將所述視頻文件發(fā)送給用戶端;所述視頻文件發(fā)送完后,根據(jù)所述視頻文件索引區(qū)的下一個文件地址查找到下一個視頻文件的起始地址,前一個視頻文件索引區(qū)的下一個文件地址為后一個視頻文件索引 區(qū)的起始地址,多個所述視頻文件前后拼接成一個大視頻文件,即視頻文件隊列;將所述下一個視頻文件發(fā)送給用戶端,直到所述視頻文件隊列中的最后一個視頻 文件,或者直到停止時間對應(yīng)的視頻文件,所述停止時間由用戶端發(fā)送。一種用戶端設(shè)備,包括下載模塊,用于從服務(wù)器下載視頻文件;索引區(qū)添加模塊,用于將存儲模塊存儲的視頻文件添加索引區(qū),所述索引區(qū)包括 所述視頻文件的起始地址、下一個文件地址、起始時間;視頻文件隊列管理模塊,用于根據(jù)所述視頻文件索引區(qū)的起始時間將所述視頻文 件插入到本地的視頻文件隊列中,所述視頻文件的上一個視頻文件的索引區(qū)的下一個文件 地址為所述視頻文件的索引區(qū)的起始地址,所述視頻文件的索引區(qū)的下一個文件地址為所 述視頻文件的下一個視頻文件的索引區(qū)的起始地址,所述視頻文件隊列為一個大視頻文 件,根據(jù)多個視頻文件的索引區(qū)的起始時間的先后順序前后拼接而成;播放模塊,用于播放視頻文件隊列管理模塊插入視頻文件隊列的視頻文件。一種服務(wù)器設(shè)備,包括接收模塊,用于接收用戶端發(fā)送的視頻文件下載請求消息,所述視頻文件下載請 求消息攜帶播放時間;查找模塊,用于根據(jù)接收模塊接收的播放時間查找對應(yīng)的視頻文件;發(fā)送模塊,用于將查找模塊查找到的視頻文件發(fā)送給用戶端,并在所述視頻文件 發(fā)送完后,根據(jù)所述視頻文件索引區(qū)的下一個文件地址查找到下一個視頻文件的起始地 址,并將所述下一個視頻文件發(fā)送給用戶端,直到視頻文件隊列中的最后一個視頻文件,或 者停止時間對應(yīng)的視頻文件,所述停止時間由用戶端發(fā)送;所述視頻文件隊列為一個大視 頻文件,根據(jù)多個視頻文件的索引區(qū)的起始時間的先后順序前后拼接而成,前一個視頻文 件索引區(qū)的下一個文件地址為后一個視頻文件索引區(qū)的起始地址。一種視頻文件播放系統(tǒng),包括上述用戶端設(shè)備,以及上述服務(wù)器設(shè)備。本發(fā)明實施例通過用戶端從服務(wù)器下載視頻文件,將該視頻文件添加索引區(qū),該 索引區(qū)包括起始地址、下一個文件地址、起始時間,再根據(jù)該視頻文件索引區(qū)的起始時間將 該視頻文件插入到本地的視頻文件隊列中,使得該視頻文件的上一個視頻文件的索引區(qū)的 下一個文件地址為該視頻文件的索引區(qū)的起始地址,并且該視頻文件的索引區(qū)的下一個文 件地址為該視頻文件的下一個視頻文件的索引區(qū)的起始地址,其中視頻文件隊列為由多個 視頻文件根據(jù)索引區(qū)的起始時間的先后順序前后拼接而成的大視頻文件;然后播放接收的 視頻文件;這樣在同一時間軸上,不同的視頻文件就能夠不分先后連續(xù)下載,能夠?qū)⒉贿B續(xù) 存儲的視頻文件按照時間順序播放,并且因為是保存在本地,所以在回放的時候,不會消耗 大量內(nèi)存。
圖1是本發(fā)明實施例一種視頻文件播放方法的數(shù)據(jù)流程示意圖;圖2是本發(fā)明實施例一種視頻文件播放方法的數(shù)據(jù)流程示意圖3是本發(fā)明實施例一種視頻文件播放方法的數(shù)據(jù)流程示意圖;圖4是本發(fā)明實施例視頻文件索引區(qū)示意圖;圖5是本發(fā)明實施例視頻文件二級索引區(qū)示意圖;圖6是本發(fā)明實施例I幀信息示意圖;圖7是本發(fā)明一應(yīng)用例中搜索結(jié)果示意圖;圖fe是本發(fā)明實施例一種用戶端設(shè)備邏輯結(jié)構(gòu)示意圖;圖8b是本發(fā)明實施例一種用戶端設(shè)備邏輯結(jié)構(gòu)示意圖;圖9a是本發(fā)明實施例一種服務(wù)器設(shè)備邏輯結(jié)構(gòu)示意圖;圖9b是本發(fā)明實施例一種服務(wù)器設(shè)備邏輯結(jié)構(gòu)示意圖;圖10是本發(fā)明實施例一種視頻文件播放系統(tǒng)邏輯結(jié)構(gòu)示意圖。
具體實施例方式本發(fā)明實施例提供一種視頻文件播放方法,本發(fā)明實施例還提供相應(yīng)的系統(tǒng)、用 戶端設(shè)備和服務(wù)器設(shè)備。以下分別進行詳細(xì)說明。請參閱圖1,本發(fā)明實施例中視頻文件播放方法的第一實施例,具體的101、用戶端從服務(wù)器下載視頻文件;102、將視頻文件添加索引區(qū);將下載的視頻文件添加上索引區(qū),該索引區(qū)包括視頻文件的起始地址、下一個文 件地址、起始時間等項目。103、根據(jù)視頻文件索引區(qū)的起始時間將下載的視頻文件插入到本地的視頻文件 隊列中;視頻文件的索引區(qū)有起始地址、下一個文件地址、起始時間等項目,根據(jù)視頻文件 的索引區(qū)的起始時間將該視頻文件插入到本地的視頻文件隊列中,其中,視頻文件隊列為 由多個視頻文件根據(jù)索引區(qū)的起始時間的先后順序前后拼接而成的大視頻文件,組成視頻 文件隊列的視頻文件都在同一時間軸上;將下載的視頻文件插入到視頻文件隊列中,使得 該視頻文件的上一個視頻文件的索引區(qū)的下一個文件地址為該視頻文件的索引區(qū)的起始 地址,并且該視頻文件的索引區(qū)的下一個文件地址為該視頻文件的下一個視頻文件的索引 區(qū)的起始地址。104、播放視頻文件。在本實施例中,用戶端從服務(wù)器下載視頻文件,將該視頻文件添加索引區(qū),該索引 區(qū)包括起始地址、下一個文件地址、起始時間,再根據(jù)該視頻文件索引區(qū)的起始時間將該視 頻文件插入到本地的視頻文件隊列中,使得該視頻文件的上一個視頻文件的索引區(qū)的下一 個文件地址為該視頻文件的索引區(qū)的起始地址,并且該視頻文件的索引區(qū)的下一個文件地 址為該視頻文件的下一個視頻文件的索引區(qū)的起始地址,其中視頻文件隊列為由多個視頻 文件根據(jù)索引區(qū)的起始時間的先后順序前后拼接而成的大視頻文件;然后播放接收的視頻 文件;這樣在同一時間軸上,不同的視頻文件就能夠不分先后連續(xù)下載,能夠?qū)⒉贿B續(xù)存儲 的視頻文件按照時間順序播放,并且因為是保存在本地,所以在回放的時候,不會消耗大量 內(nèi)存。請參閱圖2,本發(fā)明實施例中視頻文件播放方法的第二實施例,具體的
201、用戶端獲取用戶輸入的播放時間;用戶端獲取用戶輸入的播放時間,具體的,用戶端獲取用戶在播放進度條上搜索 (Seek)的位置,然后計算kek的位置占播放進度條總長度的比例,再將該比例與播放總時 間相乘得到的值加上第一個視頻文件的起始時間,得到播放時間;或者是用戶直接輸入的 播放時間;202、判斷本地是否有播放時間對應(yīng)的視頻文件;在步驟201中獲取播放時間后,根據(jù)該播放時間到存儲在本地的視頻文件隊列中 查找,判斷是否有于該播放時間對應(yīng)的視頻文件,具體的同一時間軸上的不同視頻文件,用戶端在下載了視頻文件后就會將視頻文件保存 在本地,形成一個視頻文件隊列,該視頻文件隊列中的各個視頻文件在物理存儲順序上是 不一定按順序存儲的,先下載的在前面,后下載的在后面,但是各個視頻文件在播放時是按 照各個視頻文件的索引區(qū)的起始時間的先后順序播放的,例如第一次下載的視頻文件A的 起始時間和結(jié)束時間為14:00至15:00 ;第二次下載的視頻文件B的起始時間和結(jié)束時間 為10:00至11:00,因為視頻文件B的起始時間小于視頻文件A的起始時間,所以將視頻文 件A的索引區(qū)的起始地址作為視頻文件B的索引區(qū)的下一個文件地址;第三次下載的視頻 文件C的起始時間和結(jié)束時間為16:00至18:00,因為視頻文件C的起始時間大于視頻文件 A的起始時間,所以將視頻文件C的索引區(qū)的起始地址作為視頻文件A的索引區(qū)的下一個文 件地址;那么,這三個視頻文件的物理存儲順序為A — B — C,而播放順序為B — A — C,在 播放完視頻文件B后,根據(jù)視頻文件B的索引區(qū)的下一個文件地址找到視頻文件A的起始 地址,繼續(xù)播放視頻文件A,在播放完視頻文件A后,根據(jù)視頻文件A的索引區(qū)的下一個文件 地址找到視頻文件C的起始地址,繼續(xù)播放視頻文件C ;從本地視頻文件隊列中的第一個視頻文件開始,將播放時間與視頻文件的索引區(qū) 的結(jié)束時間進行比較,如果播放時間大于視頻文件的索引區(qū)的結(jié)束時間,則根據(jù)該視頻文 件的索引區(qū)的下一個文件地址找到下一個視頻文件,將播放時間與下一個視頻文件的索引 區(qū)的結(jié)束時間進行比較,如此循環(huán),直至比較到最后一個視頻文件。203、如果沒有,則發(fā)送視頻文件下載請求消息給服務(wù)器;如果在步驟202中,比較的結(jié)果是播放時間小于第一個視頻文件的索引區(qū)的起始 時間,或者播放時間大于視頻文件隊列中最后一個視頻文件的索引區(qū)的起始時間,則說明 本地沒有與播放時間對應(yīng)的視頻文件,需要到服務(wù)器下載相應(yīng)視頻文件,則發(fā)送視頻文件 下載請求消息給服務(wù)器,該視頻文件下載請求消息攜帶播放時間。204、接收服務(wù)器發(fā)送的視頻文件;服務(wù)器接收用戶端發(fā)送的視頻文件下載請求消息后,根據(jù)該視頻文件下載請求消 息攜帶的播放時間到存儲在服務(wù)器端預(yù)先設(shè)置的視頻文件隊列中尋找與該播放時間對應(yīng) 的視頻文件的二級索引區(qū)的I幀,并從該I幀開始將視頻文件發(fā)送給用戶端,其中視頻文件 隊列由多個同一時間軸上的視頻文件按索引區(qū)的起始時間的先后順序組合而成,其中前一 個視頻文件的索引區(qū)的下一個文件地址為下一個視頻文件的索引區(qū)的起始地址;具體的先判斷播放時間是否小于第一個視頻文件的索引區(qū)的結(jié)束時間;如果不小于,則 根據(jù)第一個視頻文件索引區(qū)的下一個文件地址找到下一個視頻文件索引區(qū),并判斷播放時
9間是否小于下一個視頻文件索引區(qū)的結(jié)束時間;依次循環(huán),直至找到播放時間小于索引區(qū) 的結(jié)束時間的視頻文件;再比較播放時間與播放時間小于索引區(qū)的結(jié)束時間的視頻文件的二級索引區(qū)的 第一個I幀的起始時間的大小;如果播放時間大于該I幀的起始時間,則再判斷播放時間是 否小于等于下一個I幀的起始時間;依次循環(huán),直至找到該播放時間小于等于I幀的起始時 間的I幀,如果播放時間等于I幀的起始時間,則從該I幀開始向用戶端發(fā)送視頻文件;如 果播放時間小于I幀的起始時間,則從該I幀的前一個I幀開始向用戶端發(fā)送視頻文件;當(dāng)接收第一個I幀時,根據(jù)該I幀的起始時間定位該I幀在視頻文件隊列中的位 置,具體的,將該I幀的起始時間與視頻文件隊列中第一個視頻文件的起始時間比較,如 果I幀的起始時間大于第一個視頻文件的起始時間,則根據(jù)第一個視頻文件的索引區(qū)的下 一個視頻文件找到第二個視頻文件,再比較該I幀的起始時間和第二個視頻文件的起始時 間,依次循環(huán),直至查找到起始時間大于該I幀的視頻文件,第一個I幀的位置查找到的視 頻文件的前面;當(dāng)接收第二個以后的I幀時,根據(jù)該I幀的起始時間判斷視頻文件隊列中是否已 經(jīng)存在該I幀,具體的,接收到第二個以后的I幀時,將I幀的起始時間與查找到的視頻文 件的起始時間比較,如果該I幀的起始時間等于查找到的視頻文件的起始時間時,說明該I 幀所在的視頻文件用戶端已經(jīng)有了,此時,用戶端發(fā)送停止下載的消息給服務(wù)器,服務(wù)器停 止發(fā)送視頻文件給用戶端。205、將下載的視頻文件添加索引區(qū);用戶端接收的視頻文件是沒有索引區(qū)的,為了能將接收的視頻文件插入到存儲在 本地的視頻文件隊列中,需要將接收的視頻文件添加索引區(qū),索引區(qū)包括起始時間、文件 長度、起始時間、結(jié)束時間、文件信息、下一個文件地址、二級索引等項目。206、根據(jù)視頻文件索引區(qū)的起始時間將下載的視頻文件插入到本地的視頻文件 隊列中;因為在步驟204中,已經(jīng)將第一個I幀定位好了,直接將接收的視頻文件插到第一 個I幀定的位置。207、播放視頻文件;進一步的,當(dāng)播放到某個視頻文件的最后一個幀內(nèi)編碼幀時,若根據(jù)該視頻文件 的索引區(qū)的下一個文件地址查找到的物理地址沒有視頻文件時,向服務(wù)器發(fā)送視頻文件下 載請求消息,該視頻文件下載請求消息攜帶播放時間,該播放時間等于該視頻文件的最后 一個幀內(nèi)編碼幀的起始時間。208、如果有,則根據(jù)播放時間獲取并播放對應(yīng)的視頻文件;如果在步驟202中,比較的結(jié)果是本地有與播放時間對應(yīng)的視頻文件,則獲取并 播放該視頻文件,具體的判斷播放時間是否小于等于本地視頻文件隊列中第一個視頻文件的索引區(qū)的結(jié) 束時間;如果大于,則根據(jù)第一個視頻文件的索引區(qū)的下一個文件地址找到下一個視頻文 件,并判斷播放時間是否小于等于下一個視頻文件的索引區(qū)的結(jié)束時間;依次循環(huán),直至找 到播放時間小于等于索引區(qū)的結(jié)束時間的視頻文件;如果查找到播放時間等于索引區(qū)的結(jié)束時間的視頻文件,則從該視頻文件的二級索引區(qū)的第一個I幀開始播放;如果查找到播放時間小于索引區(qū)的結(jié)束時間的視頻文件,再比較播放時間與該視 頻文件的二級索引區(qū)的第一個I幀的起始時間的大??;如果播放時間大于該I幀的起始時 間,則再判斷播放時間是否小于等于下一個I幀的起始時間;依次循環(huán),直至找到播放時間 小于等于I幀的起始時間的I幀,如果播放時間等于I幀的起始時間,則從該I幀內(nèi)編碼幀 開始播放;如果播放時間小于I幀的起始時間,則從該I幀的前一個I幀開始播放。在本實施例中,用戶端從服務(wù)器下載視頻文件,將該視頻文件添加索引區(qū),該索引 區(qū)包括起始地址、下一個文件地址、起始時間,再根據(jù)該視頻文件索引區(qū)的起始時間將該視 頻文件插入到本地的視頻文件隊列中,使得該視頻文件的上一個視頻文件的索引區(qū)的下一 個文件地址為該視頻文件的索引區(qū)的起始地址,并且該視頻文件的索引區(qū)的下一個文件地 址為該視頻文件的下一個視頻文件的索引區(qū)的起始地址,其中視頻文件隊列為由多個視頻 文件根據(jù)索引區(qū)的起始時間的先后順序前后拼接而成的大視頻文件;然后播放接收的視頻 文件;這樣在同一時間軸上,不同的視頻文件就能夠不分先后連續(xù)下載,能夠?qū)⒉贿B續(xù)存儲 的視頻文件按照時間順序播放,并且因為是保存在本地,所以在回放的時候,不會消耗大量 內(nèi)存。請參閱圖3,本發(fā)明實施例中視頻文件播放方法的第三實施例,具體的301、接收用戶端發(fā)送的視頻文件下載請求消息;服務(wù)器接收用戶端發(fā)送的視頻文件下載請求消息,該視頻文件下載請求消息攜帶 播放時間。302、根據(jù)播放時間查找對應(yīng)的視頻文件;服務(wù)器根據(jù)接收的視頻文件下載請求消息攜帶的播放時間到存儲在服務(wù)器端預(yù) 先設(shè)置的視頻文件隊列中尋找與該播放時間對應(yīng)的視頻文件的二級索引區(qū)的I幀,并從該 I幀開始將視頻文件發(fā)送給用戶端,其中視頻文件隊列由多個同一時間軸上的視頻文件按 索引區(qū)的起始時間的先后順序組合而成,其中前一個視頻文件的索引區(qū)的下一個文件地址 為下一個視頻文件的索引區(qū)的起始地址;具體的先判斷播放時間是否小于第一個視頻文件的索引區(qū)的結(jié)束時間;如果不小于,則 根據(jù)第一個視頻文件索引區(qū)的下一個文件地址找到下一個視頻文件索引區(qū),并判斷播放時 間是否小于下一個視頻文件索引區(qū)的結(jié)束時間;依次循環(huán),直至找到播放時間小于索引區(qū) 的結(jié)束時間的視頻文件;再比較播放時間與播放時間小于索引區(qū)的結(jié)束時間的視頻文件的二級索引區(qū)的 第一個I幀的起始時間的大小;如果播放時間大于該I幀的起始時間,則再判斷播放時間是 否小于等于下一個I幀的起始時間;依次循環(huán),直至找到該播放時間小于等于I幀的起始時 間的I幀。303、發(fā)送視頻文件給用戶端;在步驟302中,如果找到視頻文件的I幀,若播放時間等于I幀的起始時間,則從 該I幀開始向用戶端發(fā)送視頻文件;若播放時間小于I幀的起始時間,則從該I幀的前一個 I幀開始向用戶端發(fā)送視頻文件;在一個視頻文件發(fā)送完畢后,如果還沒有到達視頻文件隊列的末尾,或者還沒有
11到達用戶端發(fā)送的停止時間,則根據(jù)該視頻文件的索引區(qū)的下一個文件地址找到下一個視 頻文件,從下一個視頻文件的第一個I幀開始,將該下一個視頻文件發(fā)送給用戶端。在本實施例中,通過在服務(wù)器端將同一時間軸上的多個視頻文件前后拼接成一個 視頻文件隊列,用戶端在下載視頻文件時可以分別下載便可播放,而不需要將同一時間軸 上的所有視頻文件都下載才能播放;并且服務(wù)器端都是從I幀開始將視頻文件發(fā)送給用戶 端進行播放,使得用戶端在播放時不會出現(xiàn)不完整的圖像。請參閱圖4至圖7,一下是本發(fā)明實施例中的一個應(yīng)用例在服務(wù)器上的每個視頻文件的存儲格式如圖4所示,包括索引區(qū)和數(shù)據(jù)區(qū),索引 區(qū)包括起始地址、文件長度、起始時間、結(jié)束時間、文件信息、下一個文件地址和二級索引區(qū) 等等,二級索引區(qū)如圖5所示,二級索引區(qū)存放各個I幀的信息,各個I幀信息的存儲格式 如圖6所示,存有各個I幀的起始時間,和各個I幀的地址以及私有信息,例如報警信息;例如服務(wù)器上有4個視頻文件,第一個視頻文件A的一級索引區(qū)的數(shù)據(jù)起始地址 為0,文件長度為3,起始時間為2010年9月1日,12:00:00,結(jié)束時間為2010年9月1日, 15:00:00,下一個文件的地址為3 ;第二個視頻文件B的一級索引區(qū)的數(shù)據(jù)起始地址為3,文件長度為5,起始時間為 2010年9月1日,22:00:00,結(jié)束時間為2010年9月2日,03 00 00,下一個文件的地址為 8 ;第三個視頻文件C的一級索引區(qū)的數(shù)據(jù)起始地址為8,文件長度為4,起始時間為 2010年9月2日,10:00:00,結(jié)束時間為2010年9月2日,14:00:00,下一個文件的地址為 12 ;第四個視頻文件D的一級索引區(qū)的數(shù)據(jù)起始地址為12,文件長度為3,起始時間 為2010年9月2日,17:00:00,結(jié)束時間為2010年9月2日,20 00 00,下一個文件的地址 為15;用戶在終端輸入起始時間和結(jié)束時間,便可以非常方便地查看保存于遠(yuǎn)程服務(wù)器 上的視頻文件的數(shù)據(jù)信息;具體的第一步,服務(wù)器將輸入的結(jié)束時間與第一個視頻文件的起始時間比較,如果第一 個視頻文件的起始時間大于輸入的結(jié)束時間,說明遠(yuǎn)程服務(wù)器中沒有符合要求的視頻文 件,搜索失??;第二步,如果視頻文件A的起始時間小于輸入的結(jié)束時間,則將視頻文件A的結(jié)束 時間與輸入的起始時間比較,如果輸入的起始時間大于視頻文件A的結(jié)束時間,則將視頻 文件B的結(jié)束時間與輸入的起始時間比較,依次循環(huán),直至輸入的起始時間小于本地存儲 的視頻文件的結(jié)束時間;第三步,再從搜索到的結(jié)束時間大于輸入的起始時間的視頻文件開始,將輸入的 結(jié)束時間與該視頻文件的結(jié)束時間比較,直至輸入的結(jié)束時間小于或者等于視頻文件的結(jié) 束時間;如果在第二步,沒有搜索到輸入的時間小于結(jié)束時間的存儲在本地的視頻文件, 則搜索失敗;通過上述搜索方法,如果用戶輸入的起始時間為2010年9月2日00:00:00,結(jié)束 時間為2010年9月3日00:00:00,終端將起始時間和結(jié)束時間發(fā)送到遠(yuǎn)程服務(wù)器后,將符合條件的視頻文件的數(shù)據(jù)信息在終端顯示給用戶,如圖7陰影部分所示,搜索結(jié)果為2010 年 9 月 2 日的 00:00:00 至 03:00:00 文件,10:00:00 至 14:00:00 文件以及 17:00:00 至 20:00:00 文件。用戶在時間軸上進行第一次Seek操作,如果Seek的播放時間為2010年9月1日, 22:00:00,計算播放時間具體的用戶端獲取用戶在播放進度條上搜索(Seek)的位置,然 后計算Seek的位置占播放進度條總長度的比例,再將該比例與播放總時間相乘得到的值 加上視頻文件A的起始時間,得到播放時間;或者也可以是由用戶直接輸入的播放時間;用戶向服務(wù)器發(fā)送視頻文件下載請求消息,該消息攜帶播放時間;服務(wù)器接收視頻文件下載請求消息,根據(jù)該消息攜帶的播放時間查找對應(yīng)的視頻 文件,具體的服務(wù)器存儲有同一時間軸的多個視頻文件,并將多個視頻文件根據(jù)起始時間的先 后順序前后拼接成一個視頻文件隊列,前一個視頻文件的索引區(qū)的下一個文件地址為下一 個視頻文件的索引區(qū)的起始地址,視頻文件隊列的順序是視頻文件A—視頻文件B—視頻 文件C—視頻文件D ;播放時間為2010年9月1日,22:00:00,視頻文件A的索引區(qū)的結(jié)束時間為2010 年9月1日,15:00:00,播放時間大于視頻文件A的索引區(qū)的結(jié)束時間,則根據(jù)視頻文件A 索引區(qū)的下一個文件地址找到下一個視頻文件索引區(qū),即視頻文件B的索引區(qū),視頻文件B 的索引區(qū)的結(jié)束時間為2010年9月2日,03 00 00,播放時間小于視頻文件B的索引區(qū)的 結(jié)束時間,再比較播放時間和視頻文件B的索引區(qū)的第一個I幀的起始時間的大小,視頻文 件B的索引區(qū)的第一個I幀的起始時間為2010年9月1日,22:00:00,與播放時間相等,說 明找到了播放時間對應(yīng)的I幀;服務(wù)器從查找到的I幀開始發(fā)送視頻文件給用戶端;用戶端接收視頻文件,播放該視頻文件并將視頻文件保存到本地硬盤,在播放到 2010年9月2日,03:00:00時間點時,用戶做了停止播放的操作,這時,用戶端發(fā)送停止時 間給服務(wù)器端,服務(wù)器停止發(fā)送視頻文件;服務(wù)器給該視頻文件,即視頻文件B添加索引 區(qū)起始地址為0,文件長度為5,起始時間為2010年9月1日,22:00:00,結(jié)束時間為2010 年9月2日,03:00:00,下一個文件的地址為5 ;用戶在時間軸上進行第二次Seek操作,如果Seek的播放時間為2010年9月1日, 12:00:00 ;用戶端判斷本地是否有播放時間對應(yīng)的視頻文件,具體的從本地視頻文件隊列中的第一個視頻文件,即視頻文件B開始,將播放時間與視 頻文件的索引區(qū)的結(jié)束時間進行比較,如果播放時間大于視頻文件的索引區(qū)的結(jié)束時間, 則根據(jù)該視頻文件的索引區(qū)的下一個文件地址找到下一個視頻文件,將播放時間與下一個 視頻文件的索引區(qū)的結(jié)束時間進行比較,如此循環(huán),直至比較到最后一個視頻文件,因為本 地只有視頻文件B,視頻文件B的索引區(qū)的結(jié)束時間為2010年9月2日,03:00:00,播放時 間為2010年9月1日,12:00:00,播放時間大于視頻文件B的索引區(qū)的結(jié)束時間,所以本地 視頻文件隊列中沒有播放時間對應(yīng)的視頻文件,需要到服務(wù)器下載;用戶向服務(wù)器發(fā)送視頻文件下載請求消息,該消息攜帶播放時間;服務(wù)器接收視頻文件下載請求消息,根據(jù)該消息攜帶的播放時間查找對應(yīng)的視頻文件,具體的播放時間為2010年9月1日,12:00:00,視頻文件B的索引區(qū)的結(jié)束時間為2010 年9月2日,03:00:00,播放時間小于視頻文件B的索引區(qū)的結(jié)束時間,再比較播放時間和 視頻文件B的索引區(qū)的第一個I幀的起始時間的大小,視頻文件B的索引區(qū)的第一個I幀 的起始時間為2010年9月1日,12:00:00,與播放時間相等,說明找到了播放時間對應(yīng)的I 幀;服務(wù)器從查找到的I幀開始發(fā)送視頻文件給用戶端;用戶端接收視頻文件,用戶端接收第一個I幀時,根據(jù)該I幀的起始時間迅速定 到該I幀應(yīng)該插入本地視頻文件隊列中的位置,具體的,將該I幀的起始時間與視頻文件 隊列中第一個視頻文件的起始時間比較,如果I幀的起始時間大于第一個視頻文件的起始 時間,則根據(jù)第一個視頻文件的索引區(qū)的下一個視頻文件找到第二個視頻文件,再比較該I 幀的起始時間和第二個視頻文件的起始時間,依次循環(huán),直至查找到起始時間大于該I幀 的視頻文件;接收到第二個以后的I幀時,將I幀的起始時間與查找到的視頻文件的起始時 間比較,如果該I幀的起始時間等于查找到的視頻文件的起始時間時,用戶端發(fā)送停止下 載的消息給服務(wù)器,服務(wù)器停止發(fā)送視頻文件給用戶端;在本應(yīng)用例中,第二次Seek操作 接收的第一個I幀定位在視頻文件B之前;用戶端播放該視頻文件并將視頻文件保存到本地硬盤,在播放到2010年9月1 日,14:00:00時間點時,用戶做了停止播放的操作,這時,用戶端發(fā)送停止時間給服務(wù)器端, 服務(wù)器停止發(fā)送視頻文件;服務(wù)器給該視頻文件Al添加索引區(qū),具體的起始地址為5,文 件長度為2,起始時間為2010年9月1日,12:00:00,結(jié)束時間為2010年9月1日,14:00:00, 下一個文件的地址為7 ;再根據(jù)視頻文件索引區(qū)的起始時間將下載的視頻文件插入到本地的視頻文件隊 列中,因為接收的視頻文件的第一個I幀已經(jīng)定位好了,直接將接收的視頻文件插到視頻 文件B的前面,具體的將接收的視頻文件的索引區(qū)的下一個文件地址改成視頻文件B的索引區(qū)的起始 地址;用戶在時間軸上進行第三次Seek操作,如果Seek的播放時間為2010年9月1日, 14:30:00 ;用戶端判斷本地是否有播放時間對應(yīng)的視頻文件,具體的從本地視頻文件隊列中的第一個視頻文件開始,將播放時間與視頻文件的索引區(qū) 的結(jié)束時間進行比較,如果播放時間大于視頻文件的索引區(qū)的結(jié)束時間,則根據(jù)該視頻文 件的索引區(qū)的下一個文件地址找到下一個視頻文件,將播放時間與下一個視頻文件的索引 區(qū)的結(jié)束時間進行比較,如此循環(huán),直至比較到最后一個視頻文件;視頻文件Al的索引區(qū) 的結(jié)束時間為2010年9月1日,14:00:00,播放時間為2010年9月1日,14:30:00,播放時 間大于視頻文件Al的索引區(qū)的結(jié)束時間,在根據(jù)視頻文件Al的索引區(qū)的下一個文件地址 找到視頻文件B,再比較播放時間和視頻文件B的索引區(qū)的結(jié)束時間,視頻文件B的索引區(qū) 的結(jié)束時間為2010年9月2日,03:00:00,大于播放時間,再從視頻文件B的第一個I幀開 始,比較播放時間和I幀的起始時間,視頻文件B的第一個I幀的起始時間為2010年9月 1日,22 00 00,大于播放時間,說明本地視頻文件隊列中沒有播放時間對應(yīng)的視頻文件,需要到服務(wù)器下載;用戶向服務(wù)器發(fā)送視頻文件下載請求消息,該消息攜帶播放時間;服務(wù)器接收視頻文件下載請求消息,根據(jù)該消息攜帶的播放時間查找對應(yīng)的視頻 文件,具體的播放時間為2010年9月1日,14:30:00,視頻文件隊列中第一個視頻文件,即視頻 文件A的索引區(qū)的結(jié)束時間為2010年9月1日,15:00:00,播放時間小于第一個視頻文件 的索引區(qū)的結(jié)束時間,再將視頻文件A的第一個I幀的起始時間與播放時間比較,視頻文件 A的第一個I幀的起始時間為2010年9月1日,12:00:00,小于播放時間,再將第二個I幀 的起始時間與播放時間比較,依次循環(huán),直至找到起始時間大于等于播放時間的I幀,如果 I幀的起始時間與播放時間相等,從該I幀開始發(fā)送視頻文件給用戶端;如果I幀的起始時 間大于播放時間,則從該I幀的上一個I幀開始發(fā)送視頻文件給用戶端;用戶端接收視頻文件,接收第一個I幀時,根據(jù)該I幀的起始時間迅速定到該I幀 應(yīng)該插入本地視頻文件隊列中的位置,在本應(yīng)用例中,第三次Seek操作接收的第一個I幀 定位在視頻文件B和視頻文件Al之間;用戶端播放該視頻文件并將視頻文件保存到本地硬盤,在播放到2010年9月1 日,14:45:00時間點時,用戶做了停止播放的操作,這時,用戶端發(fā)送停止時間給服務(wù)器端, 服務(wù)器停止發(fā)送視頻文件;服務(wù)器給該視頻文件A2添加索引區(qū),具體的起始地址為7, 文件長度為0.25,起始時間為2010年9月1日,14:30:00,結(jié)束時間為2010年9月1日, 14:45:00,下一個文件的地址為7. 25 ;再根據(jù)視頻文件索引區(qū)的起始時間將下載的視頻文件A2插入到本地的視頻文件 隊列中,因為接收的視頻文件的第一個I幀已經(jīng)定位好了,直接將接收的視頻文件插到視 頻文件Al之后,視頻文件B之前,具體的將視頻文件A2的下一個文件地址改為視頻文件Al的下一個文件地址,即視頻文 件B的起始地址,再將視頻文件Al的下一個文件地址改為視頻文件A2的起始地址;所以, 視頻文件隊列的播放順序為A1 — A2 — B ;用戶在時間軸上進行第四次Seek操作,如果Seek的播放時間為2010年9月1日, 14:50:00 ;方法同第一至第三次Seek操作,此處不贅述;當(dāng)接收的I幀的起始時間為2010年9月1日,22 00 00時,該I幀的起始時間與
視頻文件B的起始時間相同,說明從該I幀開始的視頻文科用戶端本地已經(jīng)有了,只需要從 本地硬盤獲取數(shù)據(jù)播放即可,不需要從服務(wù)器下載,所以用戶端發(fā)送停止下載的消息給服 務(wù)器,服務(wù)器停止發(fā)送視頻文件給用戶端;當(dāng)用戶端播放到起始時間為2010年9月2日,03:00:00的I幀時,發(fā)現(xiàn)視頻文件 B的索引區(qū)的下一個文件地址沒有視頻文件,說明需要從服務(wù)器端下載視頻文件,所以用 戶端發(fā)送視頻文件下載請求消息,該消息攜帶播放時間,此處即最后一個I幀的起始時間 2010年9月2日,03:00:00 ;服務(wù)器從起始時間為2010年9月2日,030000的I幀開始 向用戶端發(fā)送視頻文件,用戶端接收該I幀后,將該I幀定位,然后接收后續(xù)的I幀;對于本 地已經(jīng)有的I幀,用戶端可以選擇丟棄或者保留,此處不做限制。在本實施例中,用戶端從服務(wù)器下載視頻文件,將該視頻文件添加索引區(qū),該索引
15區(qū)包括起始地址、下一個文件地址、起始時間,再根據(jù)該視頻文件索引區(qū)的起始時間將該視 頻文件插入到本地的視頻文件隊列中,使得該視頻文件的上一個視頻文件的索引區(qū)的下一 個文件地址為該視頻文件的索引區(qū)的起始地址,并且該視頻文件的索引區(qū)的下一個文件地 址為該視頻文件的下一個視頻文件的索引區(qū)的起始地址,其中視頻文件隊列為由多個視頻 文件根據(jù)索引區(qū)的起始時間的先后順序前后拼接而成的大視頻文件;然后播放接收的視頻 文件;這樣在同一時間軸上,不同的視頻文件就能夠不分先后連續(xù)下載,能夠?qū)⒉贿B續(xù)存儲 的視頻文件按照時間順序播放,并且因為是保存在本地,所以在回放的時候,不會消耗大量 內(nèi)存;并且,通過用戶端發(fā)送起始時間和結(jié)束時間到服務(wù)器,服務(wù)器查找起始時間和結(jié)束時 間之間的所有視頻文件的數(shù)據(jù)信息,并將該數(shù)據(jù)信息發(fā)送到用戶端,用戶端快速在時間軸 上顯示,用戶可以非常方便地查看保存于遠(yuǎn)程服務(wù)器上的視頻文件的數(shù)據(jù)信息。請參閱圖8a、圖8b,本發(fā)明實施例中用戶端設(shè)備的第五實施例,具體的下載模塊801,用于從服務(wù)器下載視頻文件;索引區(qū)添加模塊802,用于將存儲模塊存儲的視頻文件添加索引區(qū),其中索引區(qū)包 括視頻文件的起始地址、下一個文件地址、起始時間;視頻文件隊列管理模塊803,用于根據(jù)視頻文件索引區(qū)的起始時間將該視頻文件 插入到本地的視頻文件隊列中,視頻文件的上一個視頻文件的索引區(qū)的下一個文件地址為 該視頻文件的索引區(qū)的起始地址,視頻文件的索引區(qū)的下一個文件地址為該視頻文件的下 一個視頻文件的索引區(qū)的起始地址,其中視頻文件隊列為一個大視頻文件,根據(jù)多個視頻 文件的索引區(qū)的起始時間的先后順序前后拼接而成;播放模塊804,用于播放視頻文件隊列管理模塊插入視頻文件隊列的視頻文件。進一步的,請參閱圖8b,下載模塊801b,下載模塊801包括第一獲取單元801a,用于獲取用戶輸入的播放時間;具體的,第一獲取單元801a 包括獲取單元,用于獲取用戶在播放進度條上搜索的位置;播放時間計算單元,用于計算 獲取單元獲取的搜索的位置占播放進度條總長度的比例,再將該比例與播放總時間相乘得 到的值加上第一個視頻文件的起始時間,得到播放時間;判斷單元801b,用于判斷本地是否有與獲取模塊獲取的播放時間對應(yīng)的視頻文 件;發(fā)送單元801c,用于當(dāng)判斷單元判斷出本地沒有與獲取模塊獲取的播放時間對應(yīng) 的視頻文件時,則發(fā)送視頻文件下載請求消息給服務(wù)器,其中視頻文件下載請求消息攜帶 播放時間;第二獲取模塊801d,用于當(dāng)判斷單元判斷出本地有獲取模塊獲取的播放時間對應(yīng) 的視頻文件時,獲取該視頻文件;具體的,第二獲取模塊801d包括第一查找單元,用于從視頻文件隊列中的第一個視頻文件開始,判斷播放時間是 否小于等于視頻文件隊列的各個視頻文件的索引區(qū)的起始時間,直至查找到播放時間小于 等于索引區(qū)的起始時間的視頻文件;第二查找單元,用于當(dāng)?shù)谝徊檎覇卧檎业讲シ艜r間小于索引區(qū)的起始時間的視 頻文件時,從該視頻文件的第一個I幀開始,判斷播放時間是否小于等于各個I幀的起始時 間,直至查找到播放時間小于等I幀的起始時間的I幀;發(fā)送單元,用于當(dāng)?shù)谝徊檎覇卧檎业讲シ艜r間等于索引區(qū)的起始時間的視頻文件時,則將該視頻文件的二級索引區(qū)的第一個I幀開始發(fā)送給播放模塊進行播放;當(dāng)?shù)诙?查找單元查找到播放時間等于I幀的起始時間的I幀時,則將該I幀開始發(fā)送給播放模塊 進行播放;當(dāng)?shù)诙檎覇卧檎业讲シ艜r間小于I幀的起始時間的I幀,則從該I幀的前一 個I幀開始發(fā)送給播放模塊進行播放;接收單元801e,用于接收服務(wù)器發(fā)送的視頻文件。在本實施例中,用戶端從服務(wù)器下載視頻文件,將該視頻文件添加索引區(qū),該索引 區(qū)包括起始地址、下一個文件地址、起始時間,再根據(jù)該視頻文件索引區(qū)的起始時間將該視 頻文件插入到本地的視頻文件隊列中,使得該視頻文件的上一個視頻文件的索引區(qū)的下一 個文件地址為該視頻文件的索引區(qū)的起始地址,并且該視頻文件的索引區(qū)的下一個文件地 址為該視頻文件的下一個視頻文件的索引區(qū)的起始地址,其中視頻文件隊列為由多個視頻 文件根據(jù)索引區(qū)的起始時間的先后順序前后拼接而成的大視頻文件;然后播放接收的視頻 文件;這樣在同一時間軸上,不同的視頻文件就能夠不分先后連續(xù)下載,能夠?qū)⒉贿B續(xù)存儲 的視頻文件按照時間順序播放,并且因為是保存在本地,所以在回放的時候,不會消耗大量 內(nèi)存。請參閱圖9a、圖%,本發(fā)明實施例中用戶端設(shè)備的第六實施例,具體的接收模塊901,用于接收用戶端發(fā)送的視頻文件下載請求消息,該視頻文件下載請 求消息攜帶播放時間;查找模塊902,用于根據(jù)接收模塊接收的播放時間查找對應(yīng)的視頻文件;發(fā)送模塊903,用于將查找模塊查找到的視頻文件發(fā)送給用戶端,并在該視頻文件 發(fā)送完后,根據(jù)該視頻文件索引區(qū)的下一個文件地址查找到下一個視頻文件的起始地址, 并將下一個視頻文件發(fā)送給用戶端,直到視頻文件隊列中的最后一個視頻文件,或者停止 時間對應(yīng)的視頻文件,其中停止時間由用戶端發(fā)送;視頻文件隊列為一個大視頻文件,根據(jù) 多個視頻文件的索引區(qū)的起始時間的先后順序前后拼接而成,前一個視頻文件索引區(qū)的下 一個文件地址為后一個視頻文件索引區(qū)的起始地址。如圖%,進一步的,查找模塊902包括第一查找單元902a,用于從視頻文件隊列中的第一個視頻文件開始,判斷播放時 間是否小于等于該視頻文件隊列的各個視頻文件的索引區(qū)的起始時間,直至查找到播放時 間小于等于索引區(qū)的起始時間的視頻文件;第二查找單元902b,用于當(dāng)?shù)谝徊檎覇卧檎业讲シ艜r間小于索引區(qū)的起始時間 的視頻文件時,從該視頻文件的第一個I幀開始,判斷播放時間是否小于等于各個I幀的起 始時間,直至查找到播放時間小于等于I幀的起始時間的I幀;發(fā)送單元902c,用于當(dāng)?shù)谝徊檎覇卧檎业讲シ艜r間等于索引區(qū)的起始時間的視 頻文件時,則將該視頻文件的二級索引區(qū)的第一個I幀開始發(fā)送給用戶端;當(dāng)?shù)诙檎覇?元查找到播放時間等于I幀的起始時間的I幀時,則將該I幀開始發(fā)送給用戶端;當(dāng)?shù)诙?找單元查找到播放時間小于I幀的起始時間的I幀,則將該I幀的前一個I幀開始發(fā)送給
用戶端。在本實施例中,通過在服務(wù)器端將同一時間軸上的多個視頻文件前后拼接成一個 視頻文件隊列,用戶端在下載視頻文件時可以分別下載便可播放,而不需要將同一時間軸 上的所有視頻文件都下載才能播放;并且服務(wù)器端都是從I幀開始將視頻文件發(fā)送給用戶端進行播放,使得用戶端在播放時不會出現(xiàn)不完整的圖像。請參閱圖10,本實施例中視頻文件播放系統(tǒng)的第七實施例,該視頻文件播放系統(tǒng) 可以包括用戶端設(shè)備1001和服務(wù)器設(shè)備1002。該用戶端設(shè)備1001可以為上述用戶端設(shè)備 實施例中描述的用戶端設(shè)備,該服務(wù)器設(shè)備1002可以為上述服務(wù)器設(shè)備實施例中描述的 服務(wù)器設(shè)備。由于前述實施例已經(jīng)進行了詳細(xì)描述,此處不贅。本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可 以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機可讀存儲介質(zhì)中,存 儲介質(zhì)可以包括只讀存儲器(ROM,Read Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁盤或光盤等。以上對本發(fā)明實施例所提供的一種視頻文件播放方法以及系統(tǒng)、用戶端設(shè)備和服 務(wù)器設(shè)備進行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡 述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的 一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所 述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種視頻文件播放方法,其特征在于,包括 用戶端從服務(wù)器下載視頻文件;將所述視頻文件添加索引區(qū),所述索引區(qū)包括所述視頻文件的起始地址、下一個文件 地址、起始時間;根據(jù)所述視頻文件索引區(qū)的起始時間將所述視頻文件插入到本地的視頻文件隊列中, 所述視頻文件的上一個視頻文件的索引區(qū)的下一個文件地址為所述視頻文件的索引區(qū)的 起始地址,所述視頻文件的索引區(qū)的下一個文件地址為所述視頻文件的下一個視頻文件的 索引區(qū)的起始地址,所述視頻文件隊列為由多個視頻文件根據(jù)索引區(qū)的起始時間的先后順 序前后拼接而成的大視頻文件; 播放所述視頻文件。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述從服務(wù)器下載視頻文件的步驟包括 用戶端獲取用戶輸入的播放時間;判斷本地是否有與所述播放時間對應(yīng)的視頻文件;如果沒有,則發(fā)送視頻文件下載請求消息給服務(wù)器,所述視頻文件下載請求消息攜帶 所述播放時間;接收服務(wù)器發(fā)送的視頻文件。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述判斷本地是否有與所述播放時間對 應(yīng)的視頻文件的步驟之后還包括如果有,則根據(jù)所述播放時間獲取并播放對應(yīng)的視頻文件,具體的 判斷所述播放時間是否小于等于所述視頻文件隊列中第一個視頻文件的索引區(qū)的結(jié) 束時間;如果大于,則根據(jù)第一個視頻文件的索引區(qū)的下一個文件地址找到下一個視頻文件, 并判斷所述播放時間是否小于等于所述下一個視頻文件的索引區(qū)的結(jié)束時間; 依次循環(huán),直至找到所述播放時間小于等于索引區(qū)的結(jié)束時間的視頻文件; 如果查找到所述播放時間等于索引區(qū)的結(jié)束時間的視頻文件,則從所述視頻文件的二 級索引區(qū)的第一個幀內(nèi)編碼幀開始播放;如果查找到所述播放時間小于索引區(qū)的結(jié)束時間的視頻文件,再比較所述播放時間與 所述視頻文件的二級索引區(qū)的第一個幀內(nèi)編碼幀的起始時間的大?。蝗绻霾シ艜r間大于所述幀內(nèi)編碼幀的起始時間,則再判斷所述播放時間是否小于 等于下一個幀內(nèi)編碼幀的起始時間;依次循環(huán),直至找到所述播放時間小于等于幀內(nèi)編碼幀的起始時間的幀內(nèi)編碼幀,如 果所述播放時間等于所述幀內(nèi)編碼幀的起始時間,則從所述幀內(nèi)編碼幀開始播放;如果所 述播放時間小于所述幀內(nèi)編碼幀的起始時間,則從所述幀內(nèi)編碼幀的前一個幀內(nèi)編碼幀開 始播放。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述接收服務(wù)器發(fā)送的視頻文件的步驟 包括當(dāng)接收第一個幀內(nèi)編碼幀時,根據(jù)所述幀內(nèi)編碼幀的起始時間定位所述幀內(nèi)編碼幀在 所述視頻文件隊列中的位置;當(dāng)接收第二個以后的幀內(nèi)編碼幀時,根據(jù)所述幀內(nèi)編碼幀的起始時間判斷所述視頻文件隊列中是否已經(jīng)存在所述幀內(nèi)編碼幀;如果所述視頻文件隊列中已經(jīng)存在所述幀內(nèi)編碼幀,則發(fā)送停止下載的消息給服務(wù)ο
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述方法還包括當(dāng)播放到某個視頻文件的最后一個幀內(nèi)編碼幀時,若根據(jù)所述視頻文件的索引區(qū)的下 一個文件地址查找到的物理地址沒有視頻文件時,向服務(wù)器發(fā)送視頻文件下載請求消息, 所述視頻文件下載請求消息攜帶播放時間,所述播放時間等于所述最后一個幀內(nèi)編碼幀的 起始時間。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述用戶端獲取用戶輸入的播放時間的 步驟包括獲取用戶在播放進度條上搜索的位置,然后計算所述搜索的位置占播放進度條總長度 的比例,再將所述比例與播放總時間相乘得到的值加上第一個視頻文件的起始時間,得到 播放時間。
7.一種視頻文件播放方法,其特征在于,包括接收用戶端發(fā)送的視頻文件下載請求消息,所述視頻文件下載請求消息攜帶播放時間;根據(jù)所述播放時間查找對應(yīng)的視頻文件; 將所述視頻文件發(fā)送給用戶端;所述視頻文件發(fā)送完后,根據(jù)所述視頻文件索引區(qū)的下一個文件地址查找到下一個視 頻文件的起始地址,前一個視頻文件索引區(qū)的下一個文件地址為后一個視頻文件索引區(qū)的 起始地址,多個所述視頻文件前后拼接成一個大視頻文件,即視頻文件隊列;將所述下一個視頻文件發(fā)送給用戶端,直到所述視頻文件隊列中的最后一個視頻文 件,或者直到停止時間對應(yīng)的視頻文件,所述停止時間由用戶端發(fā)送。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述根據(jù)播放時間查找對應(yīng)的視頻文件 的步驟具體的判斷所述播放時間是否小于第一個視頻文件的索引區(qū)的結(jié)束時間; 如果不小于,則根據(jù)第一個視頻文件索引區(qū)的下一個文件地址找到下一個視頻文件索 引區(qū),并判斷所述播放時間是否小于所述下一個視頻文件索引區(qū)的結(jié)束時間; 依次循環(huán),直至找到所述播放時間小于索引區(qū)的結(jié)束時間的視頻文件; 再比較所述播放時間與所述播放時間小于索引區(qū)的結(jié)束時間的視頻文件的二級索引 區(qū)的第一個幀內(nèi)編碼幀的起始時間的大??;如果所述播放時間大于所述幀內(nèi)編碼幀的起始時間,則再判斷所述播放時間是否小于 等于下一個幀內(nèi)編碼幀的起始時間;依次循環(huán),直至找到所述播放時間小于等于幀內(nèi)編碼幀的起始時間的幀內(nèi)編碼幀,如 果所述播放時間等于所述幀內(nèi)編碼幀的起始時間,則從所述幀內(nèi)編碼幀開始向用戶端發(fā)送 視頻文件;如果所述播放時間小于所述幀內(nèi)編碼幀的起始時間,則從所述幀內(nèi)編碼幀的前 一個幀內(nèi)編碼幀開始向用戶端發(fā)送視頻文件。
9.一種用戶端設(shè)備,其特征在于,包括 下載模塊,用于從服務(wù)器下載視頻文件;索引區(qū)添加模塊,用于將存儲模塊存儲的視頻文件添加索引區(qū),所述索引區(qū)包括所述 視頻文件的起始地址、下一個文件地址、起始時間;視頻文件隊列管理模塊,用于根據(jù)所述視頻文件索引區(qū)的起始時間將所述視頻文件插 入到本地的視頻文件隊列中,所述視頻文件的上一個視頻文件的索引區(qū)的下一個文件地址 為所述視頻文件的索引區(qū)的起始地址,所述視頻文件的索引區(qū)的下一個文件地址為所述視 頻文件的下一個視頻文件的索引區(qū)的起始地址,所述視頻文件隊列為一個大視頻文件,根 據(jù)多個視頻文件的索引區(qū)的起始時間的先后順序前后拼接而成;播放模塊,用于播放視頻文件隊列管理模塊插入視頻文件隊列的視頻文件。
10.根據(jù)權(quán)利要求9所述的設(shè)備,其特征在于,所述下載模塊包括 第一獲取單元,用于獲取用戶輸入的播放時間;判斷單元,用于判斷本地是否有與獲取模塊獲取的播放時間對應(yīng)的視頻文件; 發(fā)送單元,用于當(dāng)判斷單元判斷出本地沒有與獲取模塊獲取的播放時間對應(yīng)的視頻文 件時,則發(fā)送視頻文件下載請求消息給服務(wù)器,所述視頻文件下載請求消息攜帶所述播放 時間;第二獲取模塊,用于當(dāng)判斷單元判斷出本地有獲取模塊獲取的播放時間對應(yīng)的視頻文 件時,獲取所述視頻文件;接收單元,用于接收服務(wù)器發(fā)送的視頻文件。
11.根據(jù)權(quán)利要求10所述的設(shè)備,其特征在于,包括 所述第一獲取單元包括獲取單元,用于獲取用戶在播放進度條上搜索的位置;播放時間計算單元,用于計算獲取單元獲取的搜索的位置占播放進度條總長度的比 例,再將所述比例與播放總時間相乘得到的值加上第一個視頻文件的起始時間,得到播放 時間;所述第二獲取單元包括第一查找單元,用于從所述視頻文件隊列中的第一個視頻文件開始,判斷所述播放時 間是否小于等于所述視頻文件隊列的各個視頻文件的索引區(qū)的起始時間,直至查找到所述 播放時間小于等于索引區(qū)的起始時間的視頻文件;第二查找單元,用于當(dāng)?shù)谝徊檎覇卧檎业剿霾シ艜r間小于索引區(qū)的起始時間的視 頻文件時,從所述視頻文件的第一個幀內(nèi)編碼幀開始,判斷所述播放時間是否小于等于各 個幀內(nèi)編碼幀的起始時間,直至查找到所述播放時間小于等于幀內(nèi)編碼幀的起始時間的幀 內(nèi)編碼幀;發(fā)送單元,用于當(dāng)?shù)谝徊檎覇卧檎业剿霾シ艜r間等于索引區(qū)的起始時間的視頻 文件時,則將所述視頻文件的二級索引區(qū)的第一個幀內(nèi)編碼幀開始發(fā)送給播放模塊進行播 放;當(dāng)?shù)诙檎覇卧檎业剿霾シ艜r間等于所述幀內(nèi)編碼幀的起始時間的幀內(nèi)編碼幀 時,則將所述幀內(nèi)編碼幀開始發(fā)送給播放模塊進行播放;當(dāng)?shù)诙檎覇卧檎业剿霾シ?時間小于所述幀內(nèi)編碼幀的起始時間的幀內(nèi)編碼幀,則從所述幀內(nèi)編碼幀的前一個幀內(nèi)編 碼幀開始發(fā)送給播放模塊進行播放。
12.一種服務(wù)器設(shè)備,其特征在于,包括接收模塊,用于接收用戶端發(fā)送的視頻文件下載請求消息,所述視頻文件下載請求消息攜帶播放時間;查找模塊,用于根據(jù)接收模塊接收的播放時間查找對應(yīng)的視頻文件;發(fā)送模塊,用于將查找模塊查找到的視頻文件發(fā)送給用戶端,并在所述視頻文件發(fā)送 完后,根據(jù)所述視頻文件索引區(qū)的下一個文件地址查找到下一個視頻文件的起始地址,并 將所述下一個視頻文件發(fā)送給用戶端,直到視頻文件隊列中的最后一個視頻文件,或者停 止時間對應(yīng)的視頻文件,所述停止時間由用戶端發(fā)送;所述視頻文件隊列為一個大視頻文 件,根據(jù)多個視頻文件的索引區(qū)的起始時間的先后順序前后拼接而成,前一個視頻文件索 引區(qū)的下一個文件地址為后一個視頻文件索引區(qū)的起始地址。
13.根據(jù)權(quán)利要求12所述的設(shè)備,其特征在于,所述查找模塊包括第一查找單元,用于從所述視頻文件隊列中的第一個視頻文件開始,判斷所述播放時 間是否小于等于所述視頻文件隊列的各個視頻文件的索引區(qū)的起始時間,直至查找到所述 播放時間小于等于索引區(qū)的起始時間的視頻文件;第二查找單元,用于當(dāng)?shù)谝徊檎覇卧檎业剿霾シ艜r間小于索引區(qū)的起始時間的視 頻文件時,從所述視頻文件的第一個幀內(nèi)編碼幀開始,判斷所述播放時間是否小于等于各 個幀內(nèi)編碼幀的起始時間,直至查找到所述播放時間小于等于幀內(nèi)編碼幀的起始時間的幀 內(nèi)編碼幀;發(fā)送單元,用于當(dāng)?shù)谝徊檎覇卧檎业剿霾シ艜r間等于索引區(qū)的起始時間的視頻文 件時,則將所述視頻文件的二級索引區(qū)的第一個幀內(nèi)編碼幀開始發(fā)送給用戶端;當(dāng)?shù)诙?找單元查找到所述播放時間等于所述幀內(nèi)編碼幀的起始時間的幀內(nèi)編碼幀時,則將所述幀 內(nèi)編碼幀開始發(fā)送給用戶端;當(dāng)?shù)诙檎覇卧檎业剿霾シ艜r間小于所述幀內(nèi)編碼幀的 起始時間的幀內(nèi)編碼幀,則從所述幀內(nèi)編碼幀的前一個幀內(nèi)編碼幀開始發(fā)送給用戶端。
14.一種視頻文件播放系統(tǒng),其特征在于,包括9至權(quán)11任一項權(quán)利要求所述的用戶端 設(shè)備,以及權(quán)12至權(quán)13任一項權(quán)利要求所述的服務(wù)器設(shè)備。
全文摘要
本發(fā)明公開了一種視頻文件播放方法,本發(fā)明實施例還提供相應(yīng)的系統(tǒng)以及用戶端和服務(wù)器設(shè)備。本發(fā)明技術(shù)方案通過用戶端從服務(wù)器下載視頻文件并添加索引區(qū),該索引區(qū)包括起始地址、下一個文件地址、起始時間;再將該視頻文件插入到本地的視頻文件隊列中,使得該視頻文件的上一個視頻文件的索引區(qū)的下一個文件地址為該視頻文件索引區(qū)的起始地址,并且該視頻文件索引區(qū)的下一個文件地址為該視頻文件的下一個視頻文件的索引區(qū)的起始地址,視頻文件隊列為由多個視頻文件根據(jù)索引區(qū)的起始時間的先后順序拼接成的大視頻文件;然后播放該視頻文件;解決了用戶端從遠(yuǎn)程服務(wù)器上下載視頻文件進行播放時,在同一時間軸上不同視頻文件不能夠連續(xù)下載的問題。
文檔編號H04N21/438GK102075792SQ20101060276
公開日2011年5月25日 申請日期2010年12月23日 優(yōu)先權(quán)日2010年12月23日
發(fā)明者李昭早 申請人:華為技術(shù)有限公司