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