了解一下:視頻轉碼那些事兒

2021-02-24 廣東金融IT課程學習

當在線觀看視頻越來越火爆、越來越普及的時候,人們會下意識覺得「一個視頻應用系統應該也不怎麼複雜,不就是點開網頁(APP),定位想看的視頻,點擊播放按鈕嘛」。

是這樣嗎?

不全是!!!

一個視頻應用系統涉及源視頻的上傳、轉碼、存儲、分發、播放五個過程,而每一個過程又需要不同的模塊去保證其按需、高效、穩定地運行。如果把一個視頻應用系統比作一個大連環,那麼本文將要介紹的轉碼部分絕對是其中的「鉑金」一環,其太重要了。

接下來就依次按為什麼轉碼(Why)、什麼是視頻轉碼(What)、怎麼優化視頻轉碼(How)進行介紹。

對一個視頻服務平臺,通過上傳獲得的視頻源千差萬別,有高清的影視片源、UGC視頻以及推拉過來的直播流等。平臺直接將這些視頻分發出去可能存在諸多問題,例如視頻源碼率過高、視頻質量差、視頻參數不合理、視頻格式不被播放器支持等等,此時就會啟動轉碼為用戶提供優化的、規範化的視頻流。

轉碼目的即是以更低的傳輸帶寬來提供高質量、規範化的音視頻內容,此可以總結為如下幾點:低碼率、高質量、規範化。

低碼率。

首先視頻的高碼率不都是必須的,例如一個影視片源的碼率動輒10多Mbps甚至更高,但由於人眼的視覺冗餘,即便將碼率大幅降低,丟失了一些「細節」,也不會影響視頻的觀看體驗,如圖1所示。

這是因為視頻的碼率和質量之間大致符合如圖2所示的關係,即當碼率比較高時,適當調低碼率對質量的影響並不大。另外每一代視頻壓縮標準都比上一代有更高的壓縮性能,因此可用更低的碼率達到相同甚至更高的視頻質量,這也為用戶節省了存儲、帶寬成本。

圖1:碼率可適當調低示例圖

(左圖13Mbps,右圖4Mbps,觀看體驗極相近)

圖2:視頻質量和碼率之間的關係趨勢

高質量。

隨著網絡傳輸能力和終端性能的提升,用戶對視頻質量有了更高的期待。4K、VR等視頻提供給用戶的時候,平臺可通過轉碼可獲得更高的「碼率—質量」性價比。另一方面,低碼率範疇中的一些UGC視頻畫質較差,平臺可在轉碼中結合視頻增強手段達到優化視頻客觀質量和主觀體驗的目的。

規範化。

首先規範化視頻解析度、碼率等參數的配置。不同觀看者的網絡環境不盡相同,能接受的保證流暢播放的碼率也就不同,因此對同一片源提供不同檔次的視頻供觀看者選擇(或自適應選擇)就特別重要,也被廣泛使用。

規範化不同檔次的解析度、碼率配置的目標應該是多個檔次能將常用碼率範圍覆蓋,如100kbps~5Mbps;同時各個檔次的質量之間應該呈現出均勻的差異,如示意圖3所示。

另外根據客戶需求或終端支持情況進行編碼格式的調整。如果終端播放器不支持H.265的編碼格式,則需要將H.265格式的視頻源轉碼到支持的編碼格式,如H.264;或者客戶明確選擇將非H.265格式的視頻轉碼到H.265格式,也會觸發轉碼的需求。

圖3:各檔次的質量分布趨勢

視頻轉碼的流程如圖4中所示,即輸入視頻先進行解封裝,然後對解封裝後的音視頻數據解碼再編碼,並再次封裝後輸出。

一段視頻中的音頻部分和視頻部分對用戶的觀看體驗同等重要,當出現有雜音、音視頻不同步等現象時,整段視頻的觀看體驗就會很差。但鑑於音頻和視頻的處理有流程上的相似性,且音頻所佔數據量相對較小,因此本文後續主要關注視頻數據的轉碼。

圖4:視頻轉碼流程

視頻轉碼的封裝層包括解封裝和再封裝,如圖4中外層紅框所示。而封裝格式指將視頻數據、音頻數據、字幕數據等按一定的規則組織到一起。

