為了便於您更好的理解和使用ApsaraVideo for Media Processing產品,您可以在使用前瞭解ApsaraVideo for Media Processing中管道、工作流程、轉碼模板、轉封裝等基本概念。
ApsaraVideo for Media Processing產品層級概念
作業/任務(Job)
作業/任務(Job)是MPS中的一個抽象概念。
常見類型:提交媒體資訊作業、提交轉碼作業、查詢轉碼作業、提交截圖作業、提交智能生產作業、提交智能標籤作業、提交媒體審核作業、提交視頻DNA作業、提交視頻著作權浮水印作業等。
提交任務:
提交方式:支援使用MPS控制台、調用各類提交作業的SDK/API、配置工作流程後通過觸發工作流程提交。
每次執行的作業/任務包含3個關鍵資訊:輸入、輸出和處理參數。以提交轉碼作業為例,提交時需要指定的核心參數有:輸入檔案、輸出路徑、轉碼模板(或轉碼參數)、管道、優先順序等。
調用模式和擷取結果:任務類型不同,執行所需的時間也不同。部分任務很快完成,但是多數任務都需要下載檔案,並經過一段時間進行處理、分析,無法即時完成 。因此將任務分為同步、非同步兩種調用模式。
調用模式
適用的任務
提交方式
擷取任務結果
流程圖
同步
單張截圖、擷取媒體資訊作業。
調用各類提交作業的SDK/API
提交後,介面會立即返回任務結果,如截圖檔案地址、媒體資訊詳情。
您還可以通過輪詢查詢任務介面擷取任務結果,但不支援通過配置MNS訊息接收任務結果。
說明若輸入檔案較大可能會逾時失敗,請酌情增加重試機制。
非同步
MPS的所有任務類型,包括:
媒體轉碼(普通轉碼、窄帶高清1.0、窄帶高清2.0、音視頻增強等)、截圖、擷取媒體資訊、視頻AI(視頻生產、智能標籤、智能審核、視頻DNA、數字浮水印)等。
MPS控制台(部分類型)
調用各類提交作業的SDK/API
配置工作流程後通過觸發工作流程提交(部分類型)
提交後,介面僅立即返回是否提交成功,而任務結果需要定時輪詢或配置MNS擷取。
定時輪詢:每個任務都有一個唯一JobId標識,在提交任務時會同步返回給調用方,或在控制台工作清單中查看。您可以記錄該JobId,定時輪詢查詢任務介面擷取任務結果。
配置MNS:為管道/工作流程配置MNS訊息,可以及時獲得任務結果。訊息通知包含任務ID(JobId)、使用者資料(UserData)和具體結果。
管道(Pipeline)
管道(Pipeline)是非同步任務的隊列。當您提交非同步任務後,任務會進入管道中進行排隊,在並發內根據優先順序和提交順序依次被調度執行。不同類型管道的建立數量、適用功能、並發能力不同。詳見管道概述。
工作流程(Workflow)
工作流程(Workflow)是預先編排好的一系列任務流程,可以實現在指定OSS Bucket上傳一個檔案後,自動按照預先編排好的環節和條件依次執行作業。
轉碼模板(Template)
轉碼模板是一系列處理參數的集合。在建立轉碼任務或使用工作流程時,可以使用轉碼模板簡化操作。每個轉碼模板都有一個唯一ID標識。按建立來源分為自訂模板、定製模板和系統預置模板。詳細資料請參見轉碼模板概述。
浮水印模板(Watermark template)
浮水印模板是一系列為視頻添加浮水印的參數集合(浮水印位置、位移量、大小等)。每個浮水印模板都有一個唯一ID標識。為輸出視頻添加浮水印時,可指定浮水印模板或直接傳入相關參數。
模板分析作業(Analysic task)
由於輸入檔案本身有誤差(解析度、碼率等),不一定所有的預置模板都適用於該輸入檔案。因此使用預置模板前,需要調用提交模板分析作業介面,模板分析作業的結果為該輸入檔案可用的預置模板列表,結果可以通過查詢範本分析作業介面擷取。
音視頻基本概念
轉碼(Transcoding)
轉碼(Transcoding)是指將已經壓縮編碼的音視頻碼流轉換成另一個音視頻碼流,以適應不同的網路頻寬、不同的終端處理能力和不同的使用者需求。轉碼本質上是一個先解碼、再編碼的過程,因此轉換前後的碼流可能遵循相同的視頻編碼格式,也可能不遵循相同的視頻編碼格式。常見的編碼格式有H.264、H.265、AV1等。
轉封裝(Packaging)
轉封裝指的是將視頻或音訊封裝格式進行轉換,如將AVI的視頻轉換為MP4,期間並不會進行音視頻的編碼和解碼工作,而是直接將視頻和音頻壓縮碼流從一種封裝格式檔案中擷取出來然後打包成另一種封裝格式的檔案。相比轉碼,轉封裝有兩大特點:
處理速度極快。音視頻編解碼過程十分複雜,佔據了轉碼的絕大部分時間。轉封裝不需要進行編碼和解碼,節約了大量的處理時間。
音視頻品質無損。沒有解碼(解壓縮)和編碼(壓縮)過程,所以不會有音視頻的壓縮損傷。轉封裝後的檔案與原始檔案的解析度、碼率等幾乎一致,在MP4轉M3U8+TS情境下因協議規範會導致封包大小增加。
解析度(Resolution)
解析度(Resolution)用來描述視頻對細節的分辨能力,通常表示為每一個方向上的像素數量,比如1280x720等。解析度決定了視頻畫面細節的精細程度。通常情況下,視頻的解析度越高,所包含的像素就越多,畫面就越清晰。
解析度是決定碼率的主要因素,不同的解析度要採用不同的碼率。總體而言,視頻的解析度越高,所要求的碼率也越大,但並不總是如此,不同解析度都有合理的碼率選擇範圍。所謂“合理的範圍”指的是,如果低於這個範圍,視頻畫面品質會很差;如果高於這個範圍,畫面提升有限甚至幾乎無提升,且浪費網路流量和儲存空間。
碼率(Bitrate)
碼率(Bitrate)是指視頻檔案在單位時間內使用的資料流量,也叫碼流或碼流率,是視頻編碼中畫面品質控制最重要的部分。量度單位為“位元每秒”(bit/s或bps),常使用Kbps(每秒多少千個位元)或Mbps。一般來說同樣解析度下,視頻檔案的碼率越大,壓縮比就越小,畫面品質就越高。碼率越大,說明單位時間內取樣率越大,資料流精度就越高,處理出來的檔案就越接近原始檔案,映像品質越好,畫質越清晰,要求播放裝置的解碼能力也越高。
當然,碼率越大,檔案體積也越大,其計算公式是檔案體積=時間×碼率/8。例如,網路上常見的一部60分鐘的碼率為1Mbps的720P的視頻檔案,其體積就大概為3600秒×1Mb/8=450MB。
幀率(Frame Rate)
幀率(Frame Rate)是單位時間內視頻顯示幀數的量度單位,也就是每秒鐘重新整理的圖片的幀數,量度單位為“每秒顯示幀數”(Frame Per Second,FPS)或“赫茲”。
高的幀率可以得到更流暢、更逼真的畫面效果。一般來說25~30fps就可接受,提升至60fps則可以明顯提升互動感和逼真感,但一般來說超過75fps就不容易察覺到有明顯的流暢度提升了。如果幀率超過螢幕重新整理率只會浪費圖形處理的能力,因為顯示裝置不能以這麼快的速度更新,這樣超過重新整理率的幀率就浪費掉了。在解析度不變的情況下,幀率越高,則對顯卡的處理能力要求越高。
主要畫面格間隔(GOP)
GOP(Group of Pictures)是一組以MPEG編碼的影片或視訊串流內部的連續映像,以I幀開頭,到下一個I幀結束。一個GOP包含如下映像類型:
I幀(Intra Coded Picture):又稱幀內編碼幀,為主要畫面格,是一種內建全部資訊的獨立幀,無需參考其他映像便可獨立進行解碼,可以簡單理解為一張靜態畫面。視頻序列中的第一個幀始終都是I幀,每個GOP由I幀開始。
P幀(Predictive Coded Picture):又稱幀間預測性編碼幀,需要參考前面的I幀才能進行編碼。表示的是當前幀畫面與前一幀(前一幀可能是I幀也可能是P幀)的差別。解碼時需要用之前緩衝的畫面疊加上本幀定義的差別,產生最終畫面。與I幀相比,P幀通常佔用更少的資料位元,但不足是,由於P幀對前面的P和I參考幀有著複雜的依賴性,因此對傳輸錯誤非常敏感。
B幀(Bidirectionally Predictive Coded Pictures):又稱雙向預測編碼幀,也就是B幀記錄的是本幀與前後幀的差別。要解碼B幀,不僅要取得之前的緩衝畫面,還要解碼之後的畫面,通過前後畫面的與本幀資料的疊加取得最終的畫面。B幀壓縮率高,但是對解碼效能要求較高。
GOP值表示主要畫面格的間隔(即兩個主要畫面格之間的幀數),也就是兩個IDR幀之間的距離,一個幀組的最大幀數。一般而言,每一秒視頻至少需要使用1個主要畫面格。增加主要畫面格個數可改善視頻品質,但會同時增加頻寬和網路負載。GOP值(幀數)除以幀率即為時間間隔,如阿里雲ApsaraVideo for VOD預設的GOP值為250幀,幀率為25fps,則時間間隔為10秒。
GOP值需要控制在合理範圍,以平衡視頻品質、檔案大小(網路頻寬)和seek效果(拖動、快進的響應速度)等:
加大GOP值有利於減小視頻檔案大小,但也不宜設定過大,太大則會導致GOP後部幀的畫面失真,影響視頻品質。
GOP值也是影響視頻seek響應速度的關鍵因素,seek時播放器需要定位到離指定位置最近的前一個主要畫面格,如果GOP太大意味著距離指定位置可能越遠(需要解碼的預測幀就越多)、seek響應的時間(緩衝時間)也越長。
由於P、B幀的複雜度大於I幀,GOP值過大,過多的P、B幀會影響編碼效率,使編碼效率降低。
但如果設定過小的GOP值,則需要提高視頻的輸出碼率,以確保畫面品質不會降低,故會增加網路頻寬。
編碼層級(Profile)
編碼層級(Profile)是針對特定應用情境的特定編碼功能的集合。
H.264 規定了三種主要層級:
Baseline:基本畫質,適合移動端裝置。支援I/P 幀,只支援無交錯(Progressive)和CAVLC。
Main:主流畫質,適合標準解析度裝置,如低解碼(相對而言)的 MP4、便攜的視頻播放器、PSP 和 iPod 等。支援I/P/B 幀,支援無交錯(Progressive)和交錯(Interlaced),也支援CAVLC和CABAC。
High:進階畫質,適合高解析度、大屏裝置,比如廣播及視頻碟片儲存(藍光影片),高清電視。在Main的基礎上增加了8x8內部預測、自訂量化、無損視頻編碼和更多的YUV格式。
AAC的主要層級:
aac_low:Low Complexity AAC (LC)
aac_he:High Efficiency AAC (HE-AAC)
aac_he_v2:High Efficiency AAC version 2 (HE-AACv2)
aac_ld:Low Delay AAC (LD)
aac_eld:Enhanced Low Delay AAC (ELD)
碼率控制方法
碼率控制是指視頻編碼中決定輸出碼率的過程,常用的碼率控制方法有:
CBR(Constant Bitrate):固定碼率模式,指檔案從頭到尾都是一種碼率。相對於VBR和ABR來講,它壓縮出來的檔案體積較大,而且視頻品質相對於VBR和ABR不會有明顯的提高。
VBR(Variable Bitrate):動態碼率模式,也就是非固定碼率。音視頻編碼時,根據輸入檔案的複雜程度即時確定使用什麼碼率,對於複雜內容分配更高碼率,對於簡單內容分配較少碼率。VBR一般需與Two-Pass編碼模式使用。VBR適用於儲存情境,可以更合理利用有限的儲存空間,但無法預知輸出檔案的大小和碼率波動情況。
ABR(Average Bitrate):平均碼率模式,是VBR的一種插值參數。LAME針對CBR不佳的檔案體積比和VBR組建檔案大小不定的特點創造了這種編碼模式。ABR在指定的檔案大小內,以每50幀(30幀約1秒)為一段,低頻和不敏感頻率使用相對低的流量,高頻和大動態表現時使用高流量,可以做為VBR和CBR的一種折衷選擇。ABR在一定的時間範圍內達到設定的碼率,但是局部碼率峰值可以超過設定的碼率,平均碼率恒定。ABR是VBR的改良版,能確保輸出平均碼率在合理範圍,且在這個範圍內,還是動態根據複雜度編碼,也是阿里雲預設的編碼控制方式。
VBV(Video Buffering Verifier):視頻緩衝區校正器提供了一種確保碼率被限制在某個最大值的方法,通過設定輸出碼率峰值maxrate和緩衝區大小bufsize來使用該方法。VBV可以與Two-Pass或CRF編碼一起使用,後一種模式也被稱為“Capped CRF”。
Bufsize:視頻緩衝區大小。設定取決於你期望碼率的波動情況。通常將bufsize設為maxrate的兩倍;如果用戶端緩衝比較小,可設定bufsize等於maxrate;如果想限制碼率,可設定bufsize為maxrate的一半或更小。
CRF(Constant Rate Factor):品質控制因子模式。將視頻品質量化為不同等級,0為無損,51為最差。通過設定CRF實現整體視頻的主觀品質恒定,所以碼率也會隨情境複雜度而波動。如果您不清楚使用什麼CRF,建議取值[23,29]。您可根據畫面複雜度進行調節,每增或減6,碼率會減少一半或增加一倍,通常同等清晰度下動畫片可以比實拍設定得更高。CRF可以獲得更好的視頻品質,但無法預知輸出檔案的大小和碼率波動情況。
Capped CRF:CRF輸出的碼率不固定,可以結合VBV一起使用來限制碼率波動範圍,避免出現碼率尖峰。
One-Pass:相比Two-Pass的編碼速度更快。是阿里雲預設的編碼方式。
Two-Pass:編碼器執行兩次來精準分配碼率,以擷取體積更小品質更高的編碼結果。first pass用於分析視頻並產生log檔案,second pass會根據分析結果執行編碼以獲得最佳編碼品質。Two-Pass相比One-Pass模式需要花費更多時間,所以無法使用在直播、即時通訊等對轉碼時效性要求高的情境。以及若輸入視頻的壓縮率已經很高,也不適合使用Two-Pass,會出現塊效應。
通用概念
地區(Region)
地區(Region)指阿里雲的服務節點。使用者通過選擇不同阿里雲Region的服務,可就近使用阿里雲的服務,獲得更低的訪問延時和更好的使用者體驗。
Object Storage Service
指阿里雲Object Storage Service服務(OSS)。ApsaraVideo for Media Processing服務對使用者儲存於OSS的媒體檔案進行轉碼,轉碼輸出檔案也儲存在OSS中。更多OSS相關概念,請參見OSS基本概念。
儲存空間(Bucket)
儲存空間是使用者用於儲存物件(Object)的容器,所有的對象都必須隸屬於某個儲存空間。儲存空間具有各種配置屬性,包括地區、存取權限、儲存類型等,使用者可以根據實際需求,建立不同類型的儲存空間用來儲存不同的資料。更多說明,請參見儲存空間(Bucket)。
對象(Object)
對象是OSS儲存資料的基本單元,也被稱為OSS的檔案。和傳統的檔案系統不同,對象沒有檔案目錄層級結構的關係。對象由元資訊(Object Meta),使用者資料(Data)和檔案名稱(Key)組成,並且由儲存空間內部唯一的Key來標識。對象元資訊是一組索引值對,表示了對象的一些屬性,比如最後修改時間、大小等資訊,同時使用者也可以在元資訊中儲存一些自訂的資訊。更多說明,請參見對象(Object)。
AccessKey(存取金鑰)
AccessKey簡稱AK,指的是訪問身分識別驗證中用到的AccessKey ID和AccessKey Secret。OSS通過使用AccessKey ID和AccessKey Secret對稱式加密的方法來驗證某個請求的寄件者身份。AccessKey ID用於標識使用者,AccessKey Secret是使用者用於加密簽名字串和OSS用來驗證簽名字串的密鑰,必須保密。
AccessKey包含以下三種:
Bucket的擁有者申請的AccessKey。
被Bucket的擁有者通過RAM授權給第三方要求者的AccessKey。
被Bucket的擁有者通過STS授權給第三方要求者的AccessKey。
更多資訊,請參見建立AccessKey。