通過閱讀本文,您可以瞭解智能媒體服務常用名詞的基本概念。
音視頻基本概念
視頻轉碼
視頻轉碼是指將已經壓縮編碼的視頻碼流轉換成另一個視頻碼流,以適應不同的網路頻寬、不同的終端處理能力和不同的使用者需求。轉碼本質上是一個先解碼、再編碼的過程,因此轉換前後的碼流可能遵循相同或不同的視頻編碼通訊協定。
直播轉碼
直播轉碼是將視頻碼流轉換成另一個視頻碼流功能。通過轉碼,可以改變原始碼流的編碼格式、解析度和碼率等參數,從而適應不同終端和網路環境的播放,以適配不同的網路頻寬、不同的終端處理能力、不同的延時要求,滿足不同的使用者需求。
封裝格式(Format)
封裝格式也稱多媒體容器(Multimedia Container),是將已編碼壓縮好的視頻軌道、音頻軌道和中繼資料(視頻基本資料如標題、字幕等)按照一定的格式規範,打包放到一個檔案中,形成特定檔案格式的視頻檔案。
封裝格式主要分為兩大類:面向儲存的和面向流媒體的。
- 面向儲存的,常見的有AVI、ASF(WMA/WMV)、MP4、MKV、RMVB(RM/RA)等;
- 面向流媒體的,常見的有FLV、TS(需要配合流媒體網路傳輸協議,如HLS、RTMP等),MP4也支援流媒體方式(配合HTTP等)。
下面以流媒體傳輸協議的視角重點介紹面向流媒體的封裝格式:
- MP4:經典的視頻封裝格式,移動端(iOS、Android)、PC Web多終端都能良好支援。但MP4的視頻檔案頭太大,結構複雜;如果視頻較長(如數小時),則其檔案頭會過大,影響視頻載入速度,故更適合短視頻情境。
MP4由一個個的box(以前叫atom)組成,所有的Metadata(媒體描述中繼資料),包括定義媒體的排列和時間資訊的資料都包含在這樣的一些結構box中。Metadata 對媒體資料(比如視訊框架)引用說明,而媒體資料在這些引用檔案中的排列關係全部在第一個主檔案中的metadata描述,這樣就會導致視頻時間長度越大檔案頭就會越大、載入越慢。
- HLS(HTTP Live Streaming):蘋果公司推出的基於HTTP的流媒體網路傳輸協議,視頻的預設封裝格式是TS,除了多個TS分區檔案,還定義了用來控制播放的m3u8索引檔案(文字檔),可以規避普通MP4長時間緩衝頭部資料的問題,比較適合點播情境。移動端(iOS、Android)支援較好,但PC端IE存在相容性問題依賴播放器的二次開發(建議使用阿里雲Web播放器)。
- FLV:Adobe公司推出的標準,在PC端有Flash的強力支援,但在移動終端只有App實現播放器才能支援(建議使用阿里雲播放器),大部分手機端瀏覽器(特別是蘋果的行動裝置)均不支援。
- DASH(Dynamic Adaptive Streaming over HTTP):使用fragmented MP4(fMP4)格式,將MP4視頻分割為多個分區,每個分區可以存在不同的編碼形式(如解析度、碼率等);播放器端可自由選擇需要播放的視頻分區,實現自適應多碼率、不同畫質內容的無縫切換,提供更好的播放體驗。其中MPD檔案類似HLS的m3u8檔案,國外視頻網站如YouTube、Netflix等較多使用DASH。
- HLS+fMP4(HTTP Live Streaming with fragmented MP4):此處單列,但本質上還是HLS協議。蘋果公司於WWDC 2016宣布新的HLS標準支援檔案封裝格式為fragmented MP4,使用方法與TS分區類似,意味著一次轉碼可同時打包成DASH和HLS。
HLS(包括HLS+fMP4)和DASH是最常用的自適應流媒體傳輸技術(Adaptive Video Streaming),推薦使用。
編碼方式(Codec)
視頻編碼方式是指能夠對數位視訊進行壓縮或解壓縮(視頻解碼)的程式或者裝置。通常這種壓縮屬於有損資料壓縮。也可以指通過特定的壓縮技術,將某個視頻格式轉換成另一種視頻格式。常見的編碼方式有:
- H.26X系列:由ITU(國際電信聯盟)主導,包括H.261、H.262、H.263、H.264、H.265。
- H.261:主要在老的視頻會議和視頻電話產品中使用。
- H.263:主要用在視頻會議、視頻電話和網路視頻上。
- H.264:H.264/MPEG-4第十部分,或稱AVC(Advanced Video Coding,進階視頻編碼),是一種視頻壓縮標準,一種被廣泛使用的高精度視頻的錄製、壓縮和發布格式。
- H.265:高效率視頻編碼(High Efficiency Video Coding,簡稱HEVC)是一種視頻壓縮標準,H.264/MPEG-4 AVC的繼任者。HEVC不僅增益圖像品質,同時也能達到H.264/MPEG-4 AVC兩倍的壓縮率(等同於同樣畫面品質下碼率減少50%),可支援4K解析度甚至超高畫質電視,最高解析度可達8192×4320(8K解析度),這是目前發展的趨勢。
- MPEG系列:由ISO(國際標準組織)下屬的MPEG(生動影像專家組)主導,視頻編碼方面主要有:
- MPEG-1第二部分:主要使用在VCD上,有些線上視頻也使用這種格式,該轉碼器的品質大致上和原有的VHS錄影帶相當。
- MPEG-2第二部分:等同於H.262,使用在DVD、SVCD和大多數數位視訊廣播系統和有線分布系統(Cable Distribution Systems)中。
- MPEG-4第二部分:可以使用在網路傳輸、廣播和媒體儲存上,比起MPEG-2和第一版的H.263,它的壓縮效能有所提高。
- MPEG-4第十部分:技術上和ITU-TH.264是相同的標準,二者合作,誕生了H.264/AVC標準,ITU-T將其命名為H.264,而ISO/IEC稱它為MPEG-4進階視頻編碼(Advanced Video Coding,AVC)。
- AVS(Audio Video coding Standard):我國自主智慧財產權的信源編碼通訊協定,是《資訊技術先進音視頻編碼》系列標準的簡稱,目前已完成兩代AVS標準的制定。
- 第一代AVS標準包括國家標準《資訊技術先進音視頻編碼第2部分:視頻》(簡稱AVS1)和《資訊技術先進音視頻編碼第16部分:廣播電視視頻》(簡稱AVS+)。AVS+的壓縮效率與國際同類標準H.264/AVC最高檔次(High Profile)相當。
- 第二代AVS標準,簡稱AVS2,首要應用目標是超高清晰度視頻,支援超高解析度(4K以上)、高動態範圍視頻的高效壓縮。AVS2的壓縮效率比上一代標準AVS+和H.264/AVC提高了一倍,超過國際同類型標準HEVC/H.265。
- 其他系列,如,VP8、VP9(Google 主導),RealVideo(RealNetworks推出)等編碼方式,在互連網視頻使用較少,此處不再介紹。
選擇編碼方式要充分考慮播放終端(如移動端APP、Web瀏覽器等)的相容性,盡量使用最常見和廣泛支援的。阿里雲ApsaraVideo for VOD可使用視訊編碼格式:H.264/AVC(預設)、 H.265/HEVC,音頻編碼格式:MP3(預設)、AAC、VORBIS、FLAC。
位元速率(Bitrate)
位元速率是指每秒傳送的位元(bit)數,單位為bps(Bit Per Second),位元速率越高,傳送的資料越大。在視頻領域,位元速率等同於碼率。位元速率表示經過編碼(壓縮)後的音、視頻資料每秒鐘需要用多少個位元來表示,而位元就是二進位裡面最小的單位,要麼是0,要麼是1。與碼率類似,位元速率與音、視頻壓縮的關係,簡單的說就是位元速率越高,音、視頻的品質就越好,但編碼後的檔案就越大;如果位元速率越低則檔案越小。
碼率、碼流
碼率(Bitrate)是指視頻檔案在單位時間內使用的資料流量,也叫碼流或碼流率,是視頻編碼中畫面品質控制最重要的部分。量度單位為“位元每秒”(bit/s或bps),常使用Kbps(每秒多少千個位元)或Mbps。一般來說同樣解析度下,視頻檔案的碼率越大,壓縮比就越小,畫面品質就越高。碼率越大,說明單位時間內取樣率越大,資料流精度就越高,處理出來的檔案就越接近原始檔案,映像品質越好,畫質越清晰,要求播放裝置的解碼能力也越高。
當然,碼率越大,檔案體積也越大,其計算公式是檔案體積=時間×碼率/8。例如,網路上常見的一部60分鐘的碼率為1Mbps的720P的視頻檔案,其體積就大概為3600秒×1Mb/8=450MB。
解析度(Resolution)
解析度用來描述視頻對細節的分辨能力,通常表示為每一個方向上的像素數量,比如1280x720等。解析度決定了視頻畫面細節的精細程度。通常情況下,視頻的解析度越高,所包含的像素就越多,畫面就越清晰。
解析度是決定碼率的主要因素,不同的解析度要採用不同的碼率。總體而言,視頻的解析度越高,所要求的碼率也越大,但並不總是如此,不同解析度都有合理的碼率選擇範圍。所謂“合理的範圍”指的是,如果低於這個範圍,視頻畫面品質會很差;如果高於這個範圍,畫面提升有限甚至幾乎無提升,且浪費網路流量和儲存空間。
幀率(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值,則需要提高視頻的輸出碼率,以確保畫面品質不會降低,故會增加網路頻寬。
採樣率(Sample Rate)
採樣率也稱為採樣速度或者採樣頻率,定義了每秒從連續訊號中提取並組成離散訊號的採樣個數,單位為赫茲(Hz)。採樣率是指將類比訊號轉換成數字訊號時的採樣頻率,也就是單位時間內採樣多少點,採樣頻率越高聲音的還原就越真實越自然。
聲道、聲道數(Sound Channel)
聲道是指聲音在錄製(或播放)時,在不同空間位置採集(或播放)的相互獨立的音頻訊號。所謂聲道數,也就是聲音錄製時的音源數量或播放時的擴音器數量。
IDR幀對齊
IDR幀(Instantaneous Decoding Refresh Picture),即時解碼重新整理幀,是I幀的一種。與普通I幀的區別在於,一個IDR幀之後的所有幀都不能引用該IDR幀之前的幀的內容;相反,對於普通的I幀,其後的P幀和B幀可以引用該普通I幀之前的其他I幀。在編碼和解碼中為了方便,將首個I幀和其他I幀區別開,稱為IDR,這樣就方便控制編碼和解碼流程。
IDR幀的作用是立刻重新整理,使錯誤不致傳播,從IDR幀開始,重新算一個新的序列開始編碼。而普通I幀不具有隨機訪問的能力,這個功能是由IDR承擔。視頻播放時,播放器一般都支援隨機seek(拖動)到指定位置,而播放器直接選擇到指定位置附近的 IDR 幀進行播放最為便捷,因為可以明確知道該IDR幀之後的所有幀都不會引用其之前的其他I幀,從而避免較為複雜的反向解析。
在對同一個視頻進行多碼率轉碼時,如果指定IDR幀對齊(IDR Frame Alignment),則意味著所有輸出視頻的IDR幀在時間點、幀內容方面都保持精確同步,此時播放器便可實現多碼率視頻平滑切換,從而不會出現較為明顯的切換卡頓。
編碼層級
編碼檔次(Profile)是針對特定應用情境的特定編碼功能的集合。H.264 規定了三種主要層級:
- Baseline:支援I/P幀,只支援無交錯(Progressive)和CAVLC,一般用於低階或需要額外容錯的應用,比如視訊通話、手機視頻等即時通訊領域;
- Main:提供I/P/B幀,支援無交錯(Progressive)和交錯(Interlaced),同樣提供對於CAVLC和CABAC的支援,用於主流消費類電子產品規格如低解碼(相對而言)的 MP4、便攜的視頻播放器、PSP和iPod等;
- High:在Main的基礎上增加了8×8內部預測、自訂量化、無損視頻編碼和更多的YUV格式(如 4:4:4),用於廣播及視頻碟片儲存(藍光影片),高清電視的應用。
碼率控制方法
碼率控制是指視頻編碼中決定輸出碼率的過程,常用的碼率控制方法有:
- VBR(Variable Bitrate):動態位元速率,也就是沒有固定的位元速率,音視頻壓縮軟體在壓縮時根據音視頻資料的複雜程度即時確定使用什麼位元速率,這是以品質為前提兼顧檔案大小的方式。
- CBR(Constant Bitrate):固定位元速率,指檔案從頭到尾都是一種位速率。相對於VBR和ABR來講,它壓縮出來的檔案體積很大,而且視頻品質相對於VBR和ABR不會有明顯的提高。
- ABR(Average Bitrate):平均位元速率,是VBR的一種插值參數。LAME針對CBR不佳的檔案體積比和VBR組建檔案大小不定的特點創造了這種編碼模式。ABR在指定的檔案大小內,以每50幀(30幀約1秒)為一段,低頻和不敏感頻率使用相對低的流量,高頻和大動態表現時使用高流量,可以做為VBR和CBR的一種折衷選擇。
ABR在一定的時間範圍內達到設定的碼率,但是局部碼率峰值可以超過設定的碼率,平均碼率恒定。ABR是VBR的改良版,能確保輸出平均碼率在合理範圍,且在這個範圍內,還是動態根據複雜度編碼,也是阿里雲預設的編碼控制方式。
轉封裝
轉封裝指的是將視頻或音訊封裝格式進行轉換,如將AVI的視頻轉換為MP4,其間並不會進行音視頻的編碼和解碼工作,而是直接將視頻和音頻壓縮碼流從一種封裝格式檔案中擷取出來然後打包成另一種封裝格式的檔案。相比轉碼,轉封裝有兩大特點:
- 處理速度極快。音視頻編解碼過程十分複雜,佔據了轉碼的絕大部分時間。轉封裝不需要進行編碼和解碼,節約了大量的處理時間。
- 音視頻品質無損。沒有解碼(解壓縮)和編碼(壓縮)過程,所以不會有音視頻的壓縮損傷。
轉封裝後的檔案與原始檔案的解析度、碼率等幾乎一致,故播放時也稱其為“原畫”。
窄帶高清™
窄帶高清™技術,根據畫面內容進行編碼最佳化,使使用者在同等頻寬情況下觀看更清晰的視頻。從人眼視覺模型出發,在節省碼率的同時,也能提供更加清晰的觀看體驗,同等視頻品質下最高節省20%~40%頻寬。
智能ApsaraVideo for Media Processing基本概念
本地檔案(Local file)
本地檔案指您儲存於本地的媒體檔案,還未上傳至OSS。
輸入檔案(Input file)
輸入檔案指您儲存於OSS的媒體檔案,本地檔案上傳至OSS後即可作為一個輸入檔案。
輸出檔案(Output file)
輸出檔案指ApsaraVideo for Media Processing服務轉碼輸出的媒體檔案或檔案集合,儲存於OSS。
自訂模板(Custom template)
自訂模板簡稱Template,指使用者自行定義轉碼參數的轉碼模板,它是轉碼參數(音頻、視頻、容器等)的集合。每個自訂模板有一個唯一ID。使用者可在每個服務地區內建立自訂模板,並在該地區的所有轉碼作業中使用。
預置模板(Preset template)
預置模板簡稱Preset Template,指媒體轉碼服務內建的智能轉碼模板,能根據輸入檔案的特點動態調整轉碼設定,從而為使用者提供在一定頻寬條件下的最優轉碼輸出。ApsaraVideo for Media Processing服務支援的預置模板詳情參考預置模板詳情。
浮水印(Watermark)
ApsaraVideo for Media Processing服務支援在一個輸出檔案上覆蓋最多四個靜態浮水印。使用者可將浮水印位置、位移量、大小等相對固定的參數設定為浮水印模板。要為輸出視頻打浮水印時,在轉碼輸出配置中設定浮水印模板、浮水印內容參數即可。
通用概念
檔案格式
作業系統中的檔案名稱都有尾碼,即副檔名,例如1.doc,2.jpg,3.avi等。設定副檔名的目的是讓系統中的應用程式來識別並關聯這些檔案,讓相應的檔案由相應的應用程式開啟。常見的檔案格式如1.avi,2.mpg,3.mp4這些都叫做視頻的檔案格式,可由電腦上安裝的視頻播放器關聯和開啟(播放)。
UTC時間(ISO 8601標準時間格式)
UTC時間指的是國際標準時間,又稱世界統一時間、世界標準時間、國際協調時間。由於英文(CUT)和法文(TUC)的縮寫不同,作為妥協,簡稱UTC。國際標準時間是以原子時秒長為基礎,在時刻上盡量接近於世界時的一種時間計量系統。中國內地採用ISO 8601-1988的《資料元和交換格式資訊交換日期和時間標記法》(GB/T 7408-1994)稱之為國際協調時間。
如無特別指定,阿里雲ApsaraVideo for VOD預設返回的時間欄位或介面請求的時間參數都為UTC時間,時間格式按照ISO8601標準表示,格式為:YYYY-MM-DDThh:mm:ssZ。例如:2017-01-11T12:00:00Z 表示北京時間2017年1月11日20點0分0秒。註:北京時間與UTC的時差為+8,也就是UTC+8。
地區(Region)
地區為阿里雲的服務節點。使用者通過選擇不同阿里雲Region的服務,可就近使用阿里雲的服務,獲得更低的訪問延時及更好的使用者體驗。
Object Storage Service
阿里雲Object Storage Service服務(OSS)。ApsaraVideo for Media Processing服務對使用者儲存於OSS的媒體檔案進行轉碼,轉碼輸出檔案也儲存在OSS中。