国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      關(guān)鍵幀識別方法及裝置與流程

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