平時生活中看到的視頻後綴種類各種各樣,例如有MP4、FLV、TS、MKV、AVI、MOV等,這些即是視頻的封裝格式。

MP4是被廣泛應用的封裝格式,對各種設備的兼容性較好;FLV體積輕巧、封裝簡單,可以容易地通過瀏覽器上的Flash Player進行播放;MKV是一種能封裝多個視頻軌、多個音頻軌,以及多個字幕軌的封裝格式,便於網絡傳播。各種封裝格式特點不同,根據實際場景選擇使用。

視頻轉碼的編碼層包括視頻數據的解碼,以及根據需要再編碼,如圖4中內層紅框所示。再編碼是一個數據壓縮的過程,即編碼中通過減少原視頻中的時間冗餘、空間冗餘、視覺冗餘以及信息冗餘達到壓縮視頻數據量的目的。這些冗餘的示意如圖5所示。

圖5:視頻中的冗餘示意圖

至於這些冗餘的削減過程,可以結合圖6中所示的簡化版編碼框架進行理解。時間冗餘削減過程:輸入視頻和幀間預測量相減得空域的殘差,後續只需要處理這些殘差和其他一些信息數據即可;該過程只發生在P幀或B幀中。空間冗餘削減過程:輸入視頻和幀內預測量相減得空域的殘差,其是利用了空間鄰域的相似性;I幀中都採用的幀內預測,但幀內預測也可發生在P或B幀中。

除此之外,得到空域殘差後的下一步的DCT變換也是一個削減空間冗餘的過程,即會將能量主要集中在矩陣的左上角。

視覺冗餘削減過程:DCT變換後的係數會經過量化過程,量化會將視頻的一些高頻細節損失掉,損失的細節如果不被察覺就達到了理想的削減視覺冗餘的效果;而量化本身是有損的,量化程度較大時也必然會被察覺到。

信息冗餘削減過程:量化後的矩陣中非零係數更少,且集中在左上角,熵編碼會進一步利用係數的出現頻率的不同進一步壓縮數據量,並最終寫入碼流完成編碼。

圖6:編碼框架圖

視頻解碼和編碼遵從各自採用的標準,可以相同也可以不同。關於視頻編碼標準,從上世紀80年代開始,不同的標準化組織或獨立、或合作的方式積極推進了一系列視頻編碼標準,極大地推動了視頻技術的發展,如圖7所示。

目前H.264/AVC因其技術的成熟仍是業界應用最為廣泛的標準。新一代的H.265/HEVC和同階段的AVS2相對於H.264有一倍的性能提升,但因HEVC的專利費等問題仍使其處於過渡階段。

ISO/IEC的MPEG和ITU-T的VCEG專家共同組成的JVET也早已開始探索下一代視頻編碼標準H.266/VVC,今年四月份已開始標準化工作,預計2020年完成定標,其瞄準在HEVC的基礎上再提升一倍的性能,且目前已能提升40%以上。

有多家視頻相關行業的企業在2015年發起的AOM組織,力求制定高效且開源的視頻標準,且在年初發布了AV1,比HEVC提升30%左右的性能,當前的編碼速度仍十分緩慢,但隨著眾多企業和開發者的積極參與,其前景還是很值得期待。

圖7:視頻編碼標準演進圖

轉碼輸入端獲取流式視頻,以及輸出後被用戶在線觀看都會涉及流媒體傳輸協議,它是指音視頻封裝成被流式傳輸所支持的格式(如TS封裝格式),然後通過流媒體傳輸協議(如HLS)進行傳輸。

常見的流媒體傳輸協議有RTP、RTCP、RTSP、HTTP-FLV、RTMP、HLS、DASH等。不同協議各有優劣勢,如HLS將數據切割成一些小的TS片,通過持續的下載實現連續播放,其可用於點播和直播,但HLS的特點也決定了其延時會大一些,而RTMP主要用在直播中,延時也會好一些。

除此之外的WebRTC的發展為那些延時更敏感的視頻應用提供了解決思路,因此對協議的選擇還要根據具體場景的特徵。

