本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別是一種視頻剪輯方法及裝置。
背景技術(shù):
隨著多媒體編碼、計算機多媒體處理和網(wǎng)絡(luò)傳輸技術(shù)的飛速發(fā)展,互聯(lián)網(wǎng)正逐漸成為一個巨大的視頻倉庫,人們越來越多地青睞于通過互聯(lián)網(wǎng)實時查詢、欣賞豐富多彩的視頻信息。此外,人們也經(jīng)常通過其他能夠存儲和播放視頻的設(shè)備(如智能手機、平板電腦、車載設(shè)備等)欣賞相關(guān)視頻。
在欣賞互聯(lián)網(wǎng)視頻的同時,人們也越來越多地開始搜索與自己的學(xué)習(xí)、工作、興趣等相關(guān)的視頻資源,并將相關(guān)資源存儲到本地設(shè)備保存下來。但是,用戶保存的某個視頻中,往往只有某一部分或幾個片段是其所關(guān)心的,而其余部分對用戶而言往往是無用的。
因此,用戶需要從已有的視頻中截取需要的片段,即需要對視頻進(jìn)行剪輯處理,分離出用戶需要的視頻片段。然而,目前的視頻剪輯工作在很大程度上還依賴于人工處理,需要剪輯人員手動操作選擇視頻片段進(jìn)行剪切,顯然工作量大且很繁瑣。
技術(shù)實現(xiàn)要素:
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的視頻剪輯方法及相應(yīng)的裝置。
依據(jù)本發(fā)明的一方面,提供了一種視頻剪輯方法,包括:
接收包含剪輯起點和剪輯終點的視頻剪輯請求;
在待剪輯視頻對應(yīng)的多個畫面組GOP文件中,確定所述剪輯起點與所述剪輯終點間的備選GOP文件,其中,各個GOP文件中包含多個視頻幀;
判斷所述剪輯起點對應(yīng)的起始視頻幀是否為關(guān)鍵幀;
若否,則在所述備選GOP文件中確定所述剪輯起點所在的起始GOP文件,并對所述起始GOP文件中所述起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼,得到編碼后的GOP文件;
將所述備選GOP文件中的所述起始GOP文件替換為所述編碼后的GOP文件,得到剪輯視頻碼流。
可選地,對所述起始GOP文件中所述起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼,包括:
對所述起始GOP文件進(jìn)行解碼得到圖像文件;
基于解碼得到的所述圖像文件,對所述起始GOP文件中所述起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼。
可選地,基于解碼得到的所述圖像文件,對所述起始GOP文件中所述起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼,包括:
將解碼得到的所述圖像文件中所述起始視頻幀的圖像編碼成關(guān)鍵幀;
基于編碼成的所述關(guān)鍵幀,對所述起始視頻幀之后的所有視頻幀的圖像進(jìn)行編碼。
可選地,將所述備選GOP文件中的所述起始GOP文件替換為所述編碼后的GOP文件之后,所述方法還包括:
在所述備選GOP文件中確定所述剪輯終點所在的結(jié)束GOP文件;
判斷所述剪輯終點對應(yīng)的結(jié)束視頻幀是否為關(guān)鍵幀;
若是,則將所述備選GOP文件中的所述結(jié)束GOP文件替換為所述結(jié)束視頻幀,得到所述剪輯視頻碼流。
可選地,在判斷出所述剪輯終點對應(yīng)的結(jié)束視頻幀不是關(guān)鍵幀時,所述方法還包括:
對所述結(jié)束GOP文件中所述結(jié)束視頻幀及之前的所有視頻幀進(jìn)行編碼處理,得到處理后的GOP文件;
將所述備選GOP文件中的所述結(jié)束GOP文件替換為所述處理后的GOP文件,得到所述剪輯視頻碼流。
可選地,通過以下方式生成所述視頻剪輯請求,包括:
進(jìn)入待剪輯視頻的播放器界面;
獲取用戶在所述播放器界面設(shè)置的至少一對剪輯起點和剪輯終點,生成包含所述剪輯起點和剪輯終點的視頻剪輯請求。
可選地,所述進(jìn)入待剪輯視頻的播放器界面,包括:
獲取用戶在剪輯操作頁面的輸入框中輸入的所述待剪輯視頻的播放地址;
在檢測到用戶點擊所述剪輯操作頁面中的剪輯按鈕時,根據(jù)所述播放地址從所述剪輯操作頁面跳轉(zhuǎn)到所述待剪輯視頻的播放器界面。
可選地,在得到剪輯視頻碼流之后,所述方法還包括:
獲取轉(zhuǎn)碼信息,根據(jù)所述轉(zhuǎn)碼信息對所述剪輯視頻碼流進(jìn)行轉(zhuǎn)碼處理,得到轉(zhuǎn)碼處理后的剪輯視頻碼流。
可選地,根據(jù)所述轉(zhuǎn)碼信息對所述剪輯視頻碼流進(jìn)行轉(zhuǎn)碼處理,包括:
將所述轉(zhuǎn)碼信息以及所述剪輯視頻碼流分配給至少一個轉(zhuǎn)碼服務(wù)器,由所述至少一個轉(zhuǎn)碼服務(wù)器根據(jù)所述轉(zhuǎn)碼信息對所述剪輯視頻碼流進(jìn)行轉(zhuǎn)碼處理。
可選地,在得到轉(zhuǎn)碼處理后的剪輯視頻碼流之后,所述方法還包括:
對所述轉(zhuǎn)碼處理后的剪輯視頻碼流進(jìn)行封裝,得到剪輯視頻文件。
可選地,在判斷出所述剪輯起點對應(yīng)的起始視頻幀為關(guān)鍵幀時,所述方法還包括:
將所述備選GOP文件中的所述起始GOP文件替換為所述起始視頻幀,得到所述剪輯視頻碼流。
依據(jù)本發(fā)明的另一方面,還提供了一種視頻剪輯裝置,包括:
請求接收模塊,適于接收包含剪輯起點和剪輯終點的視頻剪輯請求;
確定模塊,適于在待剪輯視頻對應(yīng)的多個畫面組GOP文件中,確定所述剪輯起點與所述剪輯終點間的備選GOP文件,其中,各個GOP文件中包含多個視頻幀;
判斷模塊,適于判斷所述剪輯起點對應(yīng)的起始視頻幀是否為關(guān)鍵幀;
編碼模塊,適于若所述判斷模塊判斷所述剪輯起點對應(yīng)的起始視頻幀不是關(guān)鍵幀,則在所述備選GOP文件中確定所述剪輯起點所在的起始GOP文件,并對所述起始GOP文件中所述起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼,得到編碼后的GOP文件;
處理模塊,適于將所述備選GOP文件中的所述起始GOP文件替換為所述編碼后的GOP文件,得到剪輯視頻碼流。
可選地,所述編碼模塊還適于:
對所述起始GOP文件進(jìn)行解碼得到圖像文件;
基于解碼得到的所述圖像文件,對所述起始GOP文件中所述起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼。
可選地,所述編碼模塊還適于:
將解碼得到的所述圖像文件中所述起始視頻幀的圖像編碼成關(guān)鍵幀;
基于編碼成的所述關(guān)鍵幀,對所述起始視頻幀之后的所有視頻幀的圖像進(jìn)行編碼。
可選地,所述處理模塊還適于:
在將所述備選GOP文件中的所述起始GOP文件替換為所述編碼后的GOP文件之后,在所述備選GOP文件中確定所述剪輯終點所在的結(jié)束GOP文件;
判斷所述剪輯終點對應(yīng)的結(jié)束視頻幀是否為關(guān)鍵幀;
若是,則將所述備選GOP文件中的所述結(jié)束GOP文件替換為所述結(jié)束視頻幀,得到所述剪輯視頻碼流。
可選地,所述處理模塊還適于:
在判斷出所述剪輯終點對應(yīng)的結(jié)束視頻幀不是關(guān)鍵幀時,對所述結(jié)束GOP文件中所述結(jié)束視頻幀及之前的所有視頻幀進(jìn)行編碼處理,得到處理后的GOP文件;
將所述備選GOP文件中的所述結(jié)束GOP文件替換為所述處理后的GOP文件,得到所述剪輯視頻碼流。
可選地,所述裝置還包括:
請求生成模塊,適于進(jìn)入待剪輯視頻的播放器界面;獲取用戶在所述播放器界面設(shè)置的至少一對剪輯起點和剪輯終點,生成包含所述剪輯起點和剪輯終點的視頻剪輯請求。
可選地,所述請求生成模塊還適于:
獲取用戶在剪輯操作頁面的輸入框中輸入的所述待剪輯視頻的播放地址;
在檢測到用戶點擊所述剪輯操作頁面中的剪輯按鈕時,根據(jù)所述播放地址從所述剪輯操作頁面跳轉(zhuǎn)到所述待剪輯視頻的播放器界面。
可選地,所述裝置還包括:
轉(zhuǎn)碼模塊,適于在所述處理模塊得到剪輯視頻碼流之后,獲取轉(zhuǎn)碼信息,根據(jù)所述轉(zhuǎn)碼信息對所述剪輯視頻碼流進(jìn)行轉(zhuǎn)碼處理,得到轉(zhuǎn)碼處理后的剪輯視頻碼流。
可選地,所述轉(zhuǎn)碼模塊還適于:
將所述轉(zhuǎn)碼信息以及所述剪輯視頻碼流分配給至少一個轉(zhuǎn)碼服務(wù)器,由所述至少一個轉(zhuǎn)碼服務(wù)器根據(jù)所述轉(zhuǎn)碼信息對所述剪輯視頻碼流進(jìn)行轉(zhuǎn)碼處理。
可選地,所述裝置還包括:
封裝模塊,適于在所述轉(zhuǎn)碼模塊得到轉(zhuǎn)碼處理后的剪輯視頻碼流之后,對所述轉(zhuǎn)碼處理后的剪輯視頻碼流進(jìn)行封裝,得到剪輯視頻文件。
可選地,所述處理模塊還適于:
在所述判斷模塊判斷出所述剪輯起點對應(yīng)的起始視頻幀為關(guān)鍵幀時,將所述備選GOP文件中的所述起始GOP文件替換為所述起始視頻幀,得到所述剪輯視頻碼流。
在本發(fā)明實施例中,當(dāng)接收到包含剪輯起點和剪輯終點的視頻剪輯請求時,在待剪輯視頻對應(yīng)的多個GOP文件中,確定剪輯起點與剪輯終點間的備選GOP文件,這里的各個GOP文件包含多個視頻幀,并且剪輯起點和剪輯終點可以是待剪輯視頻上的任意時間點。進(jìn)一步,判斷剪輯起點對應(yīng)的起始視頻幀是否為關(guān)鍵幀,若判斷出起始視頻幀不是關(guān)鍵幀,則在備選GOP文件中確定剪輯起點所在的起始GOP文件,并對起始GOP文件中起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼,得到編碼后的GOP文件;之后將備選GOP文件中的起始GOP文件替換為編碼后的GOP文件,得到剪輯視頻碼流。由于編碼后的GOP文件的起始幀為關(guān)鍵幀,這樣就保證后續(xù)能夠?qū)糨嬕曨l碼流進(jìn)行正常解碼并播放。由此可見,本發(fā)明實施例在進(jìn)行視頻剪輯時,對于剪輯起點和剪輯終點沒有限制,可以是待剪輯視頻上的任意時間點,無需人工手動操作去選擇特定的時間點或視頻關(guān)鍵幀,能夠?qū)崿F(xiàn)靈活、快速地進(jìn)行視頻剪輯的目的。并且,本發(fā)明實施例可以精確到剪輯起點對應(yīng)的起始視頻幀,從而實現(xiàn)高精度的視頻剪輯。進(jìn)一步地,本發(fā)明實施例只需要將備選GOP文件中的起始GOP文件替換為編碼后的GOP文件就可以得到剪輯視頻碼流,對于備選GOP文件中的其他GOP文件無需進(jìn)行解碼和編碼,只需要進(jìn)行簡單高效的拷貝操作就可以。由于視頻的編碼過程一般是有損的,這樣就可以實現(xiàn)無損,保證了視頻的質(zhì)量;由于視頻的解碼編碼過程是計算復(fù)雜的操作,而拷貝只需簡單操作即可快速完成,這樣保證了高效性,節(jié)省時間。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。
根據(jù)下文結(jié)合附圖對本發(fā)明具體實施例的詳細(xì)描述,本領(lǐng)域技術(shù)人員將會更加明了本發(fā)明的上述以及其他目的、優(yōu)點和特征。
附圖說明
通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了一種由I、P、B三種幀組成的GOP的示意圖;
圖2示出了根據(jù)本發(fā)明一實施例的視頻剪輯方法的流程圖;
圖3示出了根據(jù)本發(fā)明一實施例的剪輯起點和剪輯終點的示意圖;
圖4示出了根據(jù)本發(fā)明另一實施例的視頻剪輯方法的流程圖;
圖5示出了根據(jù)本發(fā)明一實施例的剪輯視頻碼流的示意圖;
圖6示出了根據(jù)本發(fā)明一實施例的視頻剪輯裝置的結(jié)構(gòu)示意圖;以及
圖7示出了根據(jù)本發(fā)明另一實施例的視頻剪輯裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
在介紹本發(fā)明實施例之前,首先介紹以下幾個技術(shù)術(shù)語。
幀,是影像動畫中最小單位的單幅影像畫面,相當(dāng)于電影膠片上的每一格鏡頭,一幀就是一副靜止的畫面,連續(xù)的幀就形成動畫。
關(guān)鍵幀,指角色或者物體運動或變化中的關(guān)鍵動作所處的那一幀。關(guān)鍵幀與關(guān)鍵幀之間的動畫可以由軟件來創(chuàng)建,叫做過渡幀或者中間幀。
視頻編碼按照GOP(Group of Pictures,畫面組)進(jìn)行編碼,一個GOP文件就是一組連續(xù)的畫面(即幀),每一個GOP文件以關(guān)鍵幀開始,GOP之間是沒有聯(lián)系的。
在壓縮編碼中,將畫面可以分為I、P、B三種幀,I是內(nèi)部編碼幀(即關(guān)鍵幀),P是前向預(yù)測幀,B是雙向內(nèi)插幀。簡單地講,I幀是一個完整的畫面,而P幀和B幀記錄的是相對于I幀的變化,沒有I幀,P幀和B幀就無法解碼。圖1示意了一種由I、P、B三種幀組成的GOP,多個GOP文件組成了視頻幀序列或視頻碼流。
其中,I幀的特點為:
1)它是一個全幀壓縮編碼幀,它將全幀圖像信息進(jìn)行壓縮編碼及傳輸;
2)解碼時僅用I幀的數(shù)據(jù)就可以重構(gòu)完整圖像;
3)I幀描述了圖像背景和運動主體的詳情;
4)I幀不需要參考其他畫面而生成;
5)I幀是P幀和B幀的參考幀,其質(zhì)量會直接影響到同組中以后各幀的質(zhì)量;
6)I幀是畫面組GOP的基礎(chǔ)幀(第一幀),在一組中只有一個I幀;
7)I幀不需要考慮運動矢量;
8)I幀所占數(shù)據(jù)的信息量比較大。
P幀的預(yù)測與重構(gòu)
P幀是以I幀為參考幀,在I幀中找出P幀“某點”的預(yù)測值和運動矢量,取預(yù)測差值和運動矢量一起傳送。在接收端根據(jù)運動矢量從I幀中找出P幀“某點”的預(yù)測值并與差值相加以得到P幀“某點”樣值,從而可以得到完整的P幀。
P幀的特點:
1)P幀是I幀后面相隔1或2幀的編碼幀;
2)P幀采用運行補償?shù)姆椒▊魉退c前面的I幀或P幀的差值及運動矢量(預(yù)測誤差);
3)解碼時必須將I幀中的預(yù)測值與預(yù)測誤差求和后才能重構(gòu)完整的P幀圖像;
4)P幀屬于前向預(yù)測的幀間編碼,它只參考前面最靠近它的I幀或P幀;
5)P幀可以是其后面的P幀的參考幀,也可以是其后面的B幀的參考幀;
6)由于P幀是參考幀,它可能造成解碼錯誤的擴散;
7)由于是差值傳送的,P幀的壓縮比較高。
B幀的預(yù)測與重構(gòu)
B幀以前面的I幀或P幀和后面的P幀為參考幀,找出B幀“某點”的預(yù)測值和兩個運動矢量,并取預(yù)測差值和運動矢量傳送。接收端根據(jù)運動矢量在兩個參考幀中找出(算出)預(yù)測值并與差值求和,得到B幀“某點”的樣值,從而可以得到完整的B幀。
B幀的特點:
1)B幀是由前面的I幀或P幀和后面的P幀來進(jìn)行預(yù)測的;
2)B幀傳送的是它與前面的I幀或P幀和后面的P幀之間的預(yù)測誤差及運動矢量;
3)B幀是雙向預(yù)測編碼幀;
4)B幀壓縮比最高,因為它只反映參考幀間運動主體的變化情況,預(yù)測比較準(zhǔn)確;
5)B幀不是參考幀,不會造成解碼錯誤的擴散。
解封裝,從mp4、mkv或flv等文件解出視頻碼流叫做解封裝,其相反的過程叫做封裝,其中,mp4、mkv或flv這一類叫做封裝容器,H263、H264、H265這一類叫做視頻碼流。
解碼,從視頻碼流解出可以播放的視頻圖像數(shù)據(jù)叫做解碼,其相反的過程叫做編碼。
視頻轉(zhuǎn)碼,是指將已經(jīng)壓縮編碼的視頻碼流轉(zhuǎn)換成另一個視頻碼流,以適應(yīng)不同的網(wǎng)絡(luò)帶寬、不同的終端處理能力和不同的用戶需求。轉(zhuǎn)碼本質(zhì)上是一個先解碼,再編碼的過程,因此轉(zhuǎn)換前后的碼流可能遵循相同的視頻編碼標(biāo)準(zhǔn),也可能不遵循相同的視頻編碼標(biāo)準(zhǔn)。
上文提及,目前的視頻剪輯工作在很大程度上還依賴于人工處理,需要剪輯人員手動操作選擇視頻片段進(jìn)行剪切,顯然工作量大且很繁瑣。
為解決上述技術(shù)問題,本發(fā)明實施例提供了一種視頻剪輯方法。圖2示出了根據(jù)本發(fā)明一實施例的視頻剪輯方法的流程圖。如圖2所示,該方法至少可以包括以下步驟S202至步驟S210。
步驟S202,接收包含剪輯起點和剪輯終點的視頻剪輯請求。
步驟S204,在待剪輯視頻對應(yīng)的多個GOP文件中,確定剪輯起點與剪輯終點間的備選GOP文件,其中,各個GOP文件中包含多個視頻幀。
步驟S206,判斷剪輯起點對應(yīng)的起始視頻幀是否為關(guān)鍵幀,若否,則繼續(xù)執(zhí)行步驟S208。
步驟S208,在備選GOP文件中確定剪輯起點所在的起始GOP文件,并對起始GOP文件中起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼,得到編碼后的GOP文件。
步驟S210,將備選GOP文件中的起始GOP文件替換為編碼后的GOP文件,得到剪輯視頻碼流。
在本發(fā)明實施例中,當(dāng)接收到包含剪輯起點和剪輯終點的視頻剪輯請求時,在待剪輯視頻對應(yīng)的多個GOP文件中,確定剪輯起點與剪輯終點間的備選GOP文件,這里的各個GOP文件包含多個視頻幀,并且剪輯起點和剪輯終點可以是待剪輯視頻上的任意時間點。進(jìn)一步,判斷剪輯起點對應(yīng)的起始視頻幀是否為關(guān)鍵幀,若判斷出起始視頻幀不是關(guān)鍵幀,則在備選GOP文件中確定剪輯起點所在的起始GOP文件,并對起始GOP文件中起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼,得到編碼后的GOP文件;之后將備選GOP文件中的起始GOP文件替換為編碼后的GOP文件,得到剪輯視頻碼流。由于編碼后的GOP文件的起始幀為關(guān)鍵幀,這樣就保證后續(xù)能夠?qū)糨嬕曨l碼流進(jìn)行正常解碼并播放。由此可見,本發(fā)明實施例在進(jìn)行視頻剪輯時,對于剪輯起點和剪輯終點沒有限制,可以是待剪輯視頻上的任意時間點,無需人工手動操作去選擇特定的時間點或視頻關(guān)鍵幀,能夠?qū)崿F(xiàn)靈活、快速地進(jìn)行視頻剪輯的目的。并且,本發(fā)明實施例可以精確到剪輯起點對應(yīng)的起始視頻幀,從而實現(xiàn)高精度的視頻剪輯。進(jìn)一步地,本發(fā)明實施例只需要將備選GOP文件中的起始GOP文件替換為編碼后的GOP文件就可以得到剪輯視頻碼流,對于備選GOP文件中的其他GOP文件無需進(jìn)行解碼和編碼,只需要進(jìn)行簡單高效的拷貝操作就可以。由于視頻的編碼過程一般是有損的,這樣就可以實現(xiàn)無損,保證了視頻的質(zhì)量;由于視頻的解碼編碼過程是計算復(fù)雜的操作,而拷貝只需簡單操作即可快速完成,這樣保證了高效性,節(jié)省時間。
相關(guān)技術(shù)中,需要在本地設(shè)備上進(jìn)行視頻剪輯,如果待剪輯的視頻文件在云端服務(wù)器,則需要首先將待剪輯的視頻文件從云端服務(wù)器下載到本地,然后再進(jìn)行視頻剪輯,這樣一方面需要本地存儲空間,另一方面剪輯效率不高。在本發(fā)明的可選實施例中,可以采用線上視頻剪輯的方式來解決上述問題。具體地,可以首先進(jìn)入用于剪輯視頻的剪輯操作頁面,用戶可以在剪輯操作頁面的輸入框中輸入的待剪輯視頻的播放地址,如URL(Uniform Resource Locator,統(tǒng)一資源定位符)地址,該URL地址可以是360影視的視頻播放地址,也可以是其它網(wǎng)站的視頻播放地址,本發(fā)明不限于此。之后,用戶可以點擊剪輯操作頁面中的剪輯按鈕,即,在檢測到用戶點擊剪輯操作頁面中的剪輯按鈕時,則會根據(jù)播放地址從剪輯操作頁面跳轉(zhuǎn)到待剪輯視頻的播放器界面,在這個播放器界面可以播放并操作該待剪輯視頻。
基于上述內(nèi)容,可以通過以下方式來生成步驟S202中提及的視頻剪輯請求,即,進(jìn)入待剪輯視頻的播放器界面,然后獲取用戶在播放器界面設(shè)置的至少一對剪輯起點和剪輯終點,生成包含剪輯起點和剪輯終點的視頻剪輯請求。這里,可以通過下述方式來進(jìn)入待剪輯視頻的播放器界面,即,獲取用戶在剪輯操作頁面的輸入框中輸入的待剪輯視頻的播放地址,從而在檢測到用戶點擊剪輯操作頁面中的剪輯按鈕時,根據(jù)播放地址從剪輯操作頁面跳轉(zhuǎn)到待剪輯視頻的播放器界面。
在本實施例中,用戶是在待剪輯視頻的播放器界面上剪輯視頻,剪輯視頻的主要操作就是在待剪輯視頻的播放時間軸上設(shè)置至少一對剪輯起點和剪輯終點,其目的是獲取每對剪輯起點和剪輯終點間的視頻段。并且,本發(fā)明實施例對于剪輯起點和剪輯終點沒有限制,可以是待剪輯視頻上的任意時間點。以圖1為例,圖1所示的多個GOP文件為待剪輯視頻對應(yīng)的多個GOP文件,剪輯時間點t1為剪輯起點,剪輯時間點t2為剪輯終點,如圖3所示,它們可以是待剪輯視頻上的任意時間點或任意幀,不用限制到關(guān)鍵幀的時間位置。
上文步驟S204中,在待剪輯視頻對應(yīng)的多個GOP文件中確定的備選GOP文件可以包括剪輯起點所在的起始GOP文件,剪輯終點所在的結(jié)束GOP文件,以及剪輯起點與剪輯終點兩者之間的中間GOP文件,這里的中間GOP文件可以包括一個或多個,具體根據(jù)實際情況而定。
上文步驟S206中判斷剪輯起點對應(yīng)的起始視頻幀是否為關(guān)鍵幀,可以根據(jù)幀的標(biāo)識來判斷,也可以依據(jù)上文提及的關(guān)鍵幀I幀的特點來判斷。
在步驟S206判斷剪輯起點對應(yīng)的起始視頻幀不是關(guān)鍵幀時,步驟S208在備選GOP文件中確定剪輯起點所在的起始GOP文件,并對起始GOP文件中起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼,這里,本發(fā)明實施提供了一種可選的重新編碼的方案,在該方案中,可以對起始GOP文件進(jìn)行解碼得到圖像文件,進(jìn)而基于解碼得到的圖像文件對起始GOP文件中起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼。
進(jìn)一步地,在基于解碼得到的圖像文件對起始GOP文件中起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼時,可以將解碼得到的圖像文件中起始視頻幀的圖像編碼成關(guān)鍵幀,進(jìn)而基于編碼成的關(guān)鍵幀,對起始視頻幀之后的所有視頻幀的圖像進(jìn)行編碼,這樣重新編碼得到的編碼后的GOP文件中包含關(guān)鍵幀,那么就保證了后續(xù)能夠?qū)糨嬕曨l碼流進(jìn)行正常解碼并播放。
在另一可選的實施例中,如果對圖像畫面的運動狀態(tài)不做嚴(yán)格要求,那么在基于解碼得到的圖像文件對起始GOP文件中起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼時,還可以將解碼得到的圖像文件中起始GOP文件的關(guān)鍵幀的圖像編碼成關(guān)鍵幀,進(jìn)而基于編碼成的關(guān)鍵幀,對起始視頻幀之后的所有視頻幀的圖像進(jìn)行編碼。
上文步驟S210中將備選GOP文件中的起始GOP文件替換為編碼后的GOP文件得到剪輯視頻碼流,本發(fā)明實施例提供了截取或拷貝等方案,下面將進(jìn)行詳細(xì)介紹。
方式一,從待剪輯視頻對應(yīng)的多個GOP文件中截取備選GOP文件,進(jìn)而將備選GOP文件中的起始GOP文件替換為編碼后的GOP文件,得到剪輯視頻碼流。
方式二,從待剪輯視頻對應(yīng)的多個GOP文件中截取備選GOP文件,進(jìn)而從備選GOP文件中拷貝除起始GOP文件外的其它GOP文件,之后將編碼后的GOP文件與拷貝的其它GOP文件進(jìn)行組合,得到剪輯視頻碼流。
在本發(fā)明的可選實施例中,還可以對剪輯終點所在的結(jié)束GOP文件進(jìn)行處理,使得視頻剪輯精確到任意一幀,實現(xiàn)高精度的視頻剪輯的目的。具體地,在步驟S210將備選GOP文件中的起始GOP文件替換為編碼后的GOP文件之后,還可以在備選GOP文件中確定剪輯終點所在的結(jié)束GOP文件,進(jìn)而判斷剪輯終點對應(yīng)的結(jié)束視頻幀是否為關(guān)鍵幀,若判斷出剪輯終點對應(yīng)的結(jié)束視頻幀為關(guān)鍵幀,則可以將備選GOP文件中的結(jié)束GOP文件替換為結(jié)束視頻幀,得到剪輯視頻碼流。相反地,若判斷出剪輯終點對應(yīng)的結(jié)束視頻幀不是關(guān)鍵幀,則對結(jié)束GOP文件中結(jié)束視頻幀及之前的所有視頻幀進(jìn)行編碼處理,得到處理后的GOP文件,進(jìn)而將備選GOP文件中的結(jié)束GOP文件替換為處理后的GOP文件,得到剪輯視頻碼流。
進(jìn)一步地,在對結(jié)束GOP文件中結(jié)束視頻幀及之前的所有視頻幀進(jìn)行編碼處理時,可以對結(jié)束GOP文件進(jìn)行解碼得到圖像文件,進(jìn)而基于解碼得到的圖像文件對結(jié)束GOP文件中結(jié)束視頻幀及之前的所有視頻幀進(jìn)行編碼處理。
在本發(fā)明的可選實施例中,在步驟S206判斷出剪輯起點對應(yīng)的起始視頻幀為關(guān)鍵幀時,則無需對起始GOP文件進(jìn)行解碼和編碼,可以直接將備選GOP文件中的起始GOP文件替換為起始視頻幀,得到剪輯視頻碼流。
在本發(fā)明的可選實施例中,還可以結(jié)合用戶的需求剪輯得到相應(yīng)碼率的視頻碼流。具體地,在得到剪輯視頻碼流之后,還可以獲取轉(zhuǎn)碼信息,根據(jù)轉(zhuǎn)碼信息對剪輯視頻碼流進(jìn)行轉(zhuǎn)碼處理,得到轉(zhuǎn)碼處理后的剪輯視頻碼流。
為了對多段視頻進(jìn)行轉(zhuǎn)碼,在進(jìn)行轉(zhuǎn)碼操作之前,首先從視頻存儲服務(wù)器上獲取到待剪輯視頻的視頻源并下載到轉(zhuǎn)碼服務(wù)器中,然后將下載的視頻源文件進(jìn)行相應(yīng)版本的轉(zhuǎn)碼,待轉(zhuǎn)碼完成后,將轉(zhuǎn)碼后的文件存儲到視頻存儲服務(wù)器中進(jìn)行存儲,這樣一段新的剪輯視頻便完成了。需要說明的是,系統(tǒng)可以采用服務(wù)器集群,服務(wù)器集群中的每臺轉(zhuǎn)碼服務(wù)器采用的又是多線程的轉(zhuǎn)碼處理機制,即可以根據(jù)轉(zhuǎn)碼壓力來調(diào)整轉(zhuǎn)碼服務(wù)器的數(shù)量,通過相應(yīng)規(guī)則動態(tài)地將轉(zhuǎn)碼工作分配到指定的轉(zhuǎn)碼服務(wù)器進(jìn)行轉(zhuǎn)碼,以便由多臺轉(zhuǎn)碼服務(wù)器分別分擔(dān)一部分轉(zhuǎn)碼工作,這樣可以提供高并發(fā)的轉(zhuǎn)碼能力,提高轉(zhuǎn)碼速度,并減少用戶的等待時間。進(jìn)一步地,可以對轉(zhuǎn)碼處理后的剪輯視頻碼流進(jìn)行封裝,得到剪輯視頻文件??梢姡捎谵D(zhuǎn)碼工作是在轉(zhuǎn)碼服務(wù)器端完成,服務(wù)器端是由多臺機器組成的集群,性能很好,用戶只需要在自己的機器上使用瀏覽器即可,除去用戶編輯時間,一段視頻從選取到生成新的線上地址不會超過5分鐘,視頻剪輯長度的大小對時間影響很小。
以上介紹了圖1所示的實施例中各個環(huán)節(jié)的多種實現(xiàn)方式,下面通過具體的實施例對本發(fā)明實施例提供的視頻剪輯方法做進(jìn)一步說明。該實施例采用線上剪輯的方式,對于剪輯起點和剪輯終點沒有限制,可以是待剪輯視頻上的任意時間點。并且,為了實現(xiàn)高精度的視頻剪輯的目的,分別對剪輯起點所在的起始GOP文件和剪輯終點所在的結(jié)束GOP文件進(jìn)行處理,使得視頻剪輯精確到任意一幀。
圖4示出了根據(jù)本發(fā)明另一實施例的視頻剪輯方法的流程圖。如圖4所示,該方法至少可以包括以下步驟S402至步驟S426。
步驟S402,獲取用戶在剪輯操作頁面的輸入框中輸入的待剪輯視頻的播放地址。
在該步驟中,播放地址可以如URL地址,該URL地址可以是360影視的視頻播放地址,也可以是其它網(wǎng)站的視頻播放地址,本發(fā)明不限于此。
步驟S404,在檢測到用戶點擊剪輯操作頁面中的剪輯按鈕時,根據(jù)播放地址從剪輯操作頁面跳轉(zhuǎn)到待剪輯視頻的播放器界面。
步驟S406,獲取用戶在播放器界面設(shè)置的至少一對剪輯起點和剪輯終點,生成包含剪輯起點和剪輯終點的視頻剪輯請求。
步驟S408,在待剪輯視頻對應(yīng)的多個GOP文件中,確定剪輯起點所在的起始GOP文件、剪輯終點所在的結(jié)束GOP文件以及剪輯起點與剪輯終點兩者之間的中間GOP文件,其中,各個GOP文件中包含多個視頻幀。
步驟S410,判斷剪輯起點對應(yīng)的起始視頻幀是否為關(guān)鍵幀,若否,則繼續(xù)執(zhí)行步驟S412,若是,則繼續(xù)執(zhí)行步驟S420。
步驟S412,對起始GOP文件中起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼,得到編碼后的GOP文件,繼續(xù)執(zhí)行步驟S414。
在該步驟中,可以對起始GOP文件進(jìn)行解碼得到圖像文件,進(jìn)而基于解碼得到的圖像文件對起始GOP文件中起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼。
進(jìn)一步地,在基于解碼得到的圖像文件對起始GOP文件中起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼時,可以將解碼得到的圖像文件中起始視頻幀的圖像編碼成關(guān)鍵幀,進(jìn)而基于編碼成的關(guān)鍵幀,對起始視頻幀之后的所有視頻幀的圖像進(jìn)行編碼,這樣重新編碼得到的編碼后的GOP文件中包含關(guān)鍵幀,那么就保證了后續(xù)能夠?qū)糨嬕曨l碼流進(jìn)行正常解碼并播放。如圖5所示,基于圖3所示的剪輯起點,對剪輯起點對應(yīng)的起始視頻幀(P幀)及之后的所有視頻幀(BBP幀)進(jìn)行重新編碼,得到編碼后的GOP文件為ibbp幀,其中i幀為關(guān)鍵幀。
在另一可選的實施例中,如果對圖像畫面的運動狀態(tài)不做嚴(yán)格要求,那么在基于解碼得到的圖像文件對起始GOP文件中起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼時,還可以將解碼得到的圖像文件中起始GOP文件的關(guān)鍵幀的圖像編碼成關(guān)鍵幀,進(jìn)而基于編碼成的關(guān)鍵幀,對起始視頻幀之后的所有視頻幀的圖像進(jìn)行編碼。
步驟S414,判斷剪輯終點對應(yīng)的結(jié)束視頻幀是否為關(guān)鍵幀,若是,則繼續(xù)執(zhí)行步驟S416,若否,則繼續(xù)執(zhí)行步驟S418。
步驟S416,從結(jié)束GOP文件中提取出結(jié)束視頻幀以及拷貝中間GOP文件,將編碼后的GOP文件、中間GOP文件以及結(jié)束視頻幀組合得到剪輯視頻碼流。
步驟S418,對結(jié)束GOP文件中結(jié)束視頻幀及之前的所有視頻幀進(jìn)行編碼處理,得到處理后的GOP文件,進(jìn)而將編碼后的GOP文件、中間GOP文件以及處理后的GOP文件組合得到剪輯視頻碼流。
如圖5所示,基于圖3所示的剪輯終點,對剪輯終點對應(yīng)的結(jié)束視頻幀(B幀)及之前的所有視頻幀(IBBP幀)進(jìn)行重新編碼,得到處理后的GOP文件為Ibbpp幀,其中,I幀為關(guān)鍵幀。
步驟S420,從起始GOP文件中提取出起始視頻幀,繼續(xù)執(zhí)行步驟S422。
步驟S422,判斷剪輯終點對應(yīng)的結(jié)束視頻幀是否為關(guān)鍵幀,若是,則繼續(xù)執(zhí)行步驟S424,若否,則繼續(xù)執(zhí)行步驟S426。
步驟S424,從結(jié)束GOP文件中提取出結(jié)束視頻幀以及拷貝中間GOP文件,將起始視頻幀、中間GOP文件以及結(jié)束視頻幀組合得到剪輯視頻碼流。
步驟S426,對結(jié)束GOP文件中結(jié)束視頻幀及之前的所有視頻幀進(jìn)行編碼處理,得到處理后的GOP文件,進(jìn)而將起始視頻幀、中間GOP文件以及處理后的GOP文件組合得到剪輯視頻碼流。
在本發(fā)明的可選實施例中,還可以結(jié)合用戶的需求剪輯得到相應(yīng)碼率的視頻碼流。具體地,在得到剪輯視頻碼流之后,還可以獲取轉(zhuǎn)碼信息,根據(jù)轉(zhuǎn)碼信息對剪輯視頻碼流進(jìn)行轉(zhuǎn)碼處理,得到轉(zhuǎn)碼處理后的剪輯視頻碼流。具體地,還可以將轉(zhuǎn)碼信息以及剪輯視頻碼流分配給至少一個轉(zhuǎn)碼服務(wù)器,由至少一個轉(zhuǎn)碼服務(wù)器根據(jù)轉(zhuǎn)碼信息對剪輯視頻碼流進(jìn)行轉(zhuǎn)碼處理。之后,在得到轉(zhuǎn)碼處理后的剪輯視頻碼流之后,還可以對轉(zhuǎn)碼處理后的剪輯視頻碼流進(jìn)行封裝,得到剪輯視頻文件,并提供給用戶。
此外,用戶在剪輯完視頻后還可以預(yù)覽剪輯的效果,這是通過播放器flash技術(shù)實現(xiàn),也就是說,如果用戶在預(yù)覽剪輯段后覺得剪輯效果不錯,再點擊保存按鈕生成剪輯后的視頻文件。點擊保存按鈕后系統(tǒng)會保存視頻描述信息、剪輯時間點集合?;诖?,本發(fā)明實施例可以在檢測到用戶點擊播放器界面中的保存按鈕之前,還可以在檢測到用戶點擊播放器界面中的剪輯預(yù)覽按鈕時,播放當(dāng)前在播放器界面設(shè)置的剪輯起點和剪輯終點間的視頻段。
需要說明的是,實際應(yīng)用中,上述所有可選實施方式可以采用結(jié)合的方式任意組合,形成本發(fā)明的可選實施例,在此不再一一贅述。
基于上文各個實施例提供的視頻剪輯方法,基于同一發(fā)明構(gòu)思,本發(fā)明實施例還提供了一種視頻剪輯裝置。
圖6示出了根據(jù)本發(fā)明一實施例的視頻剪輯裝置的結(jié)構(gòu)示意圖。如圖6所示,該裝置至少可以包括請求接收模塊610、確定模塊620、判斷模塊630、編碼模塊640以及處理模塊650。
現(xiàn)介紹本發(fā)明實施例的視頻剪輯裝置的各組成或器件的功能以及各部分間的連接關(guān)系:
請求接收模塊610,適于接收包含剪輯起點和剪輯終點的視頻剪輯請求;
確定模塊620,與請求接收模塊610相耦合,適于在待剪輯視頻對應(yīng)的多個畫面組GOP文件中,確定所述剪輯起點與所述剪輯終點間的備選GOP文件,其中,各個GOP文件中包含多個視頻幀;
判斷模塊630,與確定模塊620相耦合,適于判斷所述剪輯起點對應(yīng)的起始視頻幀是否為關(guān)鍵幀;
編碼模塊640,與判斷模塊630相耦合,適于若所述判斷模塊判斷所述剪輯起點對應(yīng)的起始視頻幀不是關(guān)鍵幀,則在所述備選GOP文件中確定所述剪輯起點所在的起始GOP文件,并對所述起始GOP文件中所述起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼,得到編碼后的GOP文件;
處理模塊650,與編碼模塊640相耦合,適于將所述備選GOP文件中的所述起始GOP文件替換為所述編碼后的GOP文件,得到剪輯視頻碼流。
在本發(fā)明一實施例中,所述編碼模塊640還適于:
對所述起始GOP文件進(jìn)行解碼得到圖像文件;
基于解碼得到的所述圖像文件,對所述起始GOP文件中所述起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼。
在本發(fā)明一實施例中,所述編碼模塊640還適于:
將解碼得到的所述圖像文件中所述起始視頻幀的圖像編碼成關(guān)鍵幀;
基于編碼成的所述關(guān)鍵幀,對所述起始視頻幀之后的所有視頻幀的圖像進(jìn)行編碼。
在本發(fā)明一實施例中,所述處理模塊650還適于:
在將所述備選GOP文件中的所述起始GOP文件替換為所述編碼后的GOP文件之后,在所述備選GOP文件中確定所述剪輯終點所在的結(jié)束GOP文件;
判斷所述剪輯終點對應(yīng)的結(jié)束視頻幀是否為關(guān)鍵幀;
若是,則將所述備選GOP文件中的所述結(jié)束GOP文件替換為所述結(jié)束視頻幀,得到所述剪輯視頻碼流。
在本發(fā)明一實施例中,所述處理模塊650還適于:
在判斷出所述剪輯終點對應(yīng)的結(jié)束視頻幀不是關(guān)鍵幀時,對所述結(jié)束GOP文件中所述結(jié)束視頻幀及之前的所有視頻幀進(jìn)行編碼處理,得到處理后的GOP文件;
將所述備選GOP文件中的所述結(jié)束GOP文件替換為所述處理后的GOP文件,得到所述剪輯視頻碼流。
在本發(fā)明一實施例中,如圖7所示,上文圖6展示的裝置還可以包括:
請求生成模塊710,與請求接收模塊610相耦合,適于進(jìn)入待剪輯視頻的播放器界面;獲取用戶在所述播放器界面設(shè)置的至少一對剪輯起點和剪輯終點,生成包含所述剪輯起點和剪輯終點的視頻剪輯請求。
在本發(fā)明一實施例中,所述請求生成模塊710還適于:
獲取用戶在剪輯操作頁面的輸入框中輸入的所述待剪輯視頻的播放地址;
在檢測到用戶點擊所述剪輯操作頁面中的剪輯按鈕時,根據(jù)所述播放地址從所述剪輯操作頁面跳轉(zhuǎn)到所述待剪輯視頻的播放器界面。
在本發(fā)明一實施例中,如圖7所示,上文圖6展示的裝置還可以包括:
轉(zhuǎn)碼模塊720,與處理模塊650相耦合,適于在所述處理模塊650得到剪輯視頻碼流之后,獲取轉(zhuǎn)碼信息,根據(jù)所述轉(zhuǎn)碼信息對所述剪輯視頻碼流進(jìn)行轉(zhuǎn)碼處理,得到轉(zhuǎn)碼處理后的剪輯視頻碼流。
在本發(fā)明一實施例中,所述轉(zhuǎn)碼模塊720還適于:
將所述轉(zhuǎn)碼信息以及所述剪輯視頻碼流分配給至少一個轉(zhuǎn)碼服務(wù)器,由所述至少一個轉(zhuǎn)碼服務(wù)器根據(jù)所述轉(zhuǎn)碼信息對所述剪輯視頻碼流進(jìn)行轉(zhuǎn)碼處理。
在本發(fā)明一實施例中,如圖7所示,上文圖6展示的裝置還可以包括:
封裝模塊730,與轉(zhuǎn)碼模塊720相耦合,適于在所述轉(zhuǎn)碼模塊720得到轉(zhuǎn)碼處理后的剪輯視頻碼流之后,對所述轉(zhuǎn)碼處理后的剪輯視頻碼流進(jìn)行封裝,得到剪輯視頻文件。
在本發(fā)明一實施例中,所述處理模塊650還適于:
在所述判斷模塊判斷出所述剪輯起點對應(yīng)的起始視頻幀為關(guān)鍵幀時,將所述備選GOP文件中的所述起始GOP文件替換為所述起始視頻幀,得到所述剪輯視頻碼流。
根據(jù)上述任意一個可選實施例或多個可選實施例的組合,本發(fā)明實施例能夠達(dá)到如下有益效果:
在本發(fā)明實施例中,當(dāng)接收到包含剪輯起點和剪輯終點的視頻剪輯請求時,在待剪輯視頻對應(yīng)的多個GOP文件中,確定剪輯起點與剪輯終點間的備選GOP文件,這里的各個GOP文件包含多個視頻幀,并且剪輯起點和剪輯終點可以是待剪輯視頻上的任意時間點。進(jìn)一步,判斷剪輯起點對應(yīng)的起始視頻幀是否為關(guān)鍵幀,若判斷出起始視頻幀不是關(guān)鍵幀,則在備選GOP文件中確定剪輯起點所在的起始GOP文件,并對起始GOP文件中起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼,得到編碼后的GOP文件;之后將備選GOP文件中的起始GOP文件替換為編碼后的GOP文件,得到剪輯視頻碼流。由于編碼后的GOP文件的起始幀為關(guān)鍵幀,這樣就保證后續(xù)能夠?qū)糨嬕曨l碼流進(jìn)行正常解碼并播放。由此可見,本發(fā)明實施例在進(jìn)行視頻剪輯時,對于剪輯起點和剪輯終點沒有限制,可以是待剪輯視頻上的任意時間點,無需人工手動操作去選擇特定的時間點或視頻關(guān)鍵幀,能夠?qū)崿F(xiàn)靈活、快速地進(jìn)行視頻剪輯的目的。并且,本發(fā)明實施例可以精確到剪輯起點對應(yīng)的起始視頻幀,從而實現(xiàn)高精度的視頻剪輯。進(jìn)一步地,本發(fā)明實施例只需要將備選GOP文件中的起始GOP文件替換為編碼后的GOP文件就可以得到剪輯視頻碼流,對于備選GOP文件中的其他GOP文件無需進(jìn)行解碼和編碼,只需要進(jìn)行簡單高效的拷貝操作就可以。由于視頻的編碼過程一般是有損的,這樣就可以實現(xiàn)無損,保證了視頻的質(zhì)量;由于視頻的解碼編碼過程是計算復(fù)雜的操作,而拷貝只需簡單操作即可快速完成,這樣保證了高效性,節(jié)省時間。
在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細(xì)節(jié)的情況下實踐。在一些實例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中。可以把實施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在權(quán)利要求書中,所要求保護(hù)的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的視頻剪輯裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
至此,本領(lǐng)域技術(shù)人員應(yīng)認(rèn)識到,雖然本文已詳盡示出和描述了本發(fā)明的多個示例性實施例,但是,在不脫離本發(fā)明精神和范圍的情況下,仍可根據(jù)本發(fā)明公開的內(nèi)容直接確定或推導(dǎo)出符合本發(fā)明原理的許多其他變型或修改。因此,本發(fā)明的范圍應(yīng)被理解和認(rèn)定為覆蓋了所有這些其他變型或修改。
本發(fā)明實施例的一方面,提供了A1、一種視頻剪輯方法,包括:
接收包含剪輯起點和剪輯終點的視頻剪輯請求;
在待剪輯視頻對應(yīng)的多個畫面組GOP文件中,確定所述剪輯起點與所述剪輯終點間的備選GOP文件,其中,各個GOP文件中包含多個視頻幀;
判斷所述剪輯起點對應(yīng)的起始視頻幀是否為關(guān)鍵幀;
若否,則在所述備選GOP文件中確定所述剪輯起點所在的起始GOP文件,并對所述起始GOP文件中所述起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼,得到編碼后的GOP文件;
將所述備選GOP文件中的所述起始GOP文件替換為所述編碼后的GOP文件,得到剪輯視頻碼流。
A2、根據(jù)A1所述的方法,其中,對所述起始GOP文件中所述起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼,包括:
對所述起始GOP文件進(jìn)行解碼得到圖像文件;
基于解碼得到的所述圖像文件,對所述起始GOP文件中所述起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼。
A3、根據(jù)A2所述的方法,其中,基于解碼得到的所述圖像文件,對所述起始GOP文件中所述起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼,包括:
將解碼得到的所述圖像文件中所述起始視頻幀的圖像編碼成關(guān)鍵幀;
基于編碼成的所述關(guān)鍵幀,對所述起始視頻幀之后的所有視頻幀的圖像進(jìn)行編碼。
A4、根據(jù)A1-A3中任一項所述的方法,其中,將所述備選GOP文件中的所述起始GOP文件替換為所述編碼后的GOP文件之后,所述方法還包括:
在所述備選GOP文件中確定所述剪輯終點所在的結(jié)束GOP文件;
判斷所述剪輯終點對應(yīng)的結(jié)束視頻幀是否為關(guān)鍵幀;
若是,則將所述備選GOP文件中的所述結(jié)束GOP文件替換為所述結(jié)束視頻幀,得到所述剪輯視頻碼流。
A5、根據(jù)A4所述的方法,其中,在判斷出所述剪輯終點對應(yīng)的結(jié)束視頻幀不是關(guān)鍵幀時,所述方法還包括:
對所述結(jié)束GOP文件中所述結(jié)束視頻幀及之前的所有視頻幀進(jìn)行編碼處理,得到處理后的GOP文件;
將所述備選GOP文件中的所述結(jié)束GOP文件替換為所述處理后的GOP文件,得到所述剪輯視頻碼流。
A6、根據(jù)A1-A5中任一項所述的方法,其中,通過以下方式生成所述視頻剪輯請求,包括:
進(jìn)入待剪輯視頻的播放器界面;
獲取用戶在所述播放器界面設(shè)置的至少一對剪輯起點和剪輯終點,生成包含所述剪輯起點和剪輯終點的視頻剪輯請求。
A7、根據(jù)A6所述的方法,其中,所述進(jìn)入待剪輯視頻的播放器界面,包括:
獲取用戶在剪輯操作頁面的輸入框中輸入的所述待剪輯視頻的播放地址;
在檢測到用戶點擊所述剪輯操作頁面中的剪輯按鈕時,根據(jù)所述播放地址從所述剪輯操作頁面跳轉(zhuǎn)到所述待剪輯視頻的播放器界面。
A8、根據(jù)A1-A7中任一項所述的方法,其中,在得到剪輯視頻碼流之后,所述方法還包括:
獲取轉(zhuǎn)碼信息,根據(jù)所述轉(zhuǎn)碼信息對所述剪輯視頻碼流進(jìn)行轉(zhuǎn)碼處理,得到轉(zhuǎn)碼處理后的剪輯視頻碼流。
A9、根據(jù)A8所述的方法,其中,根據(jù)所述轉(zhuǎn)碼信息對所述剪輯視頻碼流進(jìn)行轉(zhuǎn)碼處理,包括:
將所述轉(zhuǎn)碼信息以及所述剪輯視頻碼流分配給至少一個轉(zhuǎn)碼服務(wù)器,由所述至少一個轉(zhuǎn)碼服務(wù)器根據(jù)所述轉(zhuǎn)碼信息對所述剪輯視頻碼流進(jìn)行轉(zhuǎn)碼處理。
A10、根據(jù)A8或A9所述的方法,其中,在得到轉(zhuǎn)碼處理后的剪輯視頻碼流之后,所述方法還包括:
對所述轉(zhuǎn)碼處理后的剪輯視頻碼流進(jìn)行封裝,得到剪輯視頻文件。
A11、根據(jù)A1-A10中任一項所述的方法,其中,在判斷出所述剪輯起點對應(yīng)的起始視頻幀為關(guān)鍵幀時,所述方法還包括:
將所述備選GOP文件中的所述起始GOP文件替換為所述起始視頻幀,得到所述剪輯視頻碼流。
本發(fā)明實施例的另一方面,還提供了B12、一種視頻剪輯裝置,包括:
請求接收模塊,適于接收包含剪輯起點和剪輯終點的視頻剪輯請求;
確定模塊,適于在待剪輯視頻對應(yīng)的多個畫面組GOP文件中,確定所述剪輯起點與所述剪輯終點間的備選GOP文件,其中,各個GOP文件中包含多個視頻幀;
判斷模塊,適于判斷所述剪輯起點對應(yīng)的起始視頻幀是否為關(guān)鍵幀;
編碼模塊,適于若所述判斷模塊判斷所述剪輯起點對應(yīng)的起始視頻幀不是關(guān)鍵幀,則在所述備選GOP文件中確定所述剪輯起點所在的起始GOP文件,并對所述起始GOP文件中所述起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼,得到編碼后的GOP文件;
處理模塊,適于將所述備選GOP文件中的所述起始GOP文件替換為所述編碼后的GOP文件,得到剪輯視頻碼流。
B13、根據(jù)B12所述的裝置,其中,所述編碼模塊還適于:
對所述起始GOP文件進(jìn)行解碼得到圖像文件;
基于解碼得到的所述圖像文件,對所述起始GOP文件中所述起始視頻幀及之后的所有視頻幀進(jìn)行重新編碼。
B14、根據(jù)B13所述的裝置,其中,所述編碼模塊還適于:
將解碼得到的所述圖像文件中所述起始視頻幀的圖像編碼成關(guān)鍵幀;
基于編碼成的所述關(guān)鍵幀,對所述起始視頻幀之后的所有視頻幀的圖像進(jìn)行編碼。
B15、根據(jù)B12-B14中任一項所述的裝置,其中,所述處理模塊還適于:
在將所述備選GOP文件中的所述起始GOP文件替換為所述編碼后的GOP文件之后,在所述備選GOP文件中確定所述剪輯終點所在的結(jié)束GOP文件;
判斷所述剪輯終點對應(yīng)的結(jié)束視頻幀是否為關(guān)鍵幀;
若是,則將所述備選GOP文件中的所述結(jié)束GOP文件替換為所述結(jié)束視頻幀,得到所述剪輯視頻碼流。
B16、根據(jù)B15所述的裝置,其中,所述處理模塊還適于:
在判斷出所述剪輯終點對應(yīng)的結(jié)束視頻幀不是關(guān)鍵幀時,對所述結(jié)束GOP文件中所述結(jié)束視頻幀及之前的所有視頻幀進(jìn)行編碼處理,得到處理后的GOP文件;
將所述備選GOP文件中的所述結(jié)束GOP文件替換為所述處理后的GOP文件,得到所述剪輯視頻碼流。
B17、根據(jù)B12-B16中任一項所述的裝置,其中,還包括:
請求生成模塊,適于進(jìn)入待剪輯視頻的播放器界面;獲取用戶在所述播放器界面設(shè)置的至少一對剪輯起點和剪輯終點,生成包含所述剪輯起點和剪輯終點的視頻剪輯請求。
B18、根據(jù)B17所述的裝置,其中,所述請求生成模塊還適于:
獲取用戶在剪輯操作頁面的輸入框中輸入的所述待剪輯視頻的播放地址;
在檢測到用戶點擊所述剪輯操作頁面中的剪輯按鈕時,根據(jù)所述播放地址從所述剪輯操作頁面跳轉(zhuǎn)到所述待剪輯視頻的播放器界面。
B19、根據(jù)B12-B18中任一項所述的裝置,其中,還包括:
轉(zhuǎn)碼模塊,適于在所述處理模塊得到剪輯視頻碼流之后,獲取轉(zhuǎn)碼信息,根據(jù)所述轉(zhuǎn)碼信息對所述剪輯視頻碼流進(jìn)行轉(zhuǎn)碼處理,得到轉(zhuǎn)碼處理后的剪輯視頻碼流。
B20、根據(jù)B19所述的裝置,其中,所述轉(zhuǎn)碼模塊還適于:
將所述轉(zhuǎn)碼信息以及所述剪輯視頻碼流分配給至少一個轉(zhuǎn)碼服務(wù)器,由所述至少一個轉(zhuǎn)碼服務(wù)器根據(jù)所述轉(zhuǎn)碼信息對所述剪輯視頻碼流進(jìn)行轉(zhuǎn)碼處理。
B21、根據(jù)B19或B20所述的裝置,其中,還包括:
封裝模塊,適于在所述轉(zhuǎn)碼模塊得到轉(zhuǎn)碼處理后的剪輯視頻碼流之后,對所述轉(zhuǎn)碼處理后的剪輯視頻碼流進(jìn)行封裝,得到剪輯視頻文件。
B22、根據(jù)B12-B21中任一項所述的裝置,其中,所述處理模塊還適于:
在所述判斷模塊判斷出所述剪輯起點對應(yīng)的起始視頻幀為關(guān)鍵幀時,將所述備選GOP文件中的所述起始GOP文件替換為所述起始視頻幀,得到所述剪輯視頻碼流。