TWI713979B - 多媒體影片逆向播放方法、多媒體播放裝置及電腦可讀取的紀錄媒體 - Google Patents
多媒體影片逆向播放方法、多媒體播放裝置及電腦可讀取的紀錄媒體 Download PDFInfo
- Publication number
- TWI713979B TWI713979B TW108102214A TW108102214A TWI713979B TW I713979 B TWI713979 B TW I713979B TW 108102214 A TW108102214 A TW 108102214A TW 108102214 A TW108102214 A TW 108102214A TW I713979 B TWI713979 B TW I713979B
- Authority
- TW
- Taiwan
- Prior art keywords
- frame
- processing unit
- multimedia
- time
- target
- Prior art date
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Television Signal Processing For Recording (AREA)
Abstract
一種多媒體影片逆向播放方法,當一多媒體播放裝置要從一影片的第i群第j幀圖像幀開始逆向播放時,其中的一處理單元設定第i群為一目標GOP,第j幀為一目標幀並開始計時,然後該處理單元判斷逆向播放尚未抵達該目標GOP的第一幀,或已抵達該目標GOP的第一幀但該目標GOP並非該影片的第一個GOP時,設定該目標GOP的前一個GOP為該目標GOP後,自該目標GOP的第一幀依序將圖像幀送入一視訊解碼器,並向該視訊解碼器取得剛完成解碼的該解碼幀及當下的一系統時間,且設定該解碼幀為該目標幀,並判斷該系統時間足夠接近該目標幀的一預定逆向播放時間時,將該目標幀放入一播放佇列。
Description
本發明是有關於一種多媒體影片播放方法,特別是指一種多媒體影片逆向播放方法。
習知的多媒體播放器除了提供諸如播放、前進、跳轉、倒退等播放多媒體影片的功能外,也提供了變速及逆向播放功能。如圖1所示,一般多媒體影片通常由多個圖像群組(Group of Pictures,以下簡稱GOP)組成,且如圖2所示,每個GOP是由多個圖像幀I
00、B
01、B
02、P
03…組成,其通常具有一個位於開頭的關鍵幀(又稱I幀,例如圖2中的I
00)以及在關鍵幀之後的數個P幀和B幀。且參考I幀或之前的P幀可以預測P幀,而參考之前的及相繼的I幀或P幀可以雙向地預測B幀,亦即P幀和B幀的預測式編碼及解碼需參考先前的及相繼的圖像幀。因此對最後一個B幀解碼時需要先對包括I幀及P幀的所有先前的參考幀進行解碼。
當多媒體播放器是以前向播放順序播放多媒體影片時,由於其中的視訊解碼器也是以一類似前向解碼順序對多媒體影片的圖像幀進行解碼,因此在播放上不致產生延遲。
但是,當多媒體播放器要逆向(反向)播放多媒體影片時,由於視訊解碼器需要以前向解碼順序對多媒體影片的圖像幀進行解碼並儲存後,才能輸出逆向播放順序的已解碼圖像幀,因此,視訊解碼器除了無法在顯示器顯示速率下可用的時間內完成解碼工作外,還必須使用大量的儲存空間暫存要逆向播放的已解碼圖像幀,而導致逆向播放實作上的困難。
因此,另一種實現逆向播放的解決方案是讓視訊解碼器只解碼每一圖像群組(GOP)中不需參考其它圖像幀的圖像幀,例如I幀,如此一來即可加速圖像幀的解碼速度並減少儲存空間的佔用。這種方法的可行性需取決於I幀在多媒體影片中出現的頻率,但是因為I幀在多媒體影片中分布的序列是不固定的,如果I幀不經常出現在多媒體影片中,且相鄰兩個I幀的間隔時間過長,例如過5秒,則當逆向播放僅播放I幀時,將導致退化至類似幻燈片放映的情形。
另外,另一種實現逆向播放的解決方案主要利用只解碼會被其他幀參考到以及被選中播放的圖像幀來降低解碼的複雜性與負擔。但是此種方式需要事先知道每一幀的屬性,例如是否會被參考到,但對某些多媒體編碼格式或封裝格式來說,得知每幀的屬性並非是直觀的,例如某些多媒體封裝格式只有該幀是否是關鍵幀的資訊,而沒有該幀是否被其它幀參考到的資訊,且對於大多數的操作系統而言,此種逆向播放功能需要實作在系統程式庫階層而非應用層,導致應用程式開發者無法實做該功能,因而無法適用於每一種媒體體播放裝置或提供回溯相容性,造成此種逆向播放功能無法普及或相容於每一多媒體播放裝置。
因此,本發明之目的,即在提供一種能克服上述習知技術的至少一問題之多媒體影片逆向播放方法及多媒體播放裝置。
於是,本發明多媒體影片逆向播放方法,多媒體影片逆向播放方法,應用於一具有多媒體影片播放功能的電子裝置,該多媒體影片包含複數圖像群組(GOP),每一圖像群組包含複數圖像幀;該方法包括下列步驟:(A)當該電子裝置的一處理單元要從一多媒體影片的第i群第j幀圖像幀開始逆向播放時,該處理單元設定第i群為一目標圖像群組,第j幀為一目標幀,並令一系統計時器開始計時;(B)該處理單元判斷逆向播放尚未抵達該目標圖像群組的第一幀時,進行步驟(C);或者該處理單元判斷逆向播放已抵達該目標圖像群組的第一幀但該目標圖像群組並非該多媒體影片的第一個圖像群組時,設定該目標圖像群組的前一個圖像群組為該目標圖像群組,並進行步驟(C);(C)該處理單元自該目標圖像群組的第一幀依序將圖像幀送入該電子裝置的一視訊解碼器解碼,使依序產生對應的解碼幀;(D)該處理單元向該視訊解碼器請求取得剛完成解碼的該解碼幀並記錄當下的一系統時間,且設定該解碼幀為該目標幀;(E)該處理單元判斷該系統時間是否足夠接近該目標幀的一預定逆向播放時間,若是,執行步驟(F),否則回到步驟(D);及(F) 該處理單元將該目標幀放入一播放佇列,以在該目標幀之該預定逆向播放時間到達時播放之,並回到步驟(B)。
在本發明的一些實施態樣中,在步驟(E)中,該處理單元判斷該系統時間是否足夠接近該目標幀的該預定逆向播放時間的判斷條件為:該目標幀的前一幀對應的該系統時間大於或等於該目標幀的前一幀的該預定逆向播放時間;及該目標幀對應的該系統時間小於該目標幀的該預定逆向播放時間。
在本發明的一些實施態樣中,在步驟(E)中,該處理單元判斷該系統時間尚未足夠接近該目標幀的該預定逆向播放時間後,在回到步驟(D)之前,該處理單元還執行一插幀演算法,其包含下列步驟:(G)該處理單元判斷該視訊解碼器可供暫存解碼幀的緩存區的數量是否大於1,若否,執行步驟(D),若是,該處理單元根據該系統時間、一解碼時間預測公式、該目標幀及一解碼邊界,預測下一個可能被逆向播放的幀做為一右邊界幀;(H)該處理單元判斷是否存在一左邊界幀,若是,則執行步驟(I),否則該處理單元根據當下的該系統時間、該解碼時間預測公式及該右邊界幀,預測再下一個可能被逆向播放的幀做為該左邊界幀,再執行步驟(I);及 (I)該處理單元從該左邊界幀與該右邊界幀之間選擇一幀做為保留幀,並判斷該保留幀是否即將和當下取得的該解碼幀在時間上交錯,若否,則執行步驟(D),若是,則將當下取得的該解碼幀做為一預估***幀暫存在該等緩存區其中之一並放入該播放佇列中,以在該預估***幀的一預定逆向播放時間到達時播放之,且設定該左邊界幀為該預估***幀,並將緩衝區的數量減1後,執行步驟(D)。
在本發明的一些實施態樣中,在步驟(I)中,該處理單元是以平均分佈插幀的方式從該左邊界幀與該右邊界幀之間的複數幀中選擇該保留幀。
在本發明的一些實施態樣中,在步驟(I)中,該處理單元是根據該左邊界幀、該右邊界幀與緩存區的數量,求得平均分佈在該左邊界幀與該右邊界幀之間的該保留幀。
在本發明的一些實施態樣中,在步驟(G)中,該處理單元是以一邊界預測公式根據該系統時間、該解碼時間預測公式、該目標幀及該解碼邊界,預測該右邊界幀,且該邊界預測公式需滿足下列條件:
{當下的該系統時間+[(該解碼時間預測公式估算該右邊界幀的一解碼時間)-(該解碼時間預測公式估算該目標幀的一解碼時間)]+一預設值}>該右邊界幀的該預定逆向播放時間;
該右邊界幀<該解碼邊界。
在本發明的一些實施態樣中,在步驟(H)中,該處理單元是以該邊界預測公式根據該系統時間t、該解碼時間預測公式及該右邊界幀,預測該左邊界幀,且該邊界預測公式需滿足下列條件:
{當下的該系統時間t+(該解碼時間預測公式估算該左邊界幀的一解碼時間)+該預設值 }>該左邊界幀的該預定逆向播放時間;
該左邊界幀<該右邊界幀。
在本發明的一些實施態樣中,該解碼時間預測公式與該多媒體影片之影響解碼速度的格式參數有關,該格式參數包含影片的解析度、幀率及壓縮標準至少其中之一。
在本發明的一些實施態樣中,該解碼時間預測公式是基於所要估算的一圖像幀與前一關鍵幀的距離來估算該圖像幀的解碼時間。
在本發明的一些實施態樣中,該解碼時間預測公式是基於迴歸分析技術。
再者,本發明實現上述方法的一種多媒體播放裝置,其具有多媒體影片播放功能,該多媒體影片包含複數圖像群組(GOP),每一圖像群組包含複數幀,該多媒體播放裝置包括一處理單元、一視訊解碼器、一提供緩存區給該視訊解碼器的儲存單元及一系統計時器,且該多媒體播放裝置的該處理單元載入並執行一應用軟體後,該處理單元能完成如上所述的多媒體影片逆向播放方法。
此外,本發明一種電腦程式產品,其包括非暫時性且有形的電腦可存取媒體,所述電腦可存取媒體中包含一應用程式,該應用程式被一具有多媒體影片播放功能的多媒體播放裝置載入並執行後,能完成如上所述的多媒體影片逆向播放方法。
本發明之功效在於:藉由在解碼圖像幀的過程中,取得最接近其預定逆向播放時間的解碼幀並將其存入播放佇列中,使其能在預定逆向播放時間到達時立即被播放而不致延遲外,還利用視訊解碼器的解碼能力儘可能地播放更多的幀,而提升逆向播放的品質,並且可進一步地利用該視訊解碼器的緩存區,於最接近其預定逆向播放時間的前後兩個解碼幀之間平均地選擇並緩存至少一個預估***幀於該緩存區可用的儲存空間中並放入播放佇列,以在前一個最接近其預定逆向播放時間的解碼幀播出之後再接續播放該至少一個預估***幀,而使播放畫面更為流暢,以達到最佳的逆向播放品質。
在本發明被詳細描述之前,應當注意在以下的說明內容中,類似的元件是以相同的編號來表示。
參閱圖3,是本發明多媒體影片逆向播放方法的第一實施例,其應用於一具有多媒體影片播放功能的電子裝置(以下簡稱多媒體影片播放裝置1),且如圖4所示,該多媒體影片播放裝置1主要包括一處理單元11、一視訊解碼器12、一儲存單元13及一系統計時器14。而且如圖1及圖2所示,該多媒體影片包含複數圖像群組(以下簡稱GOP),每一GOP包含複數圖像幀且其開頭為一關鍵幀(I幀),且在下述內容中,多媒體影片的每個圖像幀將以幀(i,j)表示其是位於第i個GOP中的第j個圖像幀;接著,介紹本實施例多媒體影片逆向播放方法如下。
當該多媒體播放裝置1正在播放一多媒體影片,例如前向(前進)播放多媒體影片時,如圖3的步驟S31所示,該處理單元11判斷是否收到一逆向播放指令,若是,且此時正播放到多媒體影片的第i群第j個圖像幀時,則要從該多媒體影片的第i群第j個圖像幀開始逆向播放。因此,如圖1的步驟S32,該處理單元11設定第i群為一目標GOP,第j幀為一目標幀,並令該系統計時器13開始計時。
接著,如圖1的步驟S33所示,該處理單元11先判斷逆向播放是否已抵達該目標GOP的第一幀,若否,則進行步驟S34,若是,則如步驟S35所示,該處理單元11進一步判斷該目標GOP是否為該多媒體影片的第一個GOP,若是,則結束逆向播放,若否,則如步驟S36所示,設定該目標GOP的前一個GOP為該目標GOP後,再進行步驟S34。
且如先前技術中所述,當需要得到某一解碼幀(i,k)時,因為幀間編碼的相依性,需要從第i個GOP開頭的關鍵幀(i,0)開始解碼,且需依序解碼至少在幀(i,0)~幀(i,k)之間的所有相依的幀,最後才能得到解碼後的幀(i,k)。
因此,為了取得上述目標幀(i,k)以播放之,在步驟S34中,該處理單元11自該目標GOP的第一幀依序將圖像幀送入該視訊解碼器12進行解碼,使依序產生對應的解碼幀;且參見圖5所示,假設逆向播放是從多媒體影片的幀(10,65)(目標幀)開始(即i=10,j=65),因此,若要取得解碼幀(10,65),必須先解碼該幀(10,65)之前的所有參考幀。圖5所示的表格中第二欄由下而上依序顯示的是幀(10,k)的預定逆向播放時間,其中k=0,1,2…,64。在此例中,假設播放影片的幀率=25幀/秒,則每幀的播放時間為1/25=40000µs。因此可以得到表格中第二欄所列之每幀(i,k)的一預定逆向播放時間RPTS(i,k)。且假設系統計時器14的時間是從0開始計時,並且該視訊解碼器12要從關鍵幀(10,0)開始解碼,則表格中第三欄所列之t(i,k)是表示每一幀完成解碼時的系統時間t。以下稱此一取得解碼幀(10,65)之解碼過程為第一解碼迴圈。
然後,如步驟S37所示,該處理單元11向該視訊解碼器12請求取得剛完成解碼的該解碼幀(i,k)並記錄當下的一系統時間t(i,k),且設定該解碼幀(i,k)為該目標幀。因此,從圖5表格中的第三欄可以看到第一幀(10,0)(關鍵幀)是在系統時間t=66700µs時完成解碼,而此時幀(10,0)的預定逆向播放時間RPTS(10,0)是65*40000µs (*代表乘法);幀(10,1)是在系統時間t=72612µs時完成解碼,而此時幀(10,1)的預定逆向播放時間RPTS(10,0)是64*40000µs;幀(10,2)是在系統時間t=78565µs時完成解碼,而此時幀(10,2)的預定逆向播放時間RPTS(10,2)是63*40000µs,…等等。由此可知,隨著k的增加,系統時間t(i,k)將逐漸增加且預定逆向播放時間RPTS(i,k)將逐漸相對減少。
接著,如圖1的步驟S38,該處理單元11判斷該系統時間t(i,k)是否足夠接近該目標幀(i,k)的該預定逆向播放時間RPTS(i,k),其判斷條件為該目標幀的前一幀(i,k-1)對應的該系統時間t(i,k)大於或等於該目標幀的前一幀(i,k-1) 的該預定逆向播放時間RPTS(i,k),且該目標幀(i,k)對應的該系統時間t(i,k)小於該目標幀(i,k) 的該預定逆向播放時間RPTS(i,k);亦即該目標幀(i,k)對應的該系統時間t(i,k)必須小於該目標幀(i,k) 的該預定逆向播放時間RPTS(i,k),且兩者的一差值應小於一預設值,該預設值例如是一個幀的播放時間(40000µs)或其它比一個幀的播放時間小的適當的值;因此,若在步驟S38中的判斷結果為是,表示該目標幀(i,k)即將到達其預定逆向播放時間,該處理單元11則執行步驟S39,將該目標幀(i,k)放入一播放佇列(queue),以在該目標幀(i,k)之該預定逆向播放時間到達時播放之,並回到步驟S33;而若在步驟S38中的判斷結果為否,則回到步驟S37,處理單元11再次向該視訊解碼器12請求取得剛完成解碼的該解碼幀(i,k)並記錄當下的該系統時間t(i,k),且設定該解碼幀(i,k)為該目標幀並執行步驟S38,且不斷地重覆執行步驟S37、S38直到找到滿足上述判斷條件的該目標幀(i,k)。
以圖5所示為例,在獲得該解碼幀(10,65)的第一解碼迴圈中,幀(10,0)~幀(10,54)在步驟S38中皆未滿足該判斷條件,直到幀(10,55) 才滿足該判斷條件,因為幀(10,54)的系統時間t(10,54)=387758µs>幀(10,54)的該預定逆向播放時間RPTS(10,54)=360,000µs)且幀(10,55)的系統時間t(10,55)=393702µs<幀(10,55)的該預定逆向播放時間RPTS(10,55)=400,000µs;因此,該處理單元11將幀(10,55) 放入播放佇列(queue)準備播放。至此,第一解碼迴圈取得一最佳的解碼幀(10,55)做為開始逆向播放後的最後一個逆向播放幀,也是第一解碼迴圈中唯一的一個放入播放佇列的解碼幀。而且,由於幀(10,55)之後的幀(10,56)~幀(10,65)即使解碼完成也早已過了其預定逆向播放時間,因此無需再對其進行解碼。
然後,在第一解碼迴圈完成之後,該處理單元11重新回到步驟S33,再次判斷逆向播放是否已抵達該目標GOP的第一幀,若否,則進入步驟S34,開始進行第二解碼迴圈;若是,則進行步驟S35,該處理單元11在判斷該目標GOP並非該多媒體影片的第一個GOP之後,重新設定該目標GOP的前一個GOP為該目標GOP,再進入步驟S34,開始該第二解碼迴圈,並自該目標GOP的第一幀依序將圖像幀送入該視訊解碼器12進行解碼,並以存放在播放佇列中具有最大的該預定逆向播放時間的幀做為此解碼迴圈的解碼邊界;例如延續上例,在播放佇列中具有最大的該預定逆向播放時間RPTS的是幀(10,55),因此第二解碼迴圈的解碼邊界(右邊界)即為幀(10,55),亦即第二解碼迴圈要解碼的幀是幀(10,0)~幀(10,54),因為在幀(10,55)之後的幀在逆向播放過程中已經或即將超過其預定播放時間,因此無需再對幀(10,55)之後的幀進行解碼及播放,以避免造成播放的延遲。
因此,第二解碼迴圈在重覆上述步驟S37、S38多次之後,亦將找到一最佳的解碼幀,例如幀(10,46),且該處理單元11將第二解碼迴圈獲得的解碼幀(10,46)放入播放佇列中,進行第三解碼迴圈,並在第三解碼迴圈中,以幀(10,46)做為第三解碼迴圈的解碼邊界,並經過步驟S33~S34之後,重覆步驟S37~S38,以找到此迴圈中最佳的一解碼幀,例如幀(10,38)並放入播放佇列中。
因此,藉由不斷地重覆上述方法步驟S33~S39(解碼迴圈),如圖6所示,該多媒體播放裝置1的播放佇列中將不斷地存入要逆向播放的經過解碼後的解碼幀,且它們被依照逆向播放時間的順序排列而滿足FIFO(先進先出)資料結構,因此在播放佇列的頭端是逆向播放中即將被播放的幀。且該些存放在播放佇列中的幀都是與其預定逆向播放時間最接近而能在預定逆向播放時間到達時被立即(即將)播放的幀,使得在逆向播放過程中不致延遲外,並儘可能地利用視訊解碼器12的能力解碼出儘可能多的可供逆向播放的幀,以達到最佳的逆向播放品質。
且參見圖7所示,其中顯示對於一個GOP,依照圖3之流程步驟執行的結果,黑色點代表逆向播放起始點(或該GOP中第一個逆向播放幀),灰色點代表逆向播放過程中被播放的幀,白色點代表該GOP的關鍵幀。從圖中可看出距離關鍵幀越近之處播放的幀數越多且越密集,而距離關鍵幀越遠之處播放的幀數越少且越稀疏。且實務上,影片在編碼時通常會採用兩種方式***關鍵幀,一種是以固定的間隔,例如每5秒***一關鍵幀,另一種是在場影變換時***關鍵幀,因為場景變換通常代表比較重要的片段。因此本實施例的方法在某種程度上自然會在比較重要的場景播放比較多的幀數,進而提升逆向播放畫面的流暢度。
此外,本實施例的方法可以於應用階層利用系統提供之多媒體程序庫(Media Library)的應用程式介面(Application Programming Interface,簡稱API)完成,例如本實施例僅需要利用到應用層的基本多媒體功能,諸如seek(尋找)、pause(暫停)、timer(計時器)等三項功能,而這三項功能是幾乎所有平台端(Framework層)均有實作並提供給上層(應用程式)的介面,因此本實施例容易在應用層被實作為一應用程式而普及或相容於每一多媒體播放裝置,且不會對多媒體播放裝置中的視訊解碼器之性能有任何的要求或限制而具備跨平台之能力。
再者,值得一提的是,在上述任一步驟S33~S39中,當該處理單元11收到一停止逆向播放指令時,即結束逆向播放的相關作業。
此外,視訊解碼器12中通常具有用以暫存解碼幀的一定數量的緩存區(buffer),例如B個緩存區,這些緩存區是由該儲存單元13提供,且在上述第一實施例中,每一個解碼迴圈實際上只會用到一個緩存區來暫存最後一個解碼幀,即最接近其逆向播放時間的該解碼幀。因此,若能善用其餘的(B-1)個緩存區平均地存放兩個相鄰解碼迴圈所獲得的兩個解碼幀之間的(B-1)個幀(解碼幀),將能在逆向播放的過程中播放更多的解碼幀而使逆向播放影像畫面更為流暢。而為了決定最適合存放在這(B-1)個緩存區的解碼幀,需要事先預測相鄰兩個解碼迴圈之間的該等解碼幀的解碼時間,以在解碼過程中將適合的幀保留在該(B-1)個緩存區中,因此必須先得到一解碼時間預測公式。以下的第二實施例將說明如何獲得該解碼時間預測公式以及如何善用剩餘的(B-1)個緩存區來保留解碼過程中產生的解碼幀。
在實施第二實施例之前,可以藉由電腦收集並分析以得到一多媒體播放裝置對於某一特定規格影片,例如解析度為4K之影片從前一關鍵幀(i,0)解碼至某一幀(i,k)所花費的解碼時間與前一關鍵幀(i,0)距離之關係,例如圖8所示,其中縱軸以µs(微秒)為單位,橫軸以幀數(代表距離)為單位。且透過迴歸分析或習知的預估技術,可以從圖8顯示的資訊中獲得一預測公式,例如透過線性迴歸分析所產生的一線性預測公式:y=5944x+66693,其中66693(截距)代表視訊解碼器的初始化時間,5944(斜率)代表對每幀解碼花費的時間。藉此,即可預測當解碼幀與前一關鍵幀的距離為30幀時,從開始解碼到得到該解碼幀所要花費的時間約為5944*30+66693=24,5013µs。
且經過實驗可以得知,即使影片的解析度各不相同,但每一幀的解碼時間大致上仍和該幀與前一關鍵幀的距離呈正相關,亦即越接近關鍵幀的目標幀(要解碼的幀)的解碼時間越短,反之則越長。因此,當取得解析度不同的影片,例如解析度分別為426*240、480*320、4K、2K等四部(Movie 1~Movie 4)影片的每一幀與前一關鍵幀的距離和其對應的解碼時間的足夠數據量後,透過電腦對該些數據分別進行訓練與分析,例如利用線性迴歸分析,即可得到如下表所列的以四種影片解析度分類的四個解碼時間預估公式的斜率與截距。其中第一部影片movie 1的解碼時間預估公式為y=1994.7x+57567,第二部影片movie 2的解碼時間預估公式為y=1948.8x+63039,第三部影片movie 3的解碼時間預估公式為y=5944x+66693,第四部影片movie 4的解碼時間預估公式為y=3660.9x+50612;其中y為解碼時間,x為目標幀與前一關鍵幀的距離(中間間隔的幀數)。
值得一提的是,上述預測公式是一個以最簡單方式完成之訓練結果,其中只以目標幀與前一關鍵幀的距離(x)做為輸入參數,並以影片的解析度做為分類。但事實上目標幀的解碼時間還與其它的參數有關,例如目標幀的型態是I、P或B幀,或者在目標幀至前一關鍵幀之間的相關參數,例如最大的參考幀間的距離等等;此外,在不同的播放裝置上對於不同的輸入影片格式,其解碼時間也可能會不相同,且此處所謂的影片格式包含但不限於例如影片的解析度、幀率、壓縮標準(H.262、H.264或H.265)等會影響解碼速度的各種參數。故,若考慮上述參數並據以進行更進一步的分類,則解碼時間的預測將更為準確。因此,更為複雜的分類方法與輸入參數亦在本發明之實施例所涵蓋的範圍內。且實務上,比線性迴歸公式更複雜的預測方法亦可應用於本實施例中,因此本發明之第二實施例所應用的解碼時間預測方法並不侷限於線性迴歸分析。
此外,上述預測公式亦大致符合對於解碼時間的直覺,其中截距代表視訊解碼器12初始化的時間,斜率代表對每幀解碼花費的時間,且影片的解析度越高則斜率越大。而且視訊解碼器12通常以播放順序傳回解碼完成之幀,故基本上可以用播放順序中目標幀和前一關鍵幀的距離來預測目標幀的解碼時間。
因此,在第二實施例中,該多媒體播放裝置1可以預先準備一個資料庫專門存放針對不同影片格式的多個解碼時間預測公式(以下簡稱DF)的資料。資料庫中每筆資料具有(key,value)的形式,其中key為影片格式參數集,value為DF。藉此,處理單元11可以根據正在播放的影片的一影片格式參數,從資料庫中取得與該影片格式參數對應的該解碼時間預測公式DF,且該DF為一具有DT=DF(d,others)形式的公式,其中DT為預估解碼時間,d為目標幀與前一關鍵幀的距離,others為其他參數。
且參見圖9A及圖9B之流程步驟所示,在第二實施例中,圖9A所示的步驟S31~S39與第一實施例完全相同,而第二實施例與第一實施例不同之處在於:在步驟S38,當該處理單元11判斷該系統時間t(i,k)尚未足夠接近該目標幀(i,k)的該預定逆向播放時間RPTS(i,k)時,該處理單元11會執行一插幀演算法,即圖9B之步驟S41~S48,亦即步驟S41~S48是每一個解碼迴圈中的子迴圈。
因此,如步驟S41所示,首先該處理單元11判斷該視訊解碼器12可供暫存解碼幀的緩存區的數量是否大於1,若否,則回到步驟S37,若是,則執行步驟S42,該處理單元11根據當下的該系統時間t、該解碼時間預測公式及該目標幀(i,k),預測下一個可能被逆向播放的幀做為一右邊界幀,亦即預測下一個解碼迴圈的最後一個逆向播放幀(的位置),並利用一邊界幀預測公式,記為Expect(目標GOP,k,t,last),其中目標GOP和k代表在步驟S38中,位於該目標GOP中的第k個解碼幀(i,k) (即該目標幀(i,k)),t代表當下的系統時間,last代表解碼範圍的邊界,即該下一個解碼迴圈逆向播放的起始點(幀);而若在尚未取得任何解碼幀的情況下,此邊界幀預測公式將記為Expect(目標GOP,-,t,last),”-“代表無,且定義DF(-,others)=0,即預測解碼時間為0。
且邊界幀預測公式Expect(目標GOP,k,t,last)需滿足下列條件:
(1){系統時間t+[DF(j’,others)-DF(k,others)]+一預設值(delta)}>RPTS(目標GOP,j’);
(2)j’<last;其中j’為該右邊界幀。
接續上例,假設倒轉播放的起始點是第10GOP中的第65幀,即幀(10,65),則last=65,且參見圖10所示,假設在步驟S37中,該視訊解碼器12解碼完第2幀(k=2)時,在步驟S38中,該處理單元11在系統時間78565µs時取得的目標幀(解碼幀)即為幀(10,2),該預設值例如是一個幀的播放時間(40000µs),且該影片所對應的解碼時間預測公式為例如DF(j,others)=5944*j+66693;
則因為:
DF(j',others)-DF(k=2,others))=(j'-2)*5944
RPTS(10,j')=(65-j')*40000us
且Expect(10,2,78565,65)需滿足:
1、78565 +(j’-2)*5944+40000>(65-j')*40000;
2、j'<65。
計算可得 j'= ⌈54.268⌉=55,即求得右邊界幀為第10GOP的第55幀,即幀(10,55)。
接著,進行步驟S43,該處理單元11判斷是否存在一左邊界幀,若是,則執行步驟S44,否則,執行步驟S45。
接續上例,由於目前並不存在該左邊界幀,因此,該處理單元執行步驟S45,根據當下的該系統時間t、該解碼時間預測公式DF及該右邊界幀(10,55),即last=55,預測再下一個可能被逆向播放的幀做為該左邊界幀,亦即預測再下一個解碼迴圈的最後一個逆向播放幀(的位置),因此,在尚未取得任何解碼幀的情況下,該邊界幀預測公式Expect(目標GOP,-,RPTS(目標GOP,j’),last)需滿足下列條件:
(1){RPTS(目標GOP,j’)+DF(j”,others)+預設值(delta)}>RPTS(目標GOP,j”);
(2)j”<last;其中j’為右邊界幀,j”為該左邊界幀。
因此,接續上例,由於RPTS(10,55)=(65-55)*40000
=400,000 us ,所以Expect(10,-,400000,55)需滿足:
1、400,000+(5944*j”+66693)+40,000>(65-j”)*40,000;
2、j”<55
計算可得 j”=46,即求得左邊界幀為第10GOP的第46幀,即幀(10,46)。
然後,進行步驟S44,該處理單元11從該左邊界幀(10,46)與該右邊界幀(10,55)之間選擇一幀做為保留幀,且在本實施例中,希望選擇的保留幀可以平均分佈以使得播放的畫面看起來更為流暢。因此,當緩存區數目為B,且要在該左邊界幀(10,46)與該右邊界幀(10,55)之間平均地選擇(B-1)個保留幀時,第二實施例是藉由例如一平均分佈狀態判斷條件方程式AvgScore來判斷所選擇的保留幀是否為最佳,其中AvgScore輸出之值越小代表越好。且AvgScore公式為
其中K=1至B-1,reserve(0)為左邊界幀(10,46),reserve(B)為右邊界幀(10,55)。
因此,假設B=3,若選擇第1個保留幀reverse(1)為幀(10,49),選擇第2個保留幀reverse(2)為幀(10,52),則
=(55-52)
2+(52-49)
2+(49-46)
2=27;
而若選擇第1個保留幀reverse(1)為幀(10,54),選擇第2個保留幀reverse(2)為幀(10,53),則
=(55-54)
2+(54-53)
2+(53-46)
2=51
故藉由上述AvgScore公式之計算得知,當選擇幀(10,49)及幀(10,52)做為保留幀時,AvgScore輸出之值最小,因此該處理單元11可以求得該左邊界幀(10,46)與該右邊界幀(10,55)之間的最佳的兩個保留幀為幀(10,49)及幀(10,52),如圖10所示。
然後,如圖9的步驟S46,該處理單元11判斷該第1個保留幀(10,49)是否即將和當下取得的該解碼幀在時間上交錯。在此,「時間上交錯」的意思是指該第1個保留幀(10,49)在幀的順序上等於或即將小於該解碼幀。
接續上例,並參見圖10所示,假設當下取得的該解碼幀(即目標幀)為第k幀,若k=2,則該第1個保留幀(10,49)與該解碼幀(10,2) 並未在時間上交錯,因此回到步驟S37,該處理單元11繼續取得下一個解碼幀做為目標幀,並進行步驟S38。因此,假若邊界幀預測公式Expect(目標GOP,k,t,last)沒有大的偏差,則該右邊界幀將保持在幀(10,55),且當解碼過程持續進行中,該解碼幀將從第k=2幀逐步遞增,同時該處理單元11亦不斷地重覆執行步驟S37、S38、S41~S46,直到該處理單元11取得的該解碼幀遞增到第k=49幀,即幀(10,49)時,如圖11所示,該處理單元11在步驟S46中判斷該第1個保留幀(10,49)與該解碼幀(10,49)在時間上交錯,接著進行步驟S47,該處理單元11將該解碼幀(10,49)做為一預估***幀暫存在該等緩存區其中之一並放入該播放佇列中,以在該預估***幀(10,49)的一預定逆向播放時間到達時播放之。然後,該處理單元11進行步驟S48,該處理單元11設定該左邊界幀為該預估***幀(10,49) (即該播放佇列中預定逆向播放時間最大者),如圖12所示,且該處理單元11將緩存區的數量減1後,回到步驟S37。
因此,當該右邊界幀持續保持在幀(10,55),且解碼過程持續進行,k從49遞增到50,即解碼到幀(10,50)時,如圖12所示,此時由於第2個保留幀(10,52)仍大於k,因此,解碼持續進行,直到解碼到k到達或超過第52幀時,該處理單元11將取得的解碼幀(10,52)做為另一預估***幀(10,52)暫存在該等緩存區其中之一並放入該播放佇列中,以在該另一預估***幀(10,52)的一預定逆向播放時間到達時播放之。
然後,該處理單元11設定該左邊界幀為該另一預估***幀(10,52),並將緩存區的數量減1後,回到步驟S37。此時,由於緩存區的數量為1,不再有額外可供使用的緩存區,因此當步驟S38判斷為否而進入步驟S41,步驟S41將判斷為否,而使步驟S42~S48不再被執行,並再次回到步驟S37,且步驟S37、S38、S41將不斷重覆執行,直到該處理單元11取得的解碼幀(10,55)滿足上述步驟S38中的該判斷條件時,該處理單元11將解碼幀(10,55) 放入播放佇列(queue)中準備播放,並更新下一解碼迴圈的解碼邊界(last)為播放佇列中具有最大的該預定逆向播放時間的幀,即幀(10,49),再回到步驟S33,繼續進行下一解碼迴圈。並且在下一解碼迴圈中,在該視訊解碼器12解碼的過程中,該處理單元11亦將持續計算以決定最佳的保留幀,並將與該保留幀交錯的解碼幀存放在緩存區中。值得一提的是,上述邊界幀預測公式Expect所預測的左邊界幀(10,55)只是剛好與上述滿足步驟S38中的該判斷條件的該解碼幀(10,55)為同一個,但實際上兩者可能是不同的幀。
藉此,在前後兩個相鄰的解碼迴圈之間,該處理單元11在取得前一個解碼迴圈中的最後一個逆向播放幀(與其預定逆向播放時間最接近的幀,例如上例中的幀(10,55))之前,還可利用緩存區的數量額外緩存在這兩個解碼迴圈的最後一個預測的逆向播放幀(例如上例之幀(10,55)及幀(10,46))之間平均分佈的幾個保留幀(例如上例之第一保留幀(10,49)及第二保留幀(10,52))並放入播放佇列中,並在該處理單元11取得前一個解碼迴圈中的該最後一個逆向播放幀(10,55)並放入播放佇列後,根據該播放佇列的輸出順序依序逆向播放幀(10,55)、幀(10,52)及幀(10,49),而使播放的畫面看起來更為流暢。
綜上所述,上述實施例藉由在每一個解碼迴圈中取得最接近其預定逆向播放時間的解碼幀並將其存入播放佇列中,使其能在預定逆向播放時間到達時立即被播放而不致延遲外,還利用視訊解碼器12的解碼能力儘可能地播放更多的幀,以提升逆向播放的品質,並且還進一步地利用該視訊解碼器12的緩存區,於兩個解碼迴圈之間平均地選擇並緩存至少一個預估***幀於該緩存區可用的儲存空間中並放入播放佇列,以在前一個解碼迴圈的最後一個逆向播放幀播出之後再接續播放該至少一個預估***幀,而使播放畫面更為流暢,以達到最佳的逆向播放品質,確實達到本發明之功效與目的。
惟以上所述者,僅為本發明之實施例而已,當不能以此限定本發明實施之範圍,凡是依本發明申請專利範圍及專利說明書內容所作之簡單的等效變化與修飾,皆仍屬本發明專利涵蓋之範圍內。
1··················· 多媒體播放裝置 11················· 處理單元 12················· 視訊解碼器 13················· 儲存單元 14················· 系統計時器 S31~S39····· 步驟 S41~S48····· 步驟 |
本發明之其他的特徵及功效,將於參照圖式的實施方式中清楚地顯示,其中:
圖1是一般多媒體影片的組成架構示意圖;
圖2是每一個圖像群組的組成內容示意圖;
圖3是本發明多媒體影片逆向播放方法的第一實施例的流程圖;
圖4是本發明多媒體影片播放裝置的一實施例的主要硬體方塊圖;
圖5說明第一實施例中每一圖像幀的一預定逆向播放時間與其解碼時間的相對關係;
圖6是第一實施例的播放佇列的示意圖;
圖7顯示一個圖像群組依照圖3之流程步驟執行的結果示意圖;
圖8顯示針對某一特定規格影片從前一關鍵幀(i,0)解碼至某一幀(i,k)所花費的解碼時間與前一關鍵幀(i,0)距離之關係示意圖;
圖9A及圖9B是本發明多媒體影片逆向播放方法的第二實施例的流程圖;
圖10用以說明第二實施例求得保留幀的過程;
圖11用以說明將一解碼幀做為一預估***幀暫存在緩存區並放入播放佇列的過程;及
圖12用以說明將另一解碼幀做為另一預估***幀暫存在緩存區並放入播放佇列的過程。
S31~S39····· 步驟 |
Claims (11)
- 一種多媒體影片逆向播放方法,應用於一具有多媒體影片播放功能的電子裝置,該多媒體影片包含複數圖像群組(GOP),每一圖像群組包含複數圖像幀;該方法包括下列步驟:(A)當該電子裝置的一處理單元要從一多媒體影片的第i群第j幀圖像幀開始逆向播放時,該處理單元設定第i群為一目標圖像群組,第j幀為一目標幀,並令一系統計時器開始計時;(B)該處理單元判斷逆向播放尚未抵達該目標圖像群組的第一幀時,進行步驟(C);或者該處理單元判斷逆向播放已抵達該目標圖像群組的第一幀但該目標圖像群組並非該多媒體影片的第一個圖像群組時,設定該目標圖像群組的前一個圖像群組為該目標圖像群組,並進行步驟(C);(C)該處理單元自該目標圖像群組的第一幀依序將圖像幀送入該電子裝置的一視訊解碼器解碼,使依序產生對應的解碼幀;(D)該處理單元向該視訊解碼器請求取得剛完成解碼的該解碼幀並記錄當下的一系統時間,且設定該解碼幀為該目標幀;(E)該處理單元判斷該系統時間是否足夠接近該目標幀的一預定逆向播放時間,若是,執行步驟(F),否則回到步驟(D);及 (F)該處理單元將該目標幀放入一播放佇列,以在該目標幀之該預定逆向播放時間到達時播放之,並回到步驟(B);且在步驟(E)中,該處理單元判斷該系統時間是否足夠接近該目標幀的該預定逆向播放時間的判斷條件為:該目標幀的前一幀對應的該系統時間大於或等於該目標幀的前一幀的該預定逆向播放時間;及該目標幀對應的該系統時間小於該目標幀的該預定逆向播放時間。
- 如請求項1所述的多媒體影片逆向播放方法,在步驟(E)中,該處理單元判斷該系統時間尚未足夠接近該目標幀的該預定逆向播放時間後,在回到步驟(D)之前,該處理單元還執行一插幀演算法,其包含下列步驟:(G)該處理單元判斷該視訊解碼器可供暫存解碼幀的緩存區的數量是否大於1,若否,執行步驟(D),若是,該處理單元根據該系統時間、一解碼時間預測公式、該目標幀及一解碼邊界,預測下一個可能被逆向播放的幀做為一右邊界幀;(H)該處理單元判斷是否存在一左邊界幀,若是,則執行步驟(I),否則該處理單元根據當下的該系統時間、該解碼時間預測公式及該右邊界幀,預測再下一個可能被逆向播放的幀做為該左邊界幀,再執行步驟(I);及(I)該處理單元從該左邊界幀與該右邊界幀之間選擇一幀做為保留幀,並判斷該保留幀是否即將和當下取得的 該解碼幀在時間上交錯,若否,則執行步驟(D),若是,則將當下取得的該解碼幀做為一預估***幀暫存在該等緩存區其中之一並放入該播放佇列中,以在該預估***幀的一預定逆向播放時間到達時播放之,且設定該左邊界幀為該預估***幀,並將緩衝區的數量減1後,執行步驟(D)。
- 如請求項2所述的多媒體影片逆向播放方法,在步驟(I)中,該處理單元是以平均分佈插幀的方式從該左邊界幀與該右邊界幀之間的複數幀中選擇該保留幀。
- 如請求項3所述的多媒體影片逆向播放方法,在步驟(I)中,該處理單元是根據該左邊界幀、該右邊界幀與緩存區的數量,求得平均分佈在該左邊界幀與該右邊界幀之間的該保留幀。
- 如請求項2所述的多媒體影片逆向播放方法,在步驟(G)中,該處理單元是以一邊界預測公式根據該系統時間、該解碼時間預測公式、該目標幀及該解碼邊界,預測該右邊界幀,且該邊界預測公式需滿足下列條件:(1){當下的該系統時間+[(該解碼時間預測公式估算該右邊界幀的一解碼時間)-(該解碼時間預測公式估算該目標幀的一解碼時間)]+一預設值}>該右邊界幀的該預定逆向播放時間;(2)該右邊界幀<該解碼邊界。
- 如請求項5所述的多媒體影片逆向播放方法,在步驟(H)中,該處理單元是以該邊界預測公式根據該系統時間t、該 解碼時間預測公式及該右邊界幀,預測該左邊界幀,且該邊界預測公式需滿足下列條件:(1){當下的該系統時間t+(該解碼時間預測公式估算該左邊界幀的一解碼時間)+該預設值}>該左邊界幀的該預定逆向播放時間;(2)該左邊界幀<該右邊界幀。
- 如請求項1至6其中任一項所述的多媒體影片逆向播放方法,其中該解碼時間預測公式與該多媒體影片之影響解碼速度的格式參數有關,該格式參數包含影片的解析度、幀率及壓縮標準至少其中之一。
- 如請求項7所述的多媒體影片逆向播放方法,其中該解碼時間預測公式是基於所要估算的一圖像幀與前一關鍵幀的距離來估算該圖像幀的解碼時間。
- 如請求項7所述的多媒體影片逆向播放方法,其中該解碼時間預測公式是基於迴歸分析技術。
- 一種多媒體播放裝置,其具有多媒體影片播放功能,該多媒體影片包含複數圖像群組(GOP),每一圖像群組包含複數幀,該多媒體播放裝置包括一處理單元、一視訊解碼器、一提供緩存區給該視訊解碼器的儲存單元及一系統計時器,且該多媒體播放裝置的該處理單元載入並執行一應用軟體後,該處理單元能完成如請求項1至9其中任一項所述的多媒體影片逆向播放方法。
- 一種電腦程式產品,其包括非暫時性且有形的電腦可存取媒體,所述電腦可存取媒體中包含一應用程式,該應用程 式被一具有多媒體影片播放功能的多媒體播放裝置載入並執行後,能完成如請求項1至9其中任一項所述的多媒體影片逆向播放方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108102214A TWI713979B (zh) | 2019-01-21 | 2019-01-21 | 多媒體影片逆向播放方法、多媒體播放裝置及電腦可讀取的紀錄媒體 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108102214A TWI713979B (zh) | 2019-01-21 | 2019-01-21 | 多媒體影片逆向播放方法、多媒體播放裝置及電腦可讀取的紀錄媒體 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202029776A TW202029776A (zh) | 2020-08-01 |
TWI713979B true TWI713979B (zh) | 2020-12-21 |
Family
ID=73002772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108102214A TWI713979B (zh) | 2019-01-21 | 2019-01-21 | 多媒體影片逆向播放方法、多媒體播放裝置及電腦可讀取的紀錄媒體 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI713979B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201004364A (en) * | 2008-07-14 | 2010-01-16 | Mediatek Inc | Video apparatus and method for reverse playing video data |
CN101854508A (zh) * | 2009-03-30 | 2010-10-06 | 三星电子株式会社 | 反向回放编码的多媒体内容的方法和装置 |
-
2019
- 2019-01-21 TW TW108102214A patent/TWI713979B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201004364A (en) * | 2008-07-14 | 2010-01-16 | Mediatek Inc | Video apparatus and method for reverse playing video data |
CN101854508A (zh) * | 2009-03-30 | 2010-10-06 | 三星电子株式会社 | 反向回放编码的多媒体内容的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
TW202029776A (zh) | 2020-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101391542B1 (ko) | 메타데이터를 이용하여 다중 비디오 스트림을 핸들링하는방법 및 장치 | |
US9060190B2 (en) | Iteratively locating a position corresponding to a desired seek time | |
US20130148940A1 (en) | Apparatus and methods for altering video playback speed | |
KR101396409B1 (ko) | 동영상 촬영장치 및 그 방법 | |
KR20030056783A (ko) | 비디오 하이라이트 자동 생성 방법 및 장치 | |
JP2007036666A (ja) | コンテンツ配信システム、クライアント及びクライアントプログラム | |
WO2005096301A1 (en) | System and method for supporting improved trick mode performance for disc-based multimedia content | |
JP2016526336A (ja) | 適応ビットレートストリーミングのための適応量子化を用いて複数のビデオストリームをエンコードするシステムおよび方法 | |
US20060126942A1 (en) | Method of and apparatus for retrieving movie image | |
KR101742419B1 (ko) | 영상 재생 제어 프로그램, 영상 재생 제어 방법, 영상 배신 서버, 송신 프로그램 및 송신 방법 | |
KR20190021250A (ko) | 트릭-플레이 재생 동안 오디오 콘텐트를 제공하기 위한 방법들 및 시스템들 | |
US8391688B2 (en) | Smooth rewind media playback | |
JPH08251540A (ja) | 映像要約方法 | |
TWI713979B (zh) | 多媒體影片逆向播放方法、多媒體播放裝置及電腦可讀取的紀錄媒體 | |
US20200371994A1 (en) | Methods and systems for providing file data for a media file | |
US7343088B2 (en) | Disc apparatus, disc recording method, disc playback method, recording medium, and program | |
JP4667356B2 (ja) | 映像表示装置及びその制御方法、プログラム、記録媒体 | |
KR101742420B1 (ko) | 영상 데이터 파일 생성 프로그램, 영상 데이터 파일 생성 방법 및 영상 데이터 파일 생성 장치 | |
US20090268811A1 (en) | Dynamic Image Reproducing Method And Device | |
US20060008248A1 (en) | Optimal buffering and scheduling strategy for smooth reverse in a DVD player or the like | |
KR100557858B1 (ko) | 엠펙 동영상에서의 주요 정지 영상 추출 장치 및 방법 | |
JPWO2014065165A1 (ja) | 情報処理装置、情報処理方法、およびプログラム、並びに情報処理システム | |
JP3982354B2 (ja) | 画像データ再生装置及び方法 | |
CN114245231B (zh) | 一种多视频同步跳转方法、装置、设备及可读存储介质 | |
CN113973225B (zh) | 视频倒播方法和装置,计算机存储介质和电子设备 |