視頻轉碼的優化主要針對圖4中的編碼層,視頻的解碼和再編碼都是循著所採用的標準進行,採用更高性能、支持更多特徵的標準本身也是一種優化。標準確定後並不意味對轉碼沒有了優化的空間,只要碼流符合標準規範,構建碼流過程的非標準環節有大片的優化空間供發揮。

一般情況下更高的視頻質量意味著更高的轉碼複雜度,因此如何以更快的轉碼速度實現更高的視頻質量是目前轉碼優化的一個主要內容,除此之外轉碼優化的目標還包括更低的時延、可控的碼率。

(1)更快的轉碼速度、更高的視頻質量

解碼再編碼這個鏈條中涉及的中間節點眾多,優化轉碼的速度和視頻質量可以考慮以下一些方面:快速解碼、模式決策、視頻增強、評價方法、智能轉碼、線程並行、分片並行,以及可以對解碼信息復用以進行優化。

快速解碼。

解碼是轉碼的第一步,其雖然相對編碼複雜度會小一些,但仍是耗時的重要一環,並且在從大尺寸視頻轉轉碼到小尺寸時仍有可能形成性能瓶頸,因此更有提速的必要性。

快速解碼可以考慮並行的解碼結構,即當一個塊依賴的塊可用時即可開始解碼,這類似於HEVC中的WPP方式。

另一方面,解碼就是一個標準解讀的過程,在有條件的情況下將實現彙編化有助於提升速度。當然了,彙編優化方式的採用也遍布於轉碼流程的各個環節。

模式決策。

模式決策一直是編碼中比較耗時的一環,如H.264/AVC中的INTRA編碼有9種預測模式,HEVC中增加到35種,在塊單元變大的情況下劃分方式也大幅增加,即便在後續的編碼標準中模式決策也是較為耗時的模塊。

一方面可以通過傳統方式進行優化,如圖8所示;CTB的SIZE決策(深度決策)可以從大到小、從小到達相結合,決策某一CTB是否繼續劃分可以參看周邊塊信息等。

另一方面可以結合機器學習的方式進行探索,即周邊塊各種信息(如劃分深度、預測方向、MV、QP)的運用上,可以與當前塊的模式找出更好的匹配,並能通過持續學習在不同視頻片段、視頻類型中更新。

圖8:模式決策優化示意圖

視頻增強。

某些視頻源本身就存在瑕疵,比如當前流行的手持設備拍攝的視頻,可能存在模糊、噪聲、振鈴效應、塊效應等問題。以這些視頻作為源,無論給予其多高的碼率,都不可能轉碼出滿意的視頻,而此時視頻增強就顯得特別重要。

可以簡單地進行濾波、銳化、對比度調整等,也可以有針對性的美膚、美顏,甚至可以利用超分重建的方式提升視頻源的質量。如圖9中所示,左邊是有增強的效果圖,右側是無增強的效果圖,實際播放時增強版的優越性會更加明顯,這使得在不增加碼率的情況下優化了觀看體驗。

圖9:視頻增強效果對比示例

評價方法。

最常用的視頻客觀質量評價指標是PSNR,但視頻客觀質量不總能準確表徵用戶觀看體驗;後續又相繼提出能反應主觀質量的一些指標,如SSIM、VQM、MOSp等,但性能表現一般,更多地是作為輔助指標使用。

近來,Netflix提出的VMAF(VideoMultimethod Assessment Fusion)是結合了視覺信息保真度、細節損失、運動信息後的一個回歸指標。雖然其有一些瑕疵,如其以單幀為基礎進行計算、不具有絕對意義只具有相對意義,但仍得到了業界的認可,並十分值得期待。

以能更準確反映主觀體驗的評價指標指導編碼,也能提升編碼性能,如圖10所示,左側是800Kbps,右側是650Kbps,但右側的VMAF值高出1個dB,也符合實際觀看的效果。

圖10:利用VMAF主觀指標優化轉碼示例

智能轉碼。

視頻源的類型多種多樣,如影視、動漫、遊戲、體育等類型,更普遍意義上來說,一個視頻中不同片段上的類型也可能存在差異。

不同類別的視頻在編碼時的最優編碼配置是可能有明顯差異的,例如卡通類型與PPT類型在各個檔次的「解析度—碼率」配置分布就可能相差甚大。

