今天主要介紹與轉(zhuǎn)碼相關(guān)的服務(wù)以及如何使用轉(zhuǎn)碼配合存儲實(shí)現(xiàn)內(nèi)容的分發(fā)。轉(zhuǎn)碼是無運(yùn)維的、全托管的服務(wù),其主要利用谷歌自主研發(fā)的轉(zhuǎn)碼、容器等技術(shù)來幫助用戶實(shí)現(xiàn)高效且高速轉(zhuǎn)碼。提到轉(zhuǎn)碼技術(shù),大家比較熟悉的是FFmpeg,可以自己編寫轉(zhuǎn)碼的格式,但是使用這種全托管、無服務(wù)器的服務(wù)能讓大家更快速地實(shí)現(xiàn)業(yè)務(wù)的落地,并且這種服務(wù)還有功能上、成本上和性能上的優(yōu)勢,之后會具體展開講解。這類服務(wù)主要按照轉(zhuǎn)碼的內(nèi)容的時長來收費(fèi)。
接下來,介紹轉(zhuǎn)碼的服務(wù)支持哪些具體的格式,這也是大家比較關(guān)心的問題。首先,在音視頻領(lǐng)域,支持的輸入格式比較多,包括手機(jī)拍攝的視頻、各種錄制設(shè)備拍攝的視頻、音頻、字幕文件等。然后,在輸出格式方面,在視頻編碼中可以比較好地支持H.264、H.265和VP9等編碼格式,現(xiàn)在大家也可能會關(guān)注新的、免費(fèi)的編碼格式。
VP9是谷歌在YouTube等業(yè)務(wù)里使用較多的編碼格式,在一些場景下,與H.264等編碼格式相比,VP9可以做到50%的流量節(jié)省,特別是在一些發(fā)展中區(qū)域(非洲、中東、南美等),這可以讓用戶使用更低的帶寬更流暢地觀看視頻,使用戶有更好的體驗。
除了VP9,谷歌也參與了AV1編碼格式的制定,該格式將來也會加入到支持的輸出格式里。在音頻、字幕方面,也有很多支持的輸出編碼格式。此外,我們也支持圖片的輸出,之后會介紹一個相關(guān)場景案例,說明在編碼視頻時為何需要做到圖片的輸出。
該服務(wù)的一個比較大的優(yōu)勢是幫助客戶在出海時增加視頻版權(quán)管理的功能。視頻在海外落地時,版權(quán)方會有一些要求,比如對視頻加密或使用版權(quán)管理的標(biāo)準(zhǔn)。現(xiàn)在全球有三大標(biāo)準(zhǔn),包括蘋果的FairPlay、谷歌的Widevine和微軟的PlayReady。
此外,蘋果還制作了免費(fèi)版本的AES-128的加密標(biāo)準(zhǔn)。在轉(zhuǎn)碼時,可以添加配置以上提到的標(biāo)準(zhǔn),以此幫助大家根據(jù)要求來更好地做到內(nèi)容的版權(quán)管理和保護(hù),這也是轉(zhuǎn)碼服務(wù)里非常方便應(yīng)用的一個功能。
谷歌的轉(zhuǎn)碼服務(wù)有一個特殊的技術(shù)優(yōu)勢,即可以使用谷歌的視頻分析和容器化的服務(wù)來幫助用戶在短時間內(nèi)完成長視頻的轉(zhuǎn)碼。當(dāng)收到一個長視頻時,首先對其進(jìn)行內(nèi)容分析,然后對其自動切片,分成不同片段后使用并行的方式部署轉(zhuǎn)碼/編碼任務(wù),再然后用大的集群并行地完成視頻內(nèi)容的轉(zhuǎn)碼,這使得長視頻的轉(zhuǎn)碼時長是固定的(基本在3至5分鐘內(nèi)),而不隨視頻內(nèi)容時長增長而增長。
該服務(wù)還有一些高級功能。視頻內(nèi)容可能包含很多的音軌、視軌和字幕軌道,我們首先使用不同的對象管理方式在模板里定義出元素級別的內(nèi)容流(包括音頻、視頻和字幕),然后對其進(jìn)行任意的組合,比如高碼率的視頻可以和高碼率的音頻組合,低碼率的視頻可以和低碼率的音頻組合。
組合完成后得到復(fù)合流,然后可以定義輸出的流媒體,在定義的媒介里引用復(fù)合流。同時,將其定義成在不同的客戶端碼率的情況下,多碼率適配的選用方式,使得可以根據(jù)客戶端的實(shí)時碼率來自動地選擇不同的復(fù)合流,實(shí)現(xiàn)碼率的自動適配。上述功能可以方便地在配置模板里實(shí)現(xiàn)。
另外,視頻有時需要進(jìn)行編輯,此時沒有必要采購或安裝視頻的編輯工具,因為我們的轉(zhuǎn)碼工具就可以做到視頻內(nèi)容的拆分或拼接。舉個例子,假設(shè)有4個輸入的視頻文件,我們想從每個視頻文件中選取一部分組成最終的視頻文件。從圖中可以發(fā)現(xiàn),使用轉(zhuǎn)碼的配置就可以做到上述效果,即可以按照任意順序組合選取的任意長度的視頻切片,從而得到最終的視頻文件。
這類功能適用于嵌入片頭和片尾的廣告,因為廣告可能有固定時長、固定位置(片頭、片中或片尾)。同時,這類功能也適用于制作體育比賽的集錦,經(jīng)過視頻內(nèi)容分析后,通過拆條將視頻拆分為多個片段,可以將與進(jìn)球有關(guān)的或高質(zhì)量的片段作為輸入放入模板里,并對其進(jìn)行最后的組合,得到集錦片段。
剛才提到的功能可以在轉(zhuǎn)碼模板里定義。這里沒有采取界面等可視化的方式,這是因為,雖然在很多時候采取可視化的編輯方式可以方便地實(shí)現(xiàn)一些功能,但若要實(shí)現(xiàn)復(fù)雜的、定制化的轉(zhuǎn)碼的配置,使用配置文件會更方便。這里有兩種配置文件的使用方式,一種是對每個任務(wù)進(jìn)行完整的配置,可以定義所有的輸入、輸出和中間的流的組合。
另一種方式是,將使用相同方式轉(zhuǎn)碼的配置寫成一個模板,在創(chuàng)建任務(wù)時使用該模板,對輸入的內(nèi)容的文件名進(jìn)行不同的替換。那么,在創(chuàng)建任務(wù)時只需定義文件名和輸出的位置即可,這樣可以更方便地實(shí)現(xiàn)轉(zhuǎn)碼任務(wù)的自動化。
接下來舉一個例子,說明如何用轉(zhuǎn)碼的服務(wù)生成DASH流媒體。目前,在線觀看流媒體的用戶比較多(使用平板或手機(jī)觀看)。在海外常用的格式不是國內(nèi)常用的FLV1格式,而是HLS格式和MPEG-DASH格式。在谷歌云的轉(zhuǎn)碼服務(wù)里,針對這兩種流媒體格式進(jìn)行了很多優(yōu)化。
在這個例子中,在流媒體的輸出中定義了三個不同的碼率:400kbps、750kbps和僅有音頻的碼率(最低碼率)。這三種碼率格式可以按照規(guī)定進(jìn)行轉(zhuǎn)碼輸出,確保最后輸出的不同碼率和定義的播放碼率是相匹配的。同時,也會自動生成MPD文件和視頻或音頻流的M4S文件,可以在移動設(shè)備上觀看這些文件。同理,HLS格式的轉(zhuǎn)碼過程與上述過程類似。
接下來介紹另一個有意思的場景。如果輸入視頻里有多個不同的音軌,比如多語言音軌,在輸出文件中,要根據(jù)不同的推廣國家選擇不同的音軌,那么可以用轉(zhuǎn)碼來進(jìn)行選擇和定義。具體地,可以引用輸入文件里的某一個音軌或channel,然后在輸出時在不同的文件里加入不同的語言的音軌,使得最后的輸出文件可以根據(jù)不同的市場完成不同的定制。因此,針對海外不同國家和不同市場的業(yè)務(wù),可以實(shí)現(xiàn)靈活地應(yīng)用。
之前提到,有時在視頻轉(zhuǎn)碼時會生成圖片,接下來介紹其中的一個例子。在轉(zhuǎn)碼時,可以規(guī)定其按照固定間隔抽幀生成圖片,比如規(guī)定每一分鐘生成一張圖片,或者在一個時長為一小時的影片中,規(guī)定總共生成十張圖片,那么就會自動按照九個相同的間隔生成十張圖片。最后,可以選取質(zhì)量較好的圖片作為視頻的封面。
另外,還可以指定輸出圖片的長寬比。有的視頻比例是16:9,有的視頻比例是4:3,因此可以選擇輸出圖片的不同的長寬比來適配視頻本身的長寬比,做到不變形。同樣,可以選擇一張圖片作為視頻的封面,提升用戶體驗。
剛才主要介紹了一些基本的功能和特色,接下來介紹如何使用轉(zhuǎn)碼服務(wù)。首先,要進(jìn)行視頻內(nèi)部的分析,了解輸入視頻的格式、時長和編碼特點(diǎn),掌握輸入視頻包含哪些音頻和字幕軌。然后,要定義輸出的格式,即針對不同的場景,比如WiFi播放、手機(jī)播放等,定義期望的輸出格式。
接著,根據(jù)輸入和輸出的定義,完成轉(zhuǎn)碼的配置的編寫。其中,可以參考文檔中的示例和模板,我們谷歌云的同事也可以幫助客戶進(jìn)行調(diào)試。調(diào)試好的配置可以在云上進(jìn)行使用,每次創(chuàng)建任務(wù)后,可以選擇特定的配置的模板。最后輸出的視頻文件可以在不同的播放器上播放、測試,然后可以固化達(dá)到預(yù)期的測試效果的配置,以供后續(xù)使用。以上就是一個大概的流程。
為了實(shí)現(xiàn)這個流程的自動化,我們設(shè)計了一個方案。在這個方案里,我們使用了谷歌云無服務(wù)器托管的服務(wù),幫助大家在免運(yùn)維的模式下生成視頻制作的工作流。首先,在谷歌云的對象存儲里創(chuàng)建存儲的目錄,將所有的原視頻放在目錄里。
然后,每當(dāng)有新視頻上傳時,就會觸發(fā)云函數(shù),由云函數(shù)來啟動轉(zhuǎn)碼任務(wù),其可以根據(jù)視頻特點(diǎn)引用相應(yīng)的轉(zhuǎn)碼配置。完成轉(zhuǎn)碼任務(wù)后,會向消息隊列投遞一個消息,消息隊列根據(jù)接收到的消息觸發(fā)另一個云函數(shù),由其進(jìn)行輸出文件的管理。
輸出文件有幾種類型,一種是任務(wù)失敗,那就要把輸入/輸出文件放在失敗的隊列的存儲位置。另一種是任務(wù)成功,那么就將其放在發(fā)布的存儲位置。還可以使用相應(yīng)的代碼實(shí)現(xiàn)內(nèi)容的catalog管理,將視頻內(nèi)容的轉(zhuǎn)碼結(jié)果放到數(shù)據(jù)庫里。這樣的完全自動化的流水線適用于業(yè)務(wù)繁忙的、轉(zhuǎn)碼任務(wù)較多的場景。
至此,我已經(jīng)介紹完了轉(zhuǎn)碼服務(wù)。轉(zhuǎn)碼服務(wù)的完成是第一步,接下來要考慮如何讓用戶看到視頻,這里我們建議使用谷歌云的技術(shù)服務(wù)——CDN。完成轉(zhuǎn)碼服務(wù)的視頻可以放在對象存儲里,讓對象存儲作為視頻的源站。對象存儲可以對其進(jìn)行名稱定義、目錄劃分和生命周期管理。
同時,將視頻放在對象存儲里的最主要的目的是實(shí)現(xiàn)高效的內(nèi)容的分發(fā)。因此,可以利用谷歌云的CDN接入GCS,將對象存儲作為源站,讓用戶可以更高速地下載視頻。舉個例子,谷歌云在全球有較多的網(wǎng)絡(luò)部署,也有一百多個CDN節(jié)點(diǎn),這些節(jié)點(diǎn)與全球上千家主流運(yùn)營商有直連。
因此,在大部分國家和區(qū)域,用戶經(jīng)過ASN的一跳就可以訪問CDN的緩存,可以高效地觀看或下載視頻。一些小的運(yùn)營商的用戶經(jīng)過ASN的兩跳或三跳也可以訪問CDN的緩存,然后可以高效下載內(nèi)容。
接下來,給大家介紹谷歌云的CDN網(wǎng)絡(luò)和源站的對象存儲的部署情況。可以看到,在全球的一些熱點(diǎn)地區(qū),比如美國、歐洲等,部署是比較密集的,可以幫助出海用戶實(shí)現(xiàn)快速高效的視頻業(yè)務(wù)的部署。目前,很多出海客戶使用谷歌云的CDN不僅實(shí)現(xiàn)了視頻的下載,還實(shí)現(xiàn)了應(yīng)用、游戲的下載。這是因為,使用谷歌云的轉(zhuǎn)碼服務(wù)和CDN可以以無縫的方式實(shí)現(xiàn)視頻業(yè)務(wù)的部署。
最后,展示一下谷歌云CDN的性能報告。相比于其他CDN的平臺,由于在全球建立了很多骨干網(wǎng),所以谷歌云的CDN有網(wǎng)絡(luò)的優(yōu)勢,可以幫助用戶以更低的延時下載內(nèi)容,而且吞吐也較高。
審核編輯:劉清
-
視頻編碼
+關(guān)注
關(guān)注
2文章
112瀏覽量
21013 -
HLS
+關(guān)注
關(guān)注
1文章
128瀏覽量
24043 -
ffmpeg
+關(guān)注
關(guān)注
0文章
46瀏覽量
7381
原文標(biāo)題:應(yīng)用谷歌云實(shí)現(xiàn)高效視頻轉(zhuǎn)碼和分發(fā)
文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論