日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

關鍵幀識別方法及裝置與流程

文檔序號:11235257閱讀:1367來源:國知局
關鍵幀識別方法及裝置與流程
本發(fā)明屬于終端
技術領域
,尤其涉及一種關鍵幀識別方法及裝置。
背景技術
:隨著網絡和終端技術的發(fā)展,各類網絡游戲、單機游戲的開發(fā)發(fā)展迅速。游戲中的畫面是由每個游戲實例的邏輯幀渲染而成,每一邏輯幀播放完以后需要查詢下一個邏輯幀。游戲中普遍存在一個邏輯幀往往占用了多個邏輯幀的時間片的情況,如果被占用時間片內有關鍵幀,則播放關鍵幀,因此如何查找關鍵幀成為游戲畫面顯示的一個關鍵問題?,F(xiàn)有技術中,通過窮舉來查找關鍵幀,即枚舉上一個播放的邏輯幀對應的時間到當前時間區(qū)間內所有的邏輯幀,判斷每一個邏輯幀是否為關鍵幀,如果遇到關鍵幀,則播放關鍵幀,枚舉結束,若未遇到關鍵幀,則播放當前時間對應的幀,此種技術的其線性的時間復雜度太高,往往不能滿足游戲中“每秒幾萬幀”的讀取需求,從而造成顯示畫面不流暢。技術實現(xiàn)要素:本發(fā)明提供一種關鍵幀識別方法及裝置,用以通過構建邏輯幀結構體數組的方式查找關鍵幀,降低查找的時間復雜度,提高畫面的流暢性。本發(fā)明提供的一種關鍵幀識別方法,包括:在每個邏輯幀播放結束后,確認所述播放結束的邏輯幀在已生成的邏輯幀的結構體數組中的第一位置,并根據所述第一位置確定下一個待播放的邏輯幀在所述結構體數組中的第二位置,所述結構體數組包括:按播放順序排列的邏輯幀和在每個邏輯幀之前累計出現(xiàn)過的關鍵幀的數目;判斷在所述結構體數組中,所述第一位置和所述第二位置分別對應的在當前邏輯幀之前累計出現(xiàn)過的關鍵幀的數目是否相同;若相同,則確認所述播放結束的邏輯幀與所述下一個待播放的邏輯幀之間無關鍵幀,并播放所述下一個待播放的邏輯幀;若不相同,則查找所述播放結束的邏輯幀與所述下一個待播放的邏輯幀之間的首個關鍵幀,并播放所述首個關鍵幀。本發(fā)明提供的一種關鍵幀識別裝置,包括:第一確認模塊,用于在每個邏輯幀播放結束后,確認所述播放結束的邏輯幀在已生成的邏輯幀的結構體數組中的第一位置,并根據所述第一位置確定下一個待播放的邏輯幀在所述結構體數組中的第二位置,所述結構體數組包括:按播放順序排列的邏輯幀和在每個邏輯幀之前累計出現(xiàn)過的關鍵幀的數目;判斷模塊,用于判斷在所述結構體數組中,所述第一位置和所述第二位置分別對應的在當前邏輯幀之前累計出現(xiàn)過的關鍵幀的數目是否相同;第二確認模塊,用于若所述第一位置和所述第二位置分別對應的在當前邏輯幀之前累計出現(xiàn)過的關鍵幀的數目相同,則確認所述播放結束的邏輯幀與所述下一個待播放的邏輯幀之間無關鍵幀;播放模塊,用于播放所述下一個待播放的邏輯幀;查找模塊,用于若所述第一位置和所述第二位置分別對應的在當前邏輯幀之前累計出現(xiàn)過的關鍵幀的數目不相同,則查找所述播放結束的邏輯幀與所述下一個待播放的邏輯幀之間的首個關鍵幀;所述播放模塊,還用于播放所述首個關鍵幀。從上述本發(fā)明實施例可知,本發(fā)明提供的關鍵幀識別方法及裝置,在每個邏輯幀播放結束后,通過在已生成的結構體數組中確認該播放結束的邏輯幀的第一位置和下一個待播放的邏輯幀的第二位置,并判斷第一位置和第二位置分別對應的在當前邏輯幀之前累計出現(xiàn)過的關鍵幀的數目是否相同,來判斷該播放結束的邏輯幀與該下一個待播放的邏輯幀之間是否存在關鍵幀,若無,則播放該下一個待播放的邏輯幀,若有,則查找該播放結束的邏輯幀與該下一個待播放的邏輯幀之間的首個關鍵幀,并播放該首個關鍵幀,可簡化判斷、查找關鍵幀的過程,提高查找關鍵幀的速度,降低查找的時間復雜度,較大程度上加快了計算時間,提高畫面播放的流暢度。附圖說明為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖1為本發(fā)明第一實施例提供的關鍵幀識別方法的流程示意圖;圖2為本發(fā)明第二實施例提供的關鍵幀識別方法的流程示意圖;圖3為本發(fā)明第三實施例提供的關鍵幀識別裝置的結構示意圖;圖4為本發(fā)明第四實施例提供的關鍵幀識別裝置的結構示意圖圖5為本發(fā)明中執(zhí)行關鍵幀識別方法的終端硬件結構圖。具體實施方式為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點能夠更加的明顯和易懂,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而非全部實施例?;诒景l(fā)明中的實施例,本領域技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。以下各本發(fā)明實施例的典型應用場景是在游戲運行時,在游戲畫面的每個邏輯幀播放結束后,該邏輯幀可能會因播放時間長而占用其他邏輯幀的播放時長,因此需要判斷在播放結束的邏輯幀和下一個待播放的邏輯幀之間是否存在關鍵幀,若無則直接播放該下一個待播放的邏輯幀,若有則查找并播放關鍵幀。具體技術方案的描述參見下述各實施例。請參見圖1,圖1為本發(fā)明第一實施例提供的關鍵幀識別方法的流程示意圖,該關鍵幀識別方法可應用在終端中,該終端包括pc機(personalcomputer),手機、平板電腦、智能游戲機等。該方法包括:s101、在每個邏輯幀播放結束后,確認該播放結束的邏輯幀在已生成的邏輯幀的結構體數組中的第一位置,并根據該第一位置確定下一個待播放的邏輯幀在該結構體數組中的第二位置;該結構體數組包括:按播放順序排列的邏輯幀(frameindex)和在每一邏輯幀之前累計出現(xiàn)過的關鍵幀的數目(numkeyframe)。具體地,若邏輯幀a、邏輯幀b、邏輯幀c、邏輯幀d、邏輯幀e按播放順序,其中邏輯幀b連續(xù)播放2次,則該結構體數組的具體格式如表1:表1frameindexabbcdenumkeyframe011111該結構體數組每一列對應一個數組元素,每個數組元素對應二元組(frameindex,numkeyframe)。為了查找方便,為數組元素設置數組元素索引(arrayindex),表示邏輯幀的播放順序以及邏輯幀的存儲位置。arrayindex與該結構體數組中的frameindex和numkeyframe的對應關系如表2:表2arrayindex012345frameindexabbcdenumkeyframe011111下面詳細描述該邏輯幀的結構體數組的結構,該結構體數組具體包括以下兩部分:邏輯幀(frameindex),又稱邏輯幀索引,各邏輯幀在結構體數組內按播放順序排列,與數組元素索引arrayindex指示的位置相對應,即,邏輯幀a、邏輯幀b、邏輯幀c、邏輯幀d、邏輯幀e按播放順序存儲在該結構體數組中,其中邏輯幀b重復播放一次,使用與第一次播放不同的另一個數組元素存儲,數組元素索引的值增加1。在每個邏輯幀之前累計出現(xiàn)過的關鍵幀的數目(numkeyframe),需要說明的是,當前邏輯幀若為關鍵幀,則當前邏輯幀對應的numkeyframe累計計數,即,將當前邏輯幀的numkeyframe的數目增加1。例如,表1中邏輯幀b為關鍵幀,之前無關鍵幀,則將邏輯幀b的numkeyframe記錄由0修改為1。當邏輯幀b再次重復播放,不重復計數關鍵幀,因此該結構體數組中邏輯幀b之后播放的各邏輯幀的numkeyframe均記錄為1。邏輯幀在結構體數組中的位置,是可以通過該邏輯幀自身保存的結構體數組的信息確定的,在各邏輯幀中存儲有其自身在結構體數組中的位置,該信息是在該結構體數組生成的同時記錄在各邏輯幀中的。例如,播放結束的邏輯幀為c,邏輯幀c中記錄的其在表2的結構體數組中對應的arrayindex為3,則確定邏輯幀c的第一位置為3。本發(fā)明實施例中,該播放結束的邏輯幀為f,邏輯幀f在已生成的邏輯幀的結構體數組中的第一位置用數組元素索引arrayindex1表示,下一個待播放的邏輯幀為f’,邏輯幀f’在該結構體數組中的第二位置用數組元素索引arrayindex2表示。具體地,根據arrayindex1、邏輯幀f與邏輯幀f’之間的播放時差、各邏輯幀的切片時長,共同確定arrayindex2。s102、判斷在該結構體數組中,該第一位置和該第二位置分別對應的在當前邏輯幀之前累計出現(xiàn)過的關鍵幀的數目是否相同;在該結構體數組中查找arrayindex1對應的numkeyframe,以及,查找arrayindex2對應的numkeyframe,判斷arrayindex1對應的numkeyframe和arrayindex2對應的numkeyframe是否相同。例如,具體如表1所示,若該第一位置為1,則在結構體數組中對應的numkeyframe為1,若該第二位置為4,則在結構體數組中對應的numkeyframe為1,判斷此兩個numkeyframe是否相同。若相同,則執(zhí)行步驟s103;若不相同,則執(zhí)行步驟s104。s103、確認該播放結束的邏輯幀與該下一個待播放的邏輯幀之間無關鍵幀,并播放該下一個待播放的邏輯幀;若arrayindex1對應的numkeyframe與arrayindex2對應的numkeyframe相同,則確認邏輯幀f與邏輯幀f’之間無關鍵幀,可全部跳過,直接播放邏輯幀f’。s104、查找該播放結束的邏輯幀與該下一個待播放的邏輯幀之間的首個關鍵幀,并播放該首個關鍵幀。若arrayindex1對應的numkeyframe與arrayindex2對應的numkeyframe不相同,則可通過預置算法查找邏輯幀f與邏輯幀f’之間的首個關鍵幀,并播放該首個關鍵幀。在一個實例中,參見表2,在結構體數組中播放結束的邏輯幀為b,邏輯幀b是第一次播放,其對應的第一位置為1,對應的numkeyframe為1,下一個待播放的邏輯幀d的第二位置為4,對應的numkeyframe為1,此兩個numkeyframe相同,因此,直接播放邏輯幀d。在另一個實例中,參見表2,在結構體數組中播放結束的邏輯幀為a,邏輯幀a對應的第一位置為0,對應的numkeyframe為0,下一個待播放的邏輯幀d的第二位置為4,對應的numkeyframe為1,此兩個numkeyframe不同,因此,查找邏輯幀a和邏輯幀d之間的首個關鍵幀,即,第一個numkeyframe與邏輯幀a不同的邏輯幀,便是首個關鍵幀。表2中,第一個numkeyframe與邏輯幀a不同的邏輯幀是b,即,邏輯幀b即為查找到的關鍵幀,播放邏輯幀b。本發(fā)明實施例中,在每個邏輯幀播放結束后,通過在已生成的結構體數組中確認該播放結束的邏輯幀的第一位置和下一個待播放的邏輯幀的第二位置,并判斷第一位置和第二位置分別對應的在當前邏輯幀之前累計出現(xiàn)過的關鍵幀的數目是否相同,來判斷該播放結束的邏輯幀與該下一個待播放的邏輯幀之間是否存在關鍵幀,若無,則播放該下一個待播放的邏輯幀,若有,則查找該播放結束的邏輯幀與該下一個待播放的邏輯幀之間的首個關鍵幀,并播放該首個關鍵幀,可簡化判斷、查找關鍵幀的過程,提高查找關鍵幀的速度,降低查找的時間復雜度,較大程度上加快了計算時間,提高畫面播放的流暢度。請參見圖2,圖2為本發(fā)明第二實施例提供的關鍵幀識別方法,可應用于終端中,該方法包括:s201、客戶端啟動加載初始網頁時,按照播放時間順序存儲待播放的邏輯幀,并記錄每個邏輯幀之前累計出現(xiàn)的關鍵幀數目,得到邏輯幀的結構體數組;該客戶端可以是游戲類客戶端,該客戶端啟動,游戲初始畫面開始加載并渲染后顯示在終端屏幕上。在客戶端啟動時載游戲畫面,同時生成該游戲畫面各邏輯幀的結構體數組。在該結構體數組中按照播放時間順序存儲待播放的邏輯幀,以及,記錄每個邏輯幀之前累計出現(xiàn)的關鍵幀數目。具體地,該結構體數組包括:按播放順序排列的邏輯幀和在每個邏輯幀之前累計出現(xiàn)過的關鍵幀的數目。該結構體數組每一列對應一個數組元素,每個數組元素對應二元組(frameindex,numkeyframe)。該結構體數組具體包括以下兩部分:邏輯幀(frameindex),又稱邏輯幀索引,各邏輯幀在表內按播放順序排列,與數組元素索引相對應,即,邏輯幀a、邏輯幀b、邏輯幀c、邏輯幀d、邏輯幀e按播放順序存儲在該結構體數組中,其中邏輯幀b重復播放一次,使用與第一次播放不同的數組元素存儲,數組元素索引值增加1;在每個邏輯幀之前累計出現(xiàn)過的關鍵幀的數目(numkeyframe),需要說明的是,當前邏輯幀若為關鍵幀,則執(zhí)行累計計數,將當前邏輯幀的numkeyframe的數目增加1。為數組元素設置數組元素索引(arrayindex),表示邏輯幀的播放順序以及邏輯幀的存儲位置。邏輯幀的結構體數組的具體結構與前述第一實施例的表1相同,arrayindex與frameindex、numkeyframe之間的對應關系與前述第一實施例的表2相同。進一步地,若同一邏輯幀重復播放多次,則在該結構體數組中,按照該重復播放的邏輯幀的播放順序,使用與邏輯幀播放次數相同數量的數組元素存儲該重復播放的邏輯幀,即,一個邏輯幀播放多少次,便對應按照播放順序使用多少個數組元素對重復播放的邏輯幀分別記錄。例如,在表2中,邏輯幀b播放2次,便按照播放順序,在arrayindex1和arrayindex2的兩個位置2次存儲邏輯幀b。s202、為各邏輯幀按照存儲位置生成數組元素索引,并在每個邏輯幀中記錄邏輯幀各自在該結構體數組中的位置;為存儲的邏輯幀按照存儲位置生成數組元素索引,可以迅速根據數組元素索引確定邏輯幀在該結構體數組中的位置,從而加快判斷、查找關鍵幀的速度。同時,在每個邏輯幀中記錄邏輯幀各自在結構體數組中的位置,通過查詢各邏輯幀可以獲知每個邏輯幀在該結構體數組中的存儲位置。進一步提高確認邏輯幀在該結構體數組中位置的便捷性。s203、在每個邏輯幀播放結束后,確認該播放結束的邏輯幀在已生成的該結構體數組中的第一位置,并根據該第一位置確定該下一個待播放的邏輯幀在該結構體數組中的第二位置;本發(fā)明實施例中,該播放結束的邏輯幀為f,邏輯幀f在已生成的邏輯幀的結構體數組中的第一位置用數組元素索引arrayindex1表示,下一個待播放的邏輯幀為f’,邏輯幀f’在該結構體數組中的第二位置用數組元素索引arrayindex2表示??赏ㄟ^查詢邏輯幀f記錄的信息,獲知arrayindex1。例如,在表2中,播放結束的邏輯幀為e,邏輯幀e在結構體數組中對應的arrayindex是4,邏輯幀e在結構體數組生成的同時也記錄自身在結構體數組中的位置,通過查詢邏輯幀e的記錄信息,可以確定邏輯幀e的位置為4。在每個邏輯幀播放結束后,arrayindex2可以是根據arrayindex1、邏輯幀f與邏輯幀f’之間的播放時差,以及,預設的各邏輯幀的時間切片長度共同確定。具體地,在邏輯幀f播放結束后,獲取邏輯幀f的開始播放時間t1、邏輯幀f’的開始播放時間t2、每個邏輯幀的平均時間切片長度l,其中邏輯幀f’的開始播放時間t2即為邏輯幀f的結束播放時間。在時間區(qū)間[t1,t2]之間可能占用了多個邏輯幀的時間切片,根據邏輯幀的平均時長切片長度,計算邏輯幀f’在該結構體數組中的第二位置。令該第一位置為arrayindex1,令該第二位置為arrayindex2,則:arrayindex2=arrayindex1+(t2-t1)/ls204、判斷在該結構體數組中,該第一位置和該第二位置分別對應的在當前邏輯幀之前累計出現(xiàn)過的關鍵幀的數目是否相同;在該結構體數組中查找arrayindex1對應的numkeyframe,以及,查找arrayindex2對應的numkeyframe,判斷查找的arrayindex1對應的numkeyframe和arrayindex2對應的numkeyframe是否相同。若相同,則執(zhí)行步驟s205;若不相同,則執(zhí)行步驟s206。s205、確認該播放結束的邏輯幀與該下一個待播放的邏輯幀之間無關鍵幀,并播放該下一個待播放的邏輯幀;若arrayindex1對應的numkeyframe與arrayindex2對應的numkeyframe相同,則確認邏輯幀f與邏輯幀f’之間無關鍵幀,可全部跳過,直接播放邏輯幀f’。如果關鍵幀出現(xiàn)的概率是p,則通過對比在當前邏輯幀之前累計出現(xiàn)過的關鍵幀的數目,確認該播放結束的邏輯幀與該下一個待播放的邏輯幀之間無關鍵幀,可全部跳過,直接播放該下一個待播放的邏輯幀,可以降低時間復雜度,降低后的時間復雜度為非關鍵幀的概率(1-p)乘以查詢時間o(1),即,o(1-p)。s206、查找該播放結束的邏輯幀與該下一個待播放的邏輯幀之間的首個關鍵幀,并播放該首個關鍵幀。若arrayindex1對應的numkeyframe與arrayindex2對應的numkeyframe不相同,則通過二分查找算法,查找邏輯幀f與邏輯幀f’之間的首個numkeyframe發(fā)生變化的位置。即查找arrayindex最小的數組元素對應的邏輯幀,并且滿足該邏輯幀在該結構體數組中numkeyframe的值為(f.numkeyframe+1),其中,f.numkeyframe為在結構體數組中arrayindex1對應的位置記錄的累計到邏輯幀f的關鍵幀的數目。其中,二分查找算法又稱折半查找算法,適用于不經常變動而查找頻繁的有序列表,該二分查找算法是在有重復元素的數組中,查找目標元素首次出現(xiàn)的位置,優(yōu)點是比較次數少,查找速度快,平均性能好。具體地,在本實施例中,將該結構體數組兩個位置arrayindex1和arrayindex2分別對應的numkeyframe值相比較,若相同,則說明arrayindex1和arrayindex2之間沒有關鍵幀,直接播放arrayindex2處的邏輯幀即可;若不同,則說明arrayindex1和arrayindex2之間有關鍵幀,此時需要二分查找arrayindex1和arrayindex2之間首次出現(xiàn)關鍵幀的位置,即查找arrayindex1和arrayindex2之間numkeyframe的值首次為(f.numkeyframe+1)的邏輯幀。二分查找算法查找關鍵幀的過程是:首先取arrayindex1和arrayindex2的平均值mid,如果mid位置處的numberkeyframe值比(f.numkeyframe+1)小,則在[mid+1,arrayindex2]之間查找numkeyframe的值首次為(f.numkeyframe+1)的元素;如果mid位置處的numberkeyframe值比(f.numkeyframe+1)大或與(f.numkeyframe+1)相等,則在[arrayindex1,mid]之間查找numkeyframe的值首次為(f.numkeyframe+1)的邏輯幀,直到二分查找的左邊界大于等于右邊界,則停止查找。此時,左邊界處的邏輯幀為第一個numkeyframe的值為(f.numkeyframe+1)的邏輯幀,所以該左邊界處的邏輯幀為第一次出現(xiàn)的關鍵幀,將查找的該邏輯幀確定為該播放結束的邏輯幀與該下一個待播放的邏輯幀之間的首個關鍵幀,并播放該邏輯幀。如果關鍵幀出現(xiàn)的概率是p,那么通過通過二分查找算法,查找該播放結束的邏輯幀與該下一個待播放的邏輯幀之間的首個關鍵幀,并播放該首個關鍵幀,可以降低時間復雜度,降低后的時間復雜度為關鍵幀的概率p乘以查詢時間o(logn),即o(p*logn)。本發(fā)明實施例中,在每個邏輯幀播放結束后,通過在已生成的結構體數組中確認該播放結束的邏輯幀的第一位置和下一個待播放的邏輯幀的第二位置,并判斷第一位置和第二位置分別對應的在當前邏輯幀之前累計出現(xiàn)過的關鍵幀的數目是否相同,來判斷該播放結束的邏輯幀與該下一個待播放的邏輯幀之間是否存在關鍵幀,若無,則播放該下一個待播放的邏輯幀,若有,則查找該播放結束的邏輯幀與該下一個待播放的邏輯幀之間的首個關鍵幀,并播放該首個關鍵幀,可簡化判斷、查找關鍵幀的過程,提高查找關鍵幀的速度,降低查找的時間復雜度,較大程度上加快了計算時間,提高畫面播放的流暢度。請參見圖3,圖3為本發(fā)明第三實施例提供的關鍵幀識別裝置,為了便于說明,僅示出了與本發(fā)明實施例相關的部分。該裝置可內置于終端中,該裝置包括:第一確認模塊301、判斷模塊302、第二確認模塊303、播放模塊304和查找模塊305。其中,第一確認模塊301,用于在每個邏輯幀播放結束后,確認該播放結束的邏輯幀在已生成的邏輯幀的結構體數組中的第一位置,并根據該第一位置確定下一個待播放的邏輯幀在該結構體數組中的第二位置,該結構體數組包括:按播放順序排列的邏輯幀和在每個邏輯幀之前累計出現(xiàn)過的關鍵幀的數目;該結構體數組可以包括:按播放順序排列的邏輯幀和在每一邏輯幀之前累計出現(xiàn)過的關鍵幀的數目。邏輯幀(frameindex),又稱邏輯幀索引,各邏輯幀在表內按播放順序排列,與數組元素索引相對應。在每個邏輯幀之前累計出現(xiàn)過的關鍵幀的數目(numkeyframe),需要說明的是,當前邏輯幀若為關鍵幀,則累計計數,將當前邏輯幀的numkeyframe的數目增加1。為了查找方便,為數組元素設置數組元素索引(arrayindex),表示邏輯幀的播放順序以及邏輯幀的存儲位置。判斷模塊302,用于判斷在該結構體數組中,該第一位置和該第二位置分別對應的在當前邏輯幀之前累計出現(xiàn)過的關鍵幀的數目是否相同。即判斷該結構體數組中第一位置對應的numkeyframe和第二位置對應的numkeyframe是否相同。第二確認模塊303,用于若該判斷模塊判斷的結果是:該第一位置和該第二位置分別對應的在當前邏輯幀之前累計出現(xiàn)過的關鍵幀的數目相同,則確認該播放結束的邏輯幀與該下一個待播放的邏輯幀之間無關鍵幀。該播放結束的邏輯幀與該下一個待播放的邏輯幀之間若無關鍵幀,可全部跳過,直接播放該下一個待播放的邏輯幀。播放模塊304,用于播放該下一個待播放的邏輯幀。查找模塊305,用于若該判斷模塊判斷的結果是:該第一位置和該第二位置分別對應的在當前邏輯幀之前累計出現(xiàn)過的關鍵幀的數目不相同,則查找該播放結束的邏輯幀與該下一個待播放的邏輯幀之間的首個關鍵幀。播放模塊304,還用于播放該首個關鍵幀。本發(fā)明實施例中的裝置用于執(zhí)行前述圖1所述實施例的方法,未描述的技術細節(jié)與前述圖1所示實施例相同,此處不再贅述。本發(fā)明實施例中,在每個邏輯幀播放結束后,通過在已生成的結構體數組中確認該播放結束的邏輯幀的第一位置和下一個待播放的邏輯幀的第二位置,并判斷第一位置和第二位置分別對應的在當前邏輯幀之前累計出現(xiàn)過的關鍵幀的數目是否相同,來判斷該播放結束的邏輯幀與該下一個待播放的邏輯幀之間是否關存在鍵幀,若無,則播放該下一個待播放的邏輯幀,若有,則查找該播放結束的邏輯幀與該下一個待播放的邏輯幀之間的首個關鍵幀,并播放該首個關鍵幀,可簡化判斷、查找關鍵幀的過程,提高查找關鍵幀的速度,降低查找的時間復雜度,較大程度上加快了計算時間,提高畫面播放的流暢度。請參見圖4,圖4為本發(fā)明第四實施例提供的關鍵幀識別裝置,為了便于說明,僅示出了與本發(fā)明實施例相關的部分。該裝置可內置于終端中,本實施例所示的裝置與圖3所示的裝置不同之處在于,該裝置還一進步包括:生成模塊406,用于在客戶端啟動加載初始畫面時,按照播放時間順序存儲待播放的邏輯幀,并記錄每個邏輯幀之前累計出現(xiàn)的關鍵幀數目,得到邏輯幀的該結構體數組。生成模塊406,還用于為各邏輯幀按照存儲位置生成數組元素索引。該客戶端可以是游戲類客戶端,該客戶端啟動,游戲初始畫面開始加載并渲染后顯示在終端屏幕上。在客戶端啟動時載游戲畫面,同時生成該游戲畫面各邏輯幀的結構體數組。在該結構體數組中按照播放時間順序存儲待播放的邏輯幀,以及記錄每個邏輯幀之前累計出現(xiàn)的關鍵幀數目。同時,為存儲的邏輯幀按照存儲位置生成數組元素索引,可以迅速根據數組元素索引確定邏輯幀在該結構體數組中的位置,從而加快判斷、查找關鍵幀的速度。該裝置還可以進一步包括:記錄模塊407,用于在每個邏輯幀中記錄邏輯幀各自在該結構體數組中的位置。通過查詢各邏輯幀可以獲知每個邏輯幀在該結構體數組中的存儲位置。進一步提高確認邏輯幀在該結構體數組中位置的便捷性。進一步地,生成模塊406,還用于若同一邏輯幀重復播放多次,則在該結構體數組中,按照該重復播放的邏輯幀的播放順序,使用與邏輯幀播放次數相同數量的數組元素存儲該重復播放的邏輯幀。即,一個邏輯幀播放多少次,便對應按照播放順序使用多少個數組元素對重復播放的邏輯幀分別記錄。例如,表2中,邏輯幀b播放2次,便按照播放順序,在arrayindex1和arrayindex2的兩個位置2次存儲邏輯幀b。進一步地,查找模塊305,具體用于通過二分查找算法,查找該播放結束的邏輯幀與該下一個待播放的邏輯幀之間,首個在當前邏輯幀之前累計出現(xiàn)過的關鍵幀的數目發(fā)生變化的位置。該裝置還包括:確定模塊408,用于將該位置的邏輯幀確定為該播放結束的邏輯幀與該下一個待播放的邏輯幀之間的首個關鍵幀。該二分查找算法是在有重復元素的數組中,查找目標元素首次出現(xiàn)的位置。具體地,將該結構體數組兩個位置arrayindex1和arrayindex2分別對應的numkeyframe值相比較,若不同,則說明arrayindex1和arrayindex2之間有關鍵幀,此時需要二分查找arrayindex1和arrayindex2之間首次出現(xiàn)關鍵幀的位置,即查找arrayindex1和arrayindex2之間numkeyframe的值首次為(f.numkeyframe+1)的元素。二分查找算法查找關鍵幀的過程是:首先取arrayindex1和arrayindex2的平均值mid,如果mid位置處的numberkeyframe值比(f.numkeyframe+1)小,則在[mid+1,arrayindex2]之間查找numkeyframe的值首次為(f.numkeyframe+1)的邏輯幀;如果mid位置處的numberkeyframe值比(f.numkeyframe+1)大或與(f.numkeyframe+1)相等,則在[arrayindex1,mid]之間查找numkeyframe的值首次為(f.numkeyframe+1)的邏輯幀,直到二分查找的左邊界大于等于右邊界,則停止查找,此時左邊界處的邏輯幀為第一個numkeyframe的值為(f.numkeyframe+1)的邏輯幀,所以該左邊界處的邏輯幀為第一次出現(xiàn)的關鍵幀,將查找的該邏輯幀確定為該播放結束的邏輯幀與該下一個待播放的邏輯幀之間的首個關鍵幀,并播放該邏輯幀。第一確認模塊301,具體用于在每個邏輯幀播放結束后,獲取該播放結束的邏輯幀的開始播放時間t1、以及該下一個待播放的邏輯幀的開始播放時間t2,以及,每個邏輯幀的平均時間切片長度l;令該第一位置為arrayindex1,令該第二位置為arrayindex2,則:arrayindex2=arrayindex1+(t2-t1)/l。本發(fā)明實施例中的未描述的技術細節(jié),參見前述圖1~圖3所示各實施例相同,此處不再贅述。本發(fā)明實施例中,在每個邏輯幀播放結束后,通過在已生成的結構體數組中確認該播放結束的邏輯幀的第一位置和下一個待播放的邏輯幀的第二位置,并判斷第一位置和第二位置分別對應的在當前邏輯幀之前累計出現(xiàn)過的關鍵幀的數目是否相同,來判斷該播放結束的邏輯幀與該下一個待播放的邏輯幀之間是否關存在鍵幀,若無,則播放該下一個待播放的邏輯幀,若有,則查找該播放結束的邏輯幀與該下一個待播放的邏輯幀之間的首個關鍵幀,并播放該首個關鍵幀,可簡化判斷、查找關鍵幀的過程,提高查找關鍵幀的速度,降低查找的時間復雜度,較大程度上加快了計算時間,提高畫面播放的流暢度。圖5為本發(fā)明實施例提供的執(zhí)行關鍵幀識別方法的終端結構示意圖。本實施例中所描述的終端,包括:至少一個輸入設備51;至少一個輸出設備52;至少一個處理器53,例如中央處理器;以及,存儲器54。上述輸入設備51、輸出設備52、處理器53和存儲器54通過總線55連接。其中,輸入設備51具體可為攝像頭、觸控面板、物理按鍵或者鼠標等等。輸出設備52具體可為顯示屏。存儲器54可以是高速隨機存取記憶體(ram,randomaccessmemory)存儲器,也可為非不穩(wěn)定的存儲器(non-volatilememory),例如磁盤存儲器。存儲器54用于存儲一組可執(zhí)行程序代碼,處理器53與存儲器54耦合,上述輸入設備51、輸出設備52和處理器53用于通過存儲器54中存儲的可執(zhí)行程序代碼,執(zhí)行如下操作:通過處理器53執(zhí)行該代碼,執(zhí)行如前述圖1~圖2所示實施例中描述的關鍵幀識別方法。具體地,即在每個邏輯幀播放結束后,確認所述播放結束的邏輯幀在已生成的邏輯幀的結構體數組中的第一位置,并根據所述第一位置確定下一個待播放的邏輯幀在所述結構體數組中的第二位置,所述結構體數組包括:按播放順序排列的邏輯幀和在每個邏輯幀之前累計出現(xiàn)過的關鍵幀的數目;判斷在所述結構體數組中,所述第一位置和所述第二位置分別對應的在當前邏輯幀之前累計出現(xiàn)過的關鍵幀的數目是否相同;若相同,則確認所述播放結束的邏輯幀與所述下一個待播放的邏輯幀之間無關鍵幀,并播放所述下一個待播放的邏輯幀;若不相同,則查找所述播放結束的邏輯幀與所述下一個待播放的邏輯幀之間的首個關鍵幀,并播放所述首個關鍵幀。在本申請所提供的多個實施例中,應該理解到,所揭露的方法和裝置,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置的實施例僅僅是示意性的,例如,所述模塊的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個模塊或組件可以結合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信鏈接可以是通過一些接口,裝置或模塊的間接耦合或通信鏈接,可以是電性,機械或其它的形式。所述作為分離部件說明的模塊可以是或者也可以不是物理上分開的,作為模塊顯示的部件可以是或者也可以不是物理模塊,即可以位于一個地方,或者也可以分布到多個網絡模塊上??梢愿鶕嶋H的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。另外,在本發(fā)明各個實施例中的各功能模塊可以集成在一個處理模塊中,也可以是各個模塊單獨物理存在,也可以兩個或兩個以上模塊集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中?;谶@樣的理解,本發(fā)明的技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟件產品的形式體現(xiàn)出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲程序代碼的介質。需要說明的是,對于前述的各方法實施例,為了簡便描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據本發(fā)明,某些步驟可以采用其它順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定都是本發(fā)明所必須的。在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其它實施例的相關描述。以上為對本發(fā)明所提供的關鍵幀識別方法和關鍵幀識別裝置的描述,對于本領域的一般技術人員,依據本發(fā)明實施例的思想,在具體實施方式及應用范圍上均會有改變之處,綜上,本說明書內容不應理解為對本發(fā)明的限制。當前第1頁12
當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1