因此應用中可以根據需要選擇分類的精度(如序列級精度、片段級精度),智能分析後對不同的類型採取不同的轉碼配置以優化編碼性能,如圖11中所示。

圖11:智能轉碼示意圖

線程並行。

轉碼過程中某個節點一旦形成速度瓶頸,造成其後面節點或前面節點的處理等待,則往往會對整體的速度產生影響。不同視頻類型、不同轉碼檔次時各個環節的計算量分布又會產生差異,因此自適應安排各個節點上的線程,以及配合好各個節點之間的銜接也十分必要。

分片並行。

每一代視頻編碼標準性能的提高也都伴隨著複雜度的提高,因此幀級並行、Slice並行、Tile並行、塊級並行都已並不得不被採用。

在此之上,視頻編碼可以通過分片並行進一步提速,即一個視頻可根據實際需要(如轉碼時限)劃分成N段,N段並行完成編碼後再進行聚合,如圖12所示。分片並行編碼不但為極速編碼提供了方案,也為分布式編碼提供了可能。

圖12:分片轉碼基本流程

解碼信息復用。

轉碼是先解碼再進行編碼,解碼部分天然地為編碼環節提供了一些可用信息,如劃分方式、預測方向、MV等,合理利用可以使轉碼速度和視頻質量的性價比大幅提速。簡略的流程如圖13所示。

圖13:解碼信息復用示意圖

(2)更低的時延

在實時視頻應用中,端到端時延直接影響著用戶體驗,其構成因素可能涉及到諸多方面,如在直播中時延會涉及視頻採集、傳輸、轉碼、關鍵幀間隔配置、流媒體服務環節、CDN分發環節以及播放等。本文中關注的轉碼部分對時延的影響主要來自於解碼輸入緩衝時延、解碼時延、編碼時延和編碼後的輸出緩衝時延,如圖14所示。

轉碼時延中的編碼時延主要來源是預處理緩衝區時延,該緩衝區緩衝的幀用於輔助碼率分配分析、編碼分析等,更多的緩衝幀意味著更好的預測和分析,進而影響得到的編碼視頻質量。在實際使用中,緩衝區的設置還需要根據場景的時延需求、質量等級需求等自適應選擇。

圖14:轉碼時延位置和構成示意圖

(3)可控的碼率

視頻不同片段的複雜度不同,理想情況應為其分配不同的碼率以平滑視頻質量,但是碼率較大的波動不適用於要求碼率恆定的網絡,而為了使碼率穩定又可能增大轉碼時延或降低視頻質量。

可以看出視頻轉碼中的碼率控制至關重要,卻又涉及多個因素,故應根據具體場景進行選擇,比如網絡視頻一般採用ABR(Average Bitrate),而廣電系統視頻採用CBR(Constant Bitrate)的碼率控制。

無論ABR還是CBR,其實現都需要可靠性較高的碼率預估方式,或者說需要更為準確的先驗信息和碼率之間的映射關係。先驗信息可以是簡化的殘差信息(SAD、SATD)、多pass編碼中已有的碼率分布信息等。另外,不同時段的視頻內容也一直變化,因此先驗信息與碼率的映射關係也需要持續更新。

本文介紹了關於視頻轉碼的目的、轉碼的端到端組成以及視頻轉碼中比較典型問題的優化方向。隨著人工智慧的快速發展,其在視頻技術中應用也越來越多、越成熟,轉碼的智能化也已成為研究的熱點並在逐步落地。

