用于分布式轉碼的內容自適應組塊的制作方法
【專利摘要】公開用于轉碼視頻剪輯的系統和方法。在一個實施方式中,計算機系統確定要將視頻剪輯分為N+1個連續組塊的N個幀,其中N是正整數,并且其中基于視頻剪輯的圖像內容、最小組塊大小、以及最大組塊大小來確定幀。將N+1個組塊中的每個提供給用于轉碼的相應的處理器,以及根據經轉碼的N+1個組塊生成經轉碼的視頻剪輯。
【專利說明】
用于分布式轉碼的內容自適應組塊
技術領域
[0001]本公開的方面和實施方式涉及數據處理,并且更具體地涉及數字內容的轉碼。
【背景技術】
[0002]轉碼是一種編碼向另一種編碼的直接數字-數字數據轉換。在將視頻剪輯向客戶端機器(例如,臺式計算機、智能電話、平板計算機等等)遞送時經常使用轉碼,以提供對各種屏幕分辨率、高寬比、文件格式、編解碼器等等的支持。
【發明內容】
[0003]下面給出本公開的各種方面的簡化概括,以便提供對這些方面的基本理解。該概括并非所有設想的方面的廣泛概述,并且既不旨在識別關鍵或重要的元件,也不是要記述這樣的方面的范圍。其目的是按照簡化形式給出本公開的一些概念,作為下面要給出的更詳細描述的前序。
[0004]在本公開的方面中,計算機系統確定要將視頻剪輯分為N+1個連續組塊的N個幀,其中N是正整數,并且其中基于視頻剪輯的圖像內容、最小組塊大小以及最大組塊大小來確定幀。在一個實施方式中,將N+1個組塊中的每個提供給用于轉碼的相應的處理器,并且然后通過經轉碼的N+1個組塊生成經轉碼的視頻剪輯。
【附圖說明】
[0005]根據下面給出的詳細描述以及根據本公開的各種方面的附圖和實施方式,能夠更完整地理解本公開的方面和實施方式,但是,本公開的實施方式不應用于將本公開限于特定方面或實施方式,而是僅用于說明和理解。
[0006]圖1描繪說明性視頻剪輯的部分以及視頻剪輯的說明性固定大小和內容自適應組塊。
[0007]圖2圖示出根據本公開一個實施方式的示例性系統架構。
[0008]圖3是轉碼管理器的一個實施方式的框圖。
[0009]圖4描繪用于視頻剪輯的分布式轉碼的方法的方面的流程圖。
[0010]圖5描繪用于依照其來確定將視頻分為組塊的邊界幀的方法的方面的流程圖。
[0011 ]圖6描繪根據本公開的方面和實施方式操作的說明性計算機系統的框圖。
【具體實施方式】
[0012]為了視頻剪輯的分布式轉碼而公開本公開的方面和實施方式。具體而言,本公開的實施方式能夠將視頻剪輯分為組塊,將組塊中的每個提供給相應的處理器(例如,相應的服務器的中央處理單元、多處理器計算機的相應的處理器等等)用于轉碼,以及根據轉碼組塊生成經轉碼的視頻剪輯。因為可通過處理器將組塊并行轉碼,所以可以用單個處理器轉碼整個視頻剪輯所需時間的一小部分將視頻剪輯轉碼。
[0013]但是,由于這樣的策略所致的問題在于,組塊會在它們的視頻代碼化復雜度方面廣泛變化。更具體而言,當跨越具有不同視頻代碼化復雜度的相鄰組塊來分割場景時,在組塊邊界處結果會是不連續的,當組塊邊界足夠大的時候,它對于經轉碼的視頻剪輯的觀看者而言是可見的。例如,在相鄰組塊之間的量化步長大小中存在不連續性,當它足夠大的時候,會導致在組塊邊界處峰值信噪比(PSNR)的可見的不連續性。
[0014]在使用組塊來轉碼視頻時的進一步的問題來自于視頻壓縮的性質。更具體而言,視頻壓縮利用不同類型的幀一一I幀以及非I幀,I幀包含完全指定的圖像,非I幀只存儲相鄰幀之間的變化(例如,被稱為P幀的預測圖片幀、被稱為B幀的雙預測圖片幀等等)。雖然組塊的首幀始終是I幀,但是組塊的末幀可以是I幀,也可以是非I幀。此外,I幀以及非I幀表現出不同的量化噪聲模式。因此,組塊的最末非I幀與下一個組塊的最初I幀之間的質量差異會導致被稱為I脈沖的可見閃爍,特別是在較低比特率編碼方案中(例如,較低比特率H.264/MPEG-4編碼等等)。
[0015]本公開的實施方式可通過使用內容自適應算法來減輕組塊的這些固有問題。更具體而言,并非簡單地將視頻剪輯分為固定大小(或者接近固定大小)的組塊,本公開的實施方式基于視頻剪輯的圖像內容(例如,視頻剪輯的幀的像素值、視頻剪輯的特征等等)、最小組塊大小、以及最大組塊大小來確定組塊邊界。這樣的途徑在組塊邊界處給出更少的偽象,從而為用戶帶來更好的觀看體驗。
[0016]在本公開的一些實施方式中,基于視頻剪輯的圖像內容確定組塊邊界包括識別視頻剪輯中的場景變化(例如,經由對諸如淡入或淡出的效果的提取、經由幀之間基于像素的差異、經由幀之間基于柱狀圖的差異、經由特征的統計分析等等)。通過識別場景變化,以及在可能的時候,將組塊邊界與場景變化對齊(align),縫合在一起的經轉碼的視頻剪輯的質量得到改善,同時,在與場景變化一致時,由于組塊所致的偽象對于觀看者而言通常不太明顯。
[0017]圖1描繪說明性視頻剪輯的部分,其包括按照(a)視頻剪輯的說明性固定大小組塊;以及(b)視頻剪輯的說明性內容自適應組塊來劃分的場景101-1至101-5。如圖1所示,當兩種組塊途徑都產生了五個組塊邊界時,與固定大小組塊相比,內容自適應組塊在場景內出現的邊界更少,從而得到更高質量的經轉碼的視頻剪輯。
[0018]在一些實施方式中,除了最小組塊大小和最大組塊大小之外,組塊邊界的確定還基于默認組塊大小。在一些這樣的實施方式中,默認組塊大小大于或等于最小組塊大小,且小于或等于最大組塊大小。
[0019]在一些實施方式中,當場景超過最大組塊大小時,在組塊邊界處場景的分割可以基于圖像內容。例如,組塊邊界可以基于場景中的獨立的幀的亮度的測量來確定(例如,在亮度的測量具有最小變化率的幀處分割場景等等),或者基于跨越場景的幀的運動的測量來確定(例如,在運動的測量具有最小變化率的幀處分割場景等等)。
[0020]根據一些實施方式,可以先將組塊解碼為中間的“通用”格式,然后從通用格式轉碼為目標編碼。此外在一些實施方式中,可將視頻剪輯轉碼為多個不同的編碼(例如,
H.264/MPEG-4、MPEG-2等等)。在一些這樣的實施方式中,將每個組塊轉碼為多個不同的編碼,且通過組裝對應的經轉碼的組塊來生成用于每個編碼的經轉碼的視頻剪輯(例如,通過由10^6-2編碼的組塊組裝10^6-2視頻剪輯、通過由!1.264/10^6-4編碼組塊組裝!1.264/MPEG-4視頻剪輯等等)。應當注意,在一些實施方式中,通用格式可以是未壓縮的,而在其他實施方式中,通用格式可以是壓縮的。
[0021]因此,本公開的方面和實施方式能夠提高經由并行和分布式處理被轉碼的視頻剪輯的質量。由于場景內組塊邊界的減少、長場景的智能分割(例如,通過將落入這樣的場景內的邊界處的亮度、運動等等的變化率最小化)、以及經轉碼的視頻剪輯中I幀數量的總體減少,當與簡單、固定大小的組塊策略相比時,經轉碼的視頻剪輯具有更少的明顯偽象。因此,本公開的方面和實施方式經由分布式和并行處理提供將視頻剪輯轉碼的速度優點,同時減輕由于這樣的處理所致的質量下降。
[0022]應當注意,雖然是在轉碼視頻剪輯的場境中公開方面和實施方式,但是本公開的技術也適合于轉碼其他類型的媒體項(例如,音頻剪輯、圖像等等)。例如,在視頻剪輯中場景變化的模擬可以是音頻剪輯中的靜默時間間隔。
[0023]圖2圖示出根據本公開一個實施方式的示例系統架構200。系統架構200包括服務器機器215、媒體儲存器220、web頁面儲存器230、客戶端機器202-1至202-M、以及連接到網絡204的轉碼服務器260-1至260-N,其中M和N是正整數。網絡204可以是公共網絡(例如,互聯網)、專用網絡(例如,局域網(LAN)或廣域網(WAN))、或者它們的組合。
[0024]客戶端機器202-1至202-M可以是個人計算機(PC)、膝上型計算機、移動電話、平板計算機、機頂盒、電視、視頻游戲機、數字助理或任何其他計算設備。客戶端機器202-1至202-M可以運行操作系統(未示出),所述操作系統管理客戶端機器202-1至202-M的硬件和軟件。瀏覽器(未示出)可以在一些客戶端機器上執行(例如,在客戶端機器的OS上)。瀏覽器可以是web瀏覽器,所述web瀏覽器通過導航到內容服務器240的web頁面(例如,使用超文本傳輸協議(HTTP))使得web瀏覽器可以訪問服務器機器215的內容服務器240所供應的內容。瀏覽器可以向內容服務器240發出命令和查詢,諸如上傳媒體項(例如,視頻剪輯、音頻剪輯、圖像等等)、搜索媒體項、共享媒體項等等的命令。
[0025]客戶端機器202-1至202-M中的一個或多個可包括與內容服務器240所提供的服務相關聯的應用。可以使用這樣的應用(app)的客戶端機器的示例包括移動電話、“智能”電視、平板計算機等等。應用或app可以在不訪問內容服務器240的web頁面的情況下訪問由內容服務器240所提供的內容、向內容服務器240發出命令等等。
[0026]通常,如果合適的話,在一個實施例中被描述為由內容服務器240執行的功能在其他實施例中也可以在客戶端機器202-1至202-M上被執行。此外,歸因于特定組件的功能性也可由不同的組件或者一起操作的多個組件來執行。內容服務器240也可通過適當的應用編程接口,作為向其他系統或設備所提供的服務被訪問,并因此不限于在網站中使用。
[0027]服務器機器215可以是機架服務器、路由器計算機、個人計算機、便攜式數字助理、移動電話、膝上型計算機、平板計算機、照相機、攝像機、上網本、臺式計算機、媒體中心、或上述的任何組合。服務器機器215包括內容服務器240和轉碼管理器250。在替選的實施例中,內容服務器240和轉碼管理器250可以在不同的機器上運行。
[0028]媒體儲存器220是持久儲存器,其能夠存儲媒體項(例如,視頻剪輯、音頻剪輯、圖像等等)以及數據結構,以標記、組織和索引媒體項。媒體儲存器220可由一個或多個儲存器設備托管,諸如主存儲器、基于磁或光儲存器的盤、磁帶或硬盤驅動、NAS、SAN等等。在一些實施方式中,媒體儲存器220可以是附接網絡的文件服務器,而在其他實施例中,媒體儲存器220可以是諸如面向對象的數據庫、關系數據庫等等的一些其他類型的持久儲存器,它們可由服務器機器215或者經由網絡204被耦合到服務器機器215的一個或多個不同機器托管。媒體儲存器220中存儲的媒體項可包括用戶生成的媒體項(由客戶端機器上傳)、以及來自服務提供者的媒體項(例如,新聞機構、出版商、圖書館等等)。在一些實施方式中,媒體儲存器220可由第三方服務提供,而在一些其他實施方式中,媒體儲存器220可由維護服務器機器215的相同實體維護。
[0029]web頁面儲存器230是持久儲存器,其能夠存儲向客戶端供應的web頁面和/或移動app文檔以及以標記、組織和索引web頁面和/或移動app文檔(例如,提供給移動app,用于在移動設備上呈現的文檔)的數據結構。web頁面儲存器230可以由一個或多個儲存器設備托管,諸如主存儲器、基于磁或光儲存器的盤、磁帶或硬盤驅動器、NAS、SAN等等。在一些實施方式中,web頁面儲存器230可以是附接網絡的文件服務器,而在其他實施例中,web頁面儲存器230可以是諸如面向對象的數據庫、關系數據庫等等的一些其他類型的持久儲存器,它們可由服務器機器215或者經由網絡204被耦合到服務器機器215的一個或多個不同機器托管。web頁面儲存器230中存儲的web頁面和/或移動app文檔可具有由用戶生成并由客戶端機器上傳、由新聞機構提供等等的嵌入式內容(例如,媒體儲存器220中存儲的媒體項、互聯網上其他地方存儲的媒體項等等)。
[0030]根據一些實施方式,轉碼管理器250能夠將上傳的媒體項存儲在媒體儲存器220中,在媒體儲存器220中索引媒體項,如下關于圖3至圖5所述的轉碼媒體項,以及執行圖像、視頻和音頻處理(例如,濾波、抗混疊、線性檢測、場景變化檢測、特征提取等等)。下面關于圖3詳細描述轉碼管理器250的實施方式。
[0031]轉碼服務器260-1至260-N中的每個是包括存儲器以及一個或多個處理器的機器,且能夠經由網絡204接收來自服務器機器215的一個或多個組塊,將組塊轉碼為一個或多個編碼,以及經由網絡204將經轉碼的組塊傳傳送回服務器機器。應當注意,在一些替選的實施方式中,可經由除了網絡204之外的網絡(例如,局域網、私有城域網或廣域網等等)將轉碼服務器260-1至260-N連接到服務器機器215。此外應當注意,其他實施方式可以采用并行多處理器機器來代替轉碼服務器260-1至260-N,并且一些這樣的實施方式可以使用并行多處理器機器來執行服務器機器215的一些或全部功能。
[0032]圖3是轉碼管理器的一個實施方式的框圖。轉碼管理器300可以與圖2的轉碼管理器250相同,并且可包括解復用器/復用器302、場景變化識別引擎304、組塊邊界判定引擎306、分割器/組裝器308、控制器309、以及數據儲存器310。根據特定實施方式,可將這些組件組合在一起,或者分離為進一步的組件。應當注意,在一些實施方式中,轉碼管理器300的各種組件可以在分離的機器上運行。
[0033]數據儲存器310可以與媒體儲存器220相同,或者與web頁面儲存器230相同,或者與這兩者相同,或者可以是不同的數據儲存器(例如,臨時緩沖器或永久數據儲存器),以保存一個或多個媒體項(例如,被存儲在媒體儲存器220中,要被嵌入在web頁面中,要被處理等等)、媒體項中的一個或多個組塊、在媒體儲存器220中用于索引媒體項的一個或多個數據結構、(例如,要存儲在web頁面儲存器230中,要被供應給客戶端等等的)一個或多個web頁面、在web頁面儲存器230中用于索引web頁面的一個或多個數據結構、或者這些數據的一些組合。數據儲存器310可以由一個或多個儲存器設備托管,諸如主存儲器、基于磁或光儲存器的盤、磁帶或硬盤驅動器等等。
[0034]解復用器/復用器302能夠將視頻剪輯的視頻部分和音頻部分分離,以及能夠將視頻數據和音頻數據組合進視頻剪輯內。下面關于圖4更詳細地描述解復用器/復用器302的一些操作。
[0035]場景變化識別引擎304能夠識別視頻剪輯中的場景變化(例如,經由對諸如淡入或淡出的效果的提取、經由幀之間基于像素的差異、經由幀之間基于柱狀圖的差異、經由特征的統計分析等等)。下面關于圖5更詳細地描述場景變化識別引擎304的一些操作。
[0036]組塊邊界判定引擎306能夠確定將視頻剪輯分為連續組塊所依照的視頻剪輯的幀。在一個方面中,組塊邊界判定引擎306基于視頻剪輯的圖像內容、最小組塊大小、以及最大組塊大小來確定組塊邊界幀。在一個實施方式中,除了最小組塊大小和最大組塊大小之夕卜,組塊邊界幀的確定還基于視頻剪輯中的場景變化以及默認組塊大小。下面關于圖4和圖5更詳細地描述組塊邊界判定引擎306的一些操作。
[0037]分割器/組裝器308能夠根據組塊邊界幀的集合將視頻剪輯分割為連續組塊,以及將組塊組合進視頻剪輯內。控制器309能夠將組塊提供給相應的轉碼服務器260用于轉碼,以及從轉碼服務器260接收經轉碼的組塊。在一些實施方式中,控制器309可包含用于將組塊分配給特定轉碼服務器的邏輯(例如,負載平衡邏輯等等)。下面關于圖4和圖5更詳細地描述分割器/組裝器308和控制器309的一些操作。
[0038]圖4描繪用于將視頻剪輯分為用于分布式轉碼的組塊的方法的方面的流程圖。圖4描繪用于視頻剪輯的分布式轉碼的方法的方面的流程圖。所述方法通過處理邏輯來執行,所述處理邏輯可包括硬件(電路、專用邏輯等等)、軟件(諸如,在通用計算機系統或專用機器上運行的軟件)、或兩者的組合。在一個實施方式中,所述方法通過圖2的服務器機器215來執行,而在一些其他實施方式中,圖4的一個或多個塊可通過另一個機器來執行。
[0039]為了簡化說明,將方法描繪并描述為一系列動作。但是,根據本公開的動作可以按照多種順序出現和/或同時出現,并且在本文中不呈現和描述其他動作。另外,不要求所有圖示出的動作來實現根據所公開的主題內容的方法。此外,本領域技術人員應當理解,可經由狀態圖或事件將所述方法替選地表現為一系列相關的狀態。此外,應當理解,本說明書中公開的方法能夠被存儲在制品中,以促進將這些方法運輸和傳遞到計算設備。如同本文所使用的,術語制品旨在涵蓋可通過任何計算機可讀設備或存儲介質訪問的計算機程序。
[0040]在塊401處,接收用戶上傳的視頻剪輯,并且在塊402處,將視頻剪輯存儲在媒體儲存器220中。根據一個方面,由內容服務器240來執行塊401和塊402。
[0041]在塊403處,將視頻剪輯的視頻部分和音頻部分分離。根據一個方面,由轉碼管理器250的解復用器/復用器302來執行塊403。
[0042]在一些實施方式中,可以先將視頻剪輯的視頻部分解碼為中間“通用”格式,下面在塊406至塊408處可以通過“通用”格式獲得一個或多個目標編碼。在一些這樣的實施方式中,通用格式可以是未壓縮的,而在一些其他實施方式中,通用格式可以是壓縮的。應當注意,在一些方面中,解碼為通用格式可以作為塊403的一部分被執行,而在一些其他方面中,解碼可以替代性地在圖4的方法的一些其他點處出現(例如,在圖4中未描繪的單獨的塊,作為另一個塊的一部分,諸如塊404至塊410的其中一個塊,等等),或者在圖5的方法中的一些點處出現,圖5的方法由轉碼服務器260執行并在下文描述。
[0043]在塊404處,基于視頻剪輯的圖像內容、最小組塊大小、以及最大組塊大小來確定用于將視頻部分分為組塊的組塊邊界幀。下面關于圖5詳細描述用于執行塊404的方法的實施方式。
[0044]在塊405處,根據在塊404處確定的組塊邊界幀將視頻剪輯分割為連續組塊。根據一個方面,由轉碼管理器250的分割器/組裝器308來執行塊405。應當注意,當視頻剪輯已經被解碼為中間“通用”格式時,組塊可通過將通用格式視頻分割為通用格式組塊來獲得。
[0045]在塊406處,將組塊提供給轉碼服務器260(例如,將第一組塊提供給轉碼服務器260-1,將第二組塊提供給轉碼服務器260-2等等)用于轉碼。根據一個方面,通過轉碼管理器250的控制器309來執行塊406。在一些實施方式中,控制器309可包含按照智能方式將組塊分配給特定轉碼服務器的邏輯(例如,負載平衡邏輯等等)。
[0046]在塊407處,從轉碼服務器260接收經轉碼的組塊。根據一個方面,通過控制器309來執行塊407。根據一些實施方式,由多個轉碼服務器260并行地轉碼組塊,并且一旦轉碼完成,每個轉碼服務器將它的經轉碼的組塊提供給控制器309。應當注意,在一些實施方式中,轉碼服務器260可直接地或者經由中間通用格式將每個組塊轉碼為多個不同的編碼(例如,
H.264/MPEG-4、MPEG-2等等),并將多個經轉碼的組塊提供給控制器309。應當進一步注意,在一些替選的實施方式中,轉碼服務器260還可以負責將組塊解碼為通用格式,而不是如上所述,在分割為組塊之前將整個視頻剪輯解碼為通用格式。
[0047]在塊408處,根據經轉碼的組塊生成一個或多個經轉碼的視頻。更具體而言,在將組塊轉碼為單個編碼時,根據經轉碼的組塊生成單個經轉碼的視頻;在將組塊轉碼為多個編碼時(例如,通用格式、MPEG-2、H.264/MPEG-4等等),可通過組裝被轉碼為第一編碼的組塊來生成第一經轉碼的視頻,通過組裝被轉碼為第二編碼的組塊來生成第二經轉碼的視頻,等等。根據一個方面,由控制器309來執行塊408。
[0048]在塊409處,根據在塊408處生成的每個經轉碼的視頻以及根據在塊403獲得的音頻來生成相應的視頻剪輯。換言之,在單個編碼的情況下,根據音頻以及在塊408處生成的經轉碼的視頻來生成單個經轉碼的視頻剪輯,而在多個編碼的情況下,根據音頻以及在塊408處生成的第一經轉碼的視頻來生成第一經轉碼的視頻剪輯,根據音頻以及在塊408處生成的第二經轉碼的視頻來生成第二經轉碼的視頻剪輯,等等。根據一個方面,由轉碼管理器250的解復用器/復用器302來執行塊409。
[0049]在塊410處,將在塊409處生成的一個或多個經轉碼的視頻剪輯存儲在媒體儲存器220中。應當注意,當視頻剪輯已經被解碼為通用格式時,也可將視頻剪輯的該版本存儲在媒體儲存器220中。在一些實施方式中,可以在塊410處將通用格式視頻剪輯存儲在媒體儲存器220中,而在一些其他實施方式中,可以在該方法的更早時間點將通用格式視頻剪輯存儲在媒體儲存器220中(例如,緊接著在上述塊403處解碼為通用格式等等)ο根據一個方面,由控制器309來執行塊410。
[0050]應當注意,雖然在圖4的流程圖中由用戶來上傳要轉碼的視頻剪輯,但是在一些其他實施方式中,可通過一些其他方式來獲得要轉碼的視頻剪輯,或者,要轉碼的視頻剪輯已經存儲在媒體儲存器220中(例如,媒體公司所提供的視頻庫等等)。應當進一步注意,雖然在圖4的流程圖中當服務器機器215接收到每個上傳的視頻剪輯時將其轉碼,但是在一些其他實施方式中,上傳的視頻剪輯的轉碼可以替代性地在以后的時間出現(例如,夜間執行的批量作業等等)。
[0051]圖5描繪用于確定要將視頻分為組塊的邊界幀的方法的方面的流程圖。所述方法由處理邏輯執行,所述處理邏輯可包括硬件(電路、專用邏輯等等)、軟件(諸如,在通用計算機系統或專用機器上運行的軟件)、或兩者的組合。在一個實施方式中,所述方法通過圖2的服務器機器215執行,而在一些其他實施方式中,圖5的一個或多個塊可通過另一個機器來執行。根據一個方面,由控制器309來執行塊501。
[0052]在塊501處,識別視頻中的一個或多個場景變化。在一些實施方式中,場景變化識別可包括對諸如淡入或淡出的效果的提取,而在一些其他實施方式中,場景變化識別可包括計算連續幀之間像素值的差異并且將所述差異的函數(例如,對于所有像素差異的總和等等)與閾值相比較,而在一些其他實施方式中,場景變化識別可包括構造幀中像素值的柱狀圖,對于連續幀計算柱狀圖之間的差異,并且將這些差異的函數(例如,對應的柱狀圖直條之間差異的總和等等)與閾值相比較,而在其他實施方式中,場景變化識別可包括對從幀提取的特征的統計分析,而在其他實施方式中,可通過一些其他方式來識別場景變化。根據一個方面,由轉碼管理器250的場景變化識別引擎304來執行塊501。
[0053]在塊502處,將變量S初始化為空集,并且在塊503處,將變量chunkStart初始化為零。在塊504處,將變量chunkEnd的值設置為chunkStart與默認組塊大小(defaultChunkSize)的和。在一些實施方式中,默認組塊大小可以處在最小組塊大小與最大組塊大小之間,含最小組塊大小和最大組塊大小(即,大于或等于最小組塊大小且小于或等于最大組塊大小)。
[0054]在塊505處,將變量P設置為chunkEnd前面第一場景變化的幀的索引,并將變量q設置為chunkEnd后面第一場景變化的幀的索引。塊506將(q-chunkStart)與最大組塊大小maxChunkSize相比較;如果(q-chunkStart)小于或等于maxChunkSize,則執行繼續進行到塊507,否則執行在塊508處繼續。
[0055]在塊507處,將變量chunkEnd的值設置為變量q的值。執行塊507之后,執行在塊510處繼續。
[0056]塊508將(p-chunkStart)與最小組塊大小minChunkSize相比較;如果(p-chunkStart)大于或等于minChunkSize,則執行繼續進行到塊509,否則執行在塊510處繼續。
[0057]在塊509處,將變量chunkEnd的值設置為變量P的值。在塊510,將與組塊邊界幀相對應的chunkEnd的值添加到集合S。
[0058]塊511基于變量chunkEnd是否等于視頻的末幀的索引來分岔;如果不等于,則執行在塊512處繼續,否則執行繼續進行到塊513。在塊512處,將變量chunkStart的值設置為chunkEnd+Ι,并且在執行塊512之后,執行回到塊504處繼續。在塊513處,將包含組塊邊界幀的指數的集合S返回。
[0059]應當注意,雖然在圖5的實施方式中將組塊邊界幀限定為組塊的末幀,但是通過對圖5的方法進行適當的變化,在一些其他實施方式中,可將組塊邊界幀替代性地限定為組塊的首幀。此外,在一些其他實施方式中,組塊邊界幀的確定可以基于最小組塊大小和最大組塊大小,但是除了最小大小和最大大小之外,不基于默認組塊大小。
[0060]應當進一步注意,在一些其他實施方式中,可將圖5的實施方式修改為處理場景超過最大組塊大小的情況。在一些這樣的實施方式中,在組塊邊界處對場景的分割可以基于圖像內容;例如,可以基于對場景的獨立幀的亮度的測量來確定組塊邊界(例如,在亮度的測量具有最小變化率的幀處分割場景等等),或者基于跨越場景的幀的運動的測量來確定組塊邊界(例如,在運動的測量具有最小變化率的幀處分割場景等等),或者基于以上兩者,而在其他實施例中,可以基于根據場景中幀的像素值所獲得的一些其他信息來確定超過最大大小的場景的邊界。
[0061]應當進一步注意,雖然是在轉碼視頻剪輯的場境中公開圖4和圖5的實施方式,但是在這些實施方式中采用的技術可以容易地適合于轉碼其他類型的媒體項(例如,音頻剪輯、圖像等等)。例如,在音頻剪輯中幀的模擬可以是脈沖代碼調制(PCM)的聲音樣本,而視頻中場景變化的模擬可以是音頻剪輯中的靜默時間間隔。
[0062]圖6示出示例性計算機系統,其中可以執行指令集,用于致使機器執行本文討論的方法論中的任何一個或多個。在替選的實施方式中,可以在LAN、內聯網、外聯網或互聯網中將機器連接(例如,聯網)到其他機器。機器可以在客戶端-服務器網絡環境中作為服務器機器操作。機器可以是個人計算機(PC)、機頂盒(STB)、服務器、網絡路由器、開關或網橋,或者是能夠執行指定將要由機器采取的動作的指令集(按順序或相反)的任何機器。進一步地,雖然僅圖示出單個機器,但是術語“機器”可用于包括獨立或聯合執行指令集(或多個集),以執行本文討論的方法論的任何一個或多個的機器的任何集合。
[0063]示例性計算機系統600包括處理系統(處理器)602、主存儲器604(例如,只讀存儲器(ROM)、閃速存儲器、動態隨機存取存儲器(DRAM)(諸如,同步DRAM(SDRAM))、靜態存儲器606(例如,閃速存儲器、靜態隨機存取存儲器(SRAM))、以及數據儲存器設備616,它們經由總線608相互通信。
[0064]處理器602表示諸如微處理器、中央處理單元等等的一個或多個通用處理設備。更具體而言,處理器602可以是復雜指令集計算(CISC)微處理器、精簡指令集計算(RISC)微處理器、超長指令字(VLIW)微處理器、或者實現其他指令集的處理器、或者實現指令集組合的處理器。處理器602也可以是一個或多個專用處理設備,諸如,專用集成電路(ASIC)、現場可編程門陣列(FPGA)、數字信號處理器(DSP)、網絡處理器等等。處理器602被配置為執行用于執行本文討論的操作和步驟的指令626,。
[0065]計算機系統600可進一步包括網絡接口設備622。計算機系統600可包括視頻顯示單元610(例如,液晶顯示器(IXD)或陰極射線管(CRT))、字母數字輸入設備612(例如,鍵盤)、光標控制設備614(例如,鼠標)、以及信號生成設備620(例如,揚聲器)。
[0066]數據儲存器設備616可包括計算機可讀介質624,上面存儲具體實施本文所述方法論或功能中的任何一個或多個的一個或多個指令集626(例如,由轉碼管理器225執行的指令等等)。在由計算機系統600執行期間,指令626可以完全或者至少部分地駐留在主存儲器604和/或處理器602內,主存儲器604和處理器602也構成計算機可讀介質。此外,可經由網絡接口設備622通過網絡進一步傳送或接收指令626。
[0067]雖然在示例性實施例中將計算機可讀存儲介質624示出為單個介質,但是術語“計算機可讀存儲介質”應當用于包括存儲一個或多個指令集的單個介質或多個介質(例如,集中式或分布式數據庫和/或相關聯的高速緩存和服務器)。術語“計算機可讀存儲介質”應當用于包括能夠存儲、編碼或承載通過機器執行并致使機器執行本公開的方法論中的任何一個或多個的指令集的任何介質。因此,術語“計算機可讀存儲介質”應當用于包括但不限于固態存儲器、光介質以及磁介質。
[0068]在以上描述中給出多個細節。但是對于得益于本公開的本領域技術人員而言顯而易見的是,沒有這些具體細節也可以實踐實施例。在一些實例中,按照框圖的形式而不是通過細節示出公知的結構和設備,以免混淆描述。
[0069]說明書有些部分按照對于計算機存儲器中的數據比特的操作的算法和符號表示來呈現。這些算法描述和表示是數據處理領域的普通技術人員用來將他們工作的實質最有效地傳達給其他技術人員的手段。在此通常將算法視為帶來期望結果的步驟的自洽序列。步驟是要求對物理量的物理操縱的步驟。通常,雖然并非必要,但是這些量采取能夠被存儲、傳遞、組合、比較或操縱的電信號或磁信號的形式。在原理上由于公共使用的原因,已經證明將這些信號稱為比特、值、元素、符號、字符、術語、數字等等有時候是方便的。
[0070]但是應當牢記,所有這些術語和類似術語都與適當的物理量相關聯,并且僅僅是應用于這些量的方便標簽。除非從以上討論明確另外聲明,應當理解在整個說明書中,利用諸如“確定”、“提供”、“生成”等術語的討論來指計算機系統或類似電子計算設備的動作和處理,計算機系統操縱在計算機系統的寄存器和存儲器內被表示為物理(例如,電子)量的數據并將其變換成類似地被表示為計算機系統存儲器或寄存器或其他這樣的信息儲存器、傳輸或顯示設備中的物理量的其他數據。
[0071]此外,本公開的方面和實施方式涉及用于執行本文中的操作的裝置。該裝置可以專門為所需目的而構造,或者它可以包括通過計算機中存儲的計算機程序選擇性被激活或重新配置的通用計算機。這樣的計算機程序可以被存儲在計算機可讀存儲介質中,諸如但不限于任何類型的磁盤,包括軟盤、光盤、⑶-R0M、以及磁光盤、只讀存儲器(R0M)、隨機存取存儲器(RAM)、EPR0M、EEPR0M、磁存儲卡或光存儲卡、或者適合于存儲電子指令的任何類型介質。
[0072]本文給出的算法和顯示并不內在地涉及任何特定的計算機或其他裝置。根據本文的教導,可通過程序使用各種通用系統,或者可以證明,構造更加專用的裝置來執行所需的方法步驟是方便的。對于多種這些系統而言所需的結構將從以下描述出現。此外,本公開并非參照任何特定的編程語言來描述。應當理解,可以使用各種編程語言來實現本文所述本公開的教導。
[0073]應當理解,以上描述目的是說明性而非限制性的。通過閱讀和理解以上描述,對于本領域技術人員而言很多其他實施例將顯而易見。此外,作為替代或者除了媒體剪輯之外,可將上述技術應用于其他類型的數據(例如,圖像、音頻剪輯、文本文檔、web頁面等等)。因此,應當參照所附權利要求,連同賦予這些權利要求的等同物的完整范圍一起來確定本公開的范圍。
【主權項】
1.一種將視頻剪輯轉碼的方法,所述方法包括: 由計算機系統確定要將所述視頻剪輯分為N+1個連續組塊的所述視頻剪輯的N個幀,其中N是正整數,并且其中所述確定是基于所述視頻剪輯的圖像內容、最小組塊大小、以及最大組塊大小; 將所述N+1個組塊中的每個提供給相應處理器,用于轉碼;以及 根據經轉碼的N+1個組塊,生成經轉碼的視頻剪輯。2.根據權利要求1所述的方法,其中確定N個幀進一步基于默認組塊大小,所述默認組塊大小大于或等于所述最小組塊大小,且小于或等于所述最大組塊大小。3.根據權利要求1所述的方法,其中所述N個幀中的至少一個是基于所述視頻剪輯中的場景變化來確定的。4.根據權利要求3所述的方法,進一步包括:識別所述視頻剪輯中的一個或多個場景變化。5.根據權利要求1所述的方法,其中所述相應處理器中的每個處理器與相應計算機系統相關聯。6.根據權利要求1所述的方法,其中所述視頻剪輯包括超過所述最大組塊大小的場景,并且其中,所述場景內的幀是基于對于所述場景中的至少兩個幀的亮度的測量來確定的。7.根據權利要求6所述的方法,其中所述幀出現在所述場景中所述亮度的測量具有最小變化率的點處。8.一種裝置,包括: 用于存儲視頻剪輯的存儲器;以及 處理器,用于: 確定要將所述視頻剪輯分為N+1個連續組塊的所述視頻剪輯的N個幀,其中N是正整數,并且其中所述確定是基于所述視頻剪輯的圖像內容、最小組塊大小、以及最大組塊大小; 將所述N+1個組塊中的每個提供給相應處理器,用于轉碼為第一編碼以及轉碼為第二編碼; 根據被轉碼為所述第一編碼的所述N+1個組塊,來生成第一視頻剪輯;以及 根據被轉碼為所述第二編碼的所述N+1個組塊,來生成第二視頻剪輯。9.根據權利要求8所述的裝置,其中所述N+1個組塊通過所述相應處理器被并行轉碼。10.根據權利要求8所述的裝置,其中所述N個幀中的至少一個是基于所述視頻剪輯中的場景變化來確定。11.根據權利要求10所述的裝置,其中所述處理器進一步用于識別所述視頻剪輯中的一個或多個場景變化。12.根據權利要求8所述的裝置,其中確定N個幀進一步基于默認組塊大小,所述默認組塊大小大于或等于所述最小組塊大小,且小于或等于所述最大組塊大小。13.根據權利要求8所述的裝置,其中所述視頻剪輯包括超過所述最大組塊大小的場景,并且其中,所述場景內的幀是基于對于所述場景中的至少兩個幀的運動的測量來確定的。14.根據權利要求13所述的裝置,其中所述幀出現在所述場景中所述運動的測量具有最小變化率的點處。15.—種其中存儲指令的非暫時性計算機可讀存儲介質,所述指令在被執行時致使計算機系統執行操作,所述操作包括: 由計算機系統確定要將所述視頻剪輯分為N+1個連續組塊的所述視頻剪輯的N個幀,其中N是正整數,并且其中所述確定是基于所述視頻剪輯的圖像內容、最小組塊大小、以及最大組塊大小; 將所述N+1個組塊的每個提供給相應處理器,用于轉碼;以及 根據經轉碼的N+1個組塊,生成經轉碼的視頻剪輯。16.根據權利要求15所述的非暫時性計算機可讀存儲介質,其中所述N個幀中的至少一個是基于所述視頻剪輯中的場景變化來確定的。17.根據權利要求16所述的非暫時性計算機可讀存儲介質,其中所述操作進一步包括:識別所述視頻剪輯中的一個或多個場景變化。18.根據權利要求15所述的非暫時性計算機可讀存儲介質,其中所述視頻剪輯包括超過所述最大組塊大小的場景,并且其中,所述場景內的幀是基于對于所述場景中的至少兩個幀的亮度的測量來確定的。19.根據權利要求18所述的非暫時性計算機可讀存儲介質,其中所述幀出現在所述場景中所述亮度的測量具有最小變化率的點處。20.根據權利要求15所述的非暫時性計算機可讀存儲介質,其中所述視頻剪輯包括超過所述最大組塊大小的場景,并且其中,所述場景內的幀是基于對于所述場景中的至少兩個幀的運動的測量來確定的。21.根據權利要求20所述的非暫時性計算機可讀存儲介質,其中所述幀出現在所述場景中所述運動的測量具有最小變化率的點處。
【文檔編號】H04N21/44GK105874813SQ201480071787
【公開日】2016年8月17日
【申請日】2014年12月30日
【發明人】薩姆·約翰, 琴尚郁, 史蒂文·本汀, 蒂埃里·富屈, 林耀中
【申請人】谷歌公司