相關焦點

  • 乾貨總結 | 那些關於零基礎轉碼你要知道的事兒
    本期分享會為大家帶來的是關於零基礎轉碼的滿滿乾貨,主要包括轉碼的心路歷程,Leetcode刷題技巧以及轉碼面試的經驗分享,相信會給零基礎考慮轉碼的姐妹帶來很大的幫助。其次,找工作的時候,如果你沒有CS degree,在你轉H1B(工作籤證)的時候,可能會有一點問題,這個在美國的同學需要特別注意一下。我希望在大家投入時間找工作之前,就考慮好這個問題。因為現在籤證的情況不是很樂觀,如果你的學位跟engineering一點關係都沒有,比如accounting之類,直接轉碼,可能會出現一點問題。
  • 直播轉碼和視頻文件轉碼優化之路
    - 1 -可擴展性類似奈飛的視頻點播,可以提前進行視頻文件轉碼,在客戶點擊播放時,直接選擇相應碼率和編碼格式的視頻進行加載播放,在日益豐富的不斷增長的新的視頻(UGC、自製劇、第三方版權視頻等等),基於文件轉碼任務的彈性擴展是每個客戶都需要的;類似下圖奈飛團隊的做法,核心幾點:優化閒置資源(低成本的閒置資源):比如 AWS 的 Spot實例,用戶自身業務波峰波谷釋放出來的預留實例等等
  • 快速小巧的視頻轉碼工具,轉碼速度快出天際...(第319期)
    --文末附:極速視頻轉碼神器轉碼設置支持在轉碼時添加設置控制視頻質量,色彩管理等操作。管家測評這個視頻轉碼神器的優點是小巧且轉碼速度快,並且不需要像別的轉碼軟體一樣需要安裝使用,放在U盤中隨時帶走,需要的時候打開即可使用。
  • 【Xilinx 視頻實時轉碼一體機解密系列二】:低比特率高品質 ABR 視頻實時轉碼(HPE 參考架構)
    對實時視頻流的需求給視頻服務提供商帶來了嚴峻挑戰,因為他們必須在管理基礎設施和網際網路帶寬運營成本的同時,還要為客戶提供高質量體驗。鑑於視頻轉換的計算強度,轉碼不斷推升對靈活應變硬體加速的需求。如今,視頻服務提供商運用新一代壓縮標準和自適應比特率 (ABR) 視頻流協議,在保障高質量視頻分發的同時對帶寬進行管理。然而,兩種方法雖都能降低比特率,但卻會提高計算的複雜性。
  • 淺談Xivd格式視頻轉碼幾點要素
    什麼格式適合轉碼成Xivd?通常我們推薦Xivd;因為轉換過程很快;經過對比發現使用高碼率的.flv格式視頻文件,來轉碼.avi (Xivd),轉碼速度快,且畫面損失較小;MPEG(.dat .mpg .vob)也蠻適合轉碼.avi同樣具備轉碼速度快,畫面損失小的特點;.mkv格式在轉碼.avi時比較容易出現失敗的情況。
  • HandBrake 視頻轉碼工具
    HandBrake是一款小巧到極致的實用視頻轉換軟體,軟體功能非常強大,界面簡潔明晰、操作方便快捷,設計得很人性化。HandBrake中文版支持Win/Mac/Lin作業系統,批量轉換視頻格式,並自帶壓縮功能。需要的朋友千萬不要錯過哦!功能介紹可將DVD影片輸出成MP4、AVI、OGM等各種不同的格式,讓用戶方便在各種不同的播放程序(器)中觀看!
  • 一分鐘學會視頻裁切和轉碼,超簡單!
    大家好,我是蘿蔔今天沒有太多廢話要說因為我很酷▽隨著短視頻在各大平臺的普及火爆視頻相關工作者需要掌握一項技能這個技能就是視頻裁切與轉碼Emm,很難嗎?要求不是很專業,就很簡單且一定比格式工廠強許多才華豎橫溢的人外表長得很醜但他們的內在非常驚豔迅雷影音就是這麼個醜東西它不美但很實用我一用就用了這麼多年它有截取與轉碼功能
  • 一款開源的視頻轉碼工具
    HandBrake是一款開源的視頻轉碼工具,適用於Windows、Linux、Mac平臺。
  • 除了格式工廠還有別的選擇 推薦一款視頻轉碼軟體 mediacoder
    ,可以用軟體把三個部分單獨提取出來,可以提取出無字幕版的視頻文件做電影片段剪輯這三種格式,MKV雖然不能直接導入pr,但可以用MKVExtract軟體進行音視頻和字幕的解流,提取出的視頻文件一般是H.264格式而另外兩種格式想要進pr編輯,只能用視頻轉碼軟體轉碼。
  • 關於視頻編碼與視頻格式的那些事
    在正式講視頻編碼與視頻格式前,先簡單介紹一下:視頻的本質是什麼其實視頻的本質,是代碼,剪輯軟體會將視頻的畫面信息等編製成一行一行的代碼,最終編製成一個視頻這個視頻裡包含這很多很多代碼,如果用電腦自帶的文本打開,你會看到很多亂七八糟的數字和符號而如果用播放器打開,則播放器會自動解譯視頻裡的代碼,將它轉換回畫面信息音頻信息等等
  • 超好用的視頻格式轉換、壓縮轉碼工具!
    網上視頻處理工具很多,很多都是免費的。很多人就是不知道怎麼選擇。在嘗試過的軟體中,我覺得 HandBrake 大概是最好的開源免費跨平臺視頻壓縮和格式轉換軟體了!作為一款通用的視頻轉碼和壓制工具,它不僅免費,還支持跨平臺的Win、Mac與Linux作業系統。01.
  • APP推廣乾貨之安卓市場那些事兒!
    哈嘍,小夥伴們,我是你們又帥又可愛的——小布作為姑婆那些事兒的顏值擔當,我今天的出現主要是為了給大家說一件重要的事情
  • 使用ffmpeg對視頻轉碼成mp4
    在上一篇文章中,已經完成ffmpeg及x264庫的安裝,接下來編寫代碼對視頻文件進行轉換。
  • 用WebAssembly在瀏覽器中對視頻進行轉碼
    在本文中,我們來探索一下 FFmpeg.wasm[1],並寫一個簡單的代碼轉換器,把數據流傳輸到視頻元素中並播放出來。FFmpeg.wasm一般我們通過其命令行使用 FFmpeg。我們可以先把文件轉碼為切片,並將其逐步添加到視頻緩衝區中。你可以用 Media Source Extension APIs[8] 來構建流媒體播放,其中包括 MediaSource 和 SourceBuffer 對象。創建和加載緩衝區的操作可能非常棘手,因為這兩個對象都提供了生命周期事件,必須通過處理這些事件才能在正確的時間添加新的緩衝區。
  • 郵輪那些你不得不知道的事兒
    郵輪離我們越來越近,中國的母港也開來了一條又一條大船~ 如果作為郵輪相關從業者或者郵輪愛好者,你一定關注過這些著名的郵輪公司:皇家加勒比郵輪公司、公主郵輪、MSC地中海郵輪公司、歌詩達郵輪、麗星郵輪…那今兒讓我們聊一聊關於郵輪那些你不得不知道的事兒吧
  • 常見視頻接口的那些事兒
    常見視頻接口的那些事兒2017-3-251.
  • 可支持萬人直播的一站式實時音視頻WebRTC技術,了解一下?
    隨著短視頻、在線課堂、互動直播等音視頻應用的崛起,如何適配差異化的網絡環境,為用戶提供更流暢高清的實時音視頻服務成為關注重點。而當前的音視頻技術依然無法避免各種卡頓丟包、網絡覆蓋問題,也無法提供聊天、存儲、轉碼、AI處理等全棧式的解決方案。
  • 超級簡單無需安裝全新視頻下載轉碼神器來了!解決你99%的視頻下載難題
    今日素材分享-文末提供下載碼精細分類專注設計效率與品質提升超級給力全能視頻下載轉碼解析神器軟體支持WIN最近有微信有好多小夥伴問我視頻下載轉碼有沒有好的軟體分享哈說起來在某些網站下載的視頻都有播放器指定的格式後期軟體編輯不了的問題
  • 每天新增海量視頻,Youtube如何實現高效轉碼?
    而YouTube則選擇了另一種更聰明的做法:通過優化視頻處理的參數使其在滿足最低視頻質量標準的同時不會增加額外的比特率和計算周期。要在視頻壓縮和轉碼時滿足視頻質量、比特率和計算周期的要求,一般的做法是尋找對大量視頻(而非所有視頻)平均最優的轉碼參數組合。這種最優組合可以通過嘗試每種可能來尋找,直到找到最讓人滿意的結果。
  • 【軟體】MKV視頻格式專用轉換器,一鍵轉碼,竟如此絲滑
    「首先先簡單介紹一下MKV格式。MKV是一種多媒體封裝格式,能夠在一個文件中容納無限數量的視頻、音頻、圖片或字幕軌道。它不是一種壓縮格式。當你用視頻播放器播放MKV格式的視頻時,你會發現視頻可選字幕和配音。