1. 程式人生 > >HEVC 編解碼詳解

HEVC 編解碼詳解

本文轉載自http://blog.csdn.net/nonmarking/article/details/47356791

本系列文章分為三個部分,首先對HEVC標準做一個介紹,然後回顧一下H.264中的位元速率控制方法,分析為什麼不能直接沿用舊的方法,最後具體分析HEVC的位元速率控制方法和相應程式碼。

HEVC標準介紹

首先我們需要明白的是,其實每一代視訊編碼標準的更新都是為了實現兩個大目標:更好的支援高分辨視訊;以更高的壓縮率達到同等的主觀質量。除此之外,還有提高網路適配性(比如在H.264中定義的網路抽象層概念)、抗出錯效能(H.264中的資料分割、靈活巨集塊順序)等等的小目標。當然,提升這些效能要付出的代價往往是複雜度的大幅增加。在這幾個問題上,HEVC也不例外。當年JCT-VC確定的HEVC的核心目標就是在H.264 High Profile的基礎上將壓縮效率提高一倍。解析度方面HEVC也可以支援到8K。

從編碼框架上來說,HEVC並沒有革命性的改變,依舊採用了混合編碼框架,也能看到在H.264中就有的變換、量化、熵編碼、幀內預測、幀間預測、環路濾波等模組。但是HEVC在這個框架中幾乎所有模組都引入了新的編碼技術。一路看過各種編碼標準之後就會發現,隨著視訊編碼技術的不斷成熟,各種新推出的編碼標準基本都是這個模式:在保持原有框架基本不變的情況下采用更多的新技術。
 

上圖即為一個典型的混合編碼架構

下面我們就來具體看看HEVC中的一些新概念以及在H.264已有概念上的一些創新。

1. 編碼結構與配置

為了應對不同應用場合, HEVC設立了GOP的3種編碼結構,即幀內編碼、低延時編碼和隨機訪問編碼。在幀內編碼結構中,每一幀影象都是按幀內方式進行空間域預測編碼,不使用時間參考幀。在低時延( Low Delay)編碼結構中,只有第一幀影象按照幀內方式進行編碼,併成為 IDR幀,隨後的各幀都作為一般的P幀和B幀進行編碼。這主要是為互動式實時通訊設計的。隨機訪問( Random Access) 編碼結構主要由分級B幀構成( Hierarchical B) ,週期性地(大約每隔 1秒) 插入隨機訪問( Clean Random Access,CRA) 幀。這些CRA 幀成為編碼視訊流中的隨機訪問點( Random Access Point,RAP) 。所謂隨機訪問點是指對這些幀的解碼可以獨立進行,不需要參考位元流中前面已經解碼的影象幀。這種對隨機訪問方式有力地支援了通道轉換、 搜尋以及動態流媒體服務等應用。

2. 四叉樹單元劃分

在HEVC中依然採用分塊編碼方式,但不同於H.264中固定尺寸的巨集塊,HEVC中塊的尺寸是可以自適應改變的。HEVC中定義了四個新的概念:編碼樹單元、編碼單元、預測單元和變換單元。
(1) 編碼樹單元
類似於H.264 /AVC中的巨集塊,HEVC將編碼幀分為若干編碼樹塊( Coding Tree Blocks,CTB),它們是進行預測、變換、量化和熵編碼等處理的基本單元,其尺寸或者所包含的畫素數可以是16×16、32×32或64×64。同一位置的亮度CTB和兩塊色度CTB,再加上相應的語法元素形成一編碼樹單元( Coding Tree Units,CTU)。一般來說,Unit是從語法結構角度進行描述,而Block是從取樣值角度進行描述,並不特意區分這兩個概念。由於目前HEVC只支援4:2:0的畫素格式,所以色度塊CTB的畫素數為同等亮度塊的1 /4,即水平和垂直方向都是亮度塊的一半。
(2) 編碼單元
CTU 又可以按照四叉樹結構分解為若干方形編碼單元( Coding Units,CU),同一層次的CU必須是同一尺寸的4個方塊,最多可有4層分解,即64×64,32×32,16×16和8×8。如果不分解,則這個CTU僅包含一個 CU。每個CU包含一塊亮度編碼塊( Coding Blocks,CB) 、兩個色度CB以及相應的語法元素。CB 的大小和影象的特性是自適應的,在影象比較平緩區域,選擇比較大的CB,而在影象邊緣或紋理複雜的區域,選擇比較小的CU,有利於提高編碼效率。CU是決定進行幀內預測還是幀間預測的單元,也就是說整個 CU只能是一種預測模式,不是幀內就是幀間。CU還可以按照四杈樹層次分解(或不分解) 為更小的預測單元( Prediction Units,PU) 和變換單元( TB,Transform Units) 。
(3) 預測單元
預測單元PU是進行預測運算的基本單元,包括幀內和幀間預測兩類。一個編碼單元CU可以包含一個或者多個預測單元,CU到PU僅允許一層劃分,最小的PU為4×4。劃分可以是對稱的,也可以是不對稱的。如圖所示, 一個2N×2N ( N可以是 4、8、16、32) 的CU可劃分為8種包含PU方式。幀間預測時可以在這 8 種方式中任意選擇,在幀間預測的跳過( skip) 模式中只允許選擇2N×2N這種模式,幀內預測時只允許選擇2N×2N或N×N方式。

(4) 變換單元
變換單元TU是進行變換和量化的基本單元,是在CU的基礎上劃分的,但受到所在的預測單元PU的限制。如PU是正方形,則TU也必須是正方形,尺寸為4×4、8×8、16×16、32×32。幀內編碼模式中變換單元的尺寸需小於或者等於預測單元,而幀間編碼模式中變換單元可以大於預測單元,但是不能超過編碼單元 CU。一個編碼單元中多個變換單元也是按照四叉樹的結構排列,即每向下一層劃分為4個小的正方形。如 PU為非正方形時,TU 也需非正方形,其大小為32×8、8×32、16×4、4×16,可用於亮度分量,其中只有32×8、8×32 可用於色度分量。HEVC中允許使用的變換包括4x4、8x8、16x16和32x32整數DCT變換以及對於Intra預測中4x4亮度塊使用的整數DST變換。
雖然Intra預測的模式資訊是以PU為單位傳遞的,但Intra預測是以TU為單位進行的。所有PU內部的各個TU的預測方向是一致的,以TU為基本單元進行Intra預測的目的是使已重建畫素和待預測畫素之間的距離儘量短,進而提高預測效率,即進行幀內預測的基本單元是TB。這也是在Intra編碼的CU中,TU永遠不會比PU大的原因。

3. 條和片的劃分

條( Slice)的劃分在H.264 /AVC 中就有,HEVC也允許將影象幀劃分為若干條,條是HEVC 中獨立的編碼區域,條的劃分以CTU或更小的CU為界。為了支援平行計算和差錯控制,某一個條可以劃分為更小的條,謂之“熵條”( Entropy Slice,ES)。每個ES都可獨立地進行熵解碼,而毋須參考其它的ES。如在多核的並行處理中,就可以安排每個核單獨處理一個ES。每個條編碼為一個NAL單元,其容量小於等於最大網路傳輸單元( Maximum Transmission Unit,MTU) 容量。

在HEVC中新引入了片( Tile)的劃分,用水平和垂直的若干條邊界將影象幀劃分為多個矩形區域,每個區域就是一個片,每一個片包含整數個CTU,片之間也可以互相獨立,以此實現並行處理。片劃分時並不要求水平或垂直邊界均勻分佈, 可根據平行計算和差錯控制的要求靈活掌握。在編碼時影象中的片也是按掃描順序進行處理,每個片中的CTU 也是按掃描順序進行。在HEVC中,允許條和片在同一影象幀中同時使用,既可以一個條中包含若干片,又可以一個片中包含若干條。

4. 影象格式

取樣結構方面還是以前那三樣,但是在位元深度方面,HEVC引入了一項新技術,提供了一種對編碼器內外有別的位元深度表示方式,即內部位元深度增加( IBDI,Internal Bit Depth Increase)方式。這種方式允許在編碼器內採用高於8位元的畫素深度(如10位元)進行編碼運算,而編碼器外部,即編碼器的輸出影象仍然是8位元深度。這是因為8位元深度對人眼來說可能已經足夠了,但是對編碼處理而言,有時顯得精度不夠,往往會帶來的計算誤差和累積誤差。
除了位元深度之外,HEVC還有一點值得注意的是它沒有提供專用於隔行視訊的工具,而是將隔行視訊的一幀看作兩個獨立的場,對各個場資料分別進行編碼,簡化了編碼器的實現。這也是因為隨著數字視訊技術的快速發展,視訊的隔行掃描方式日漸式微。

5. 幀內預測

HEVC為亮度資訊定義了 33 種不同的幀內預測方向,連同平面( Planar) 和直流( DC) 模式,總共35種幀內預測模式。DC模式和H.264 /AVC 類似,對當前塊的所有畫素使用同一個預測值,即它們的平均值。平面模式的預測值由水平和垂直兩個方向上已知畫素的線性內插產生,特別適用於影象的平坦區域。在幀內編碼中色度訊號也採用相應亮度訊號所採用的預測模式。這樣,對於色度資訊,HEVC有5種幀內預測模式: Planar 模式( 0) 、 垂直模式( 1)、水平模式( 2)、DC 模式( 3)和匯出( derived) 模式( 4),即相應的亮度模式。

6. 幀間預測

HEVC的幀間預測編碼總體上和H.264 /AVC 相似,但進行了如下幾點改進
(1) 非對稱運動劃分( Asymmetric Motion Partitions,AMP)
允許非對稱地劃分64×64到16×16的CU為更小的PU,PU可以是方形的, 也可以是矩形的。每個採用幀間預測方式編碼的PU都有一套運動引數,包括運動向量、參考幀索引和參考表標誌。因為 AMP 允許 PU在運動估計和運動補償中更精確地符合影象中運動目標的形狀,而不需要進一步的細分來解決,因此可以提高編碼效率。
(2) 運動合併( Motion Merge)
HEVC對運動引數的編碼有3種模式,簡稱之為Inter 模式、Skip 模式和Merge 模式。前兩種模式和 H.264 /AVC 類似,Merge模式是HEVC新引入的。這樣, 對於每個幀間編碼的 PU,可以在下列 3 種編碼模式中選擇: (1) 採用對運動引數直接編碼(如對運動向量進行預測編碼)的Inter 模式,(2) 採用運動合併技術的 Merge 模式,(3)採用改進的 Skip 模式。Inter 模式需要傳送當前編碼 PU 的運動向量來完成基於運動補償的幀間預測。HEVC中運動向量可採取空間或時間預測編碼的方式( H.264 /AVC 僅採用空間預測)。而Skip 模式和Merge模式都無需傳送MV 資訊,只傳送候選PU塊的索引資訊,由解碼端採用運動推理( Motion Inference)方法(如拷貝)來獲得運動資訊,推理依據來自空域鄰近塊或時域鄰近塊(候選塊)的MV。在Skip 模式中連殘差資訊也省略了,編碼器只需要編碼運動合併候選者的索引資訊,以保證解碼時Skip PU可以拷貝中選者的運動引數作為
自己的運動引數。這樣,對那些幀間變化很少,或者運動靜止的區域編碼只需很少的位元。
在以往標準的幀間預測中,對以每個幀間預測塊都要傳輸一套運動引數。為了進一步提高編碼效率, 可對鄰近的PU塊進行合併(Merge)處理,形成Merge幀間預測編碼模式,即將毗鄰的運動引數相同或相近的幾個PU塊合併起來形成一個所謂的“小區”( Region),只要為每個小區傳輸一次運動引數,不必為每個PU塊分別傳輸運動引數。在運動合併模式中,HEVC 為當前正在編碼的PU建立一個先前已編碼的鄰近PU (稱為“候選”PU) 列表。其中候選PU既可以是在編PU的空間鄰近,也可以是時間鄰近。編碼器按照率失真準則選取並標註這個運動合併列表中哪一個候選PU被選中,繼而使得當前編碼的PU在解碼時只要拷貝中選PU的運動引數。顯然,運動合併方式不需要為當前PU去編碼運動向量,取而代之的是隻需要編碼運動合併列表中候選者的簡單索引資訊。
Merge 模式的這種 MVP 候選集的設定和選擇方法在 HEVC 中稱之為高階運動向量預測( Advanced Motion Vector Prediction, AMVP),它也同樣適用於 Skip 模式和Inter模式的最佳MVP塊的選擇。
(3) 參考圖片管理
H.264/MPEG-4 AVC中使用基於滑動視窗(Sliding Window)和MMCO(Memo Management Control Operation,記憶體管理控制操作)的方式對DPB(Decoded Picture Buffer,解碼圖片快取)中的圖片進行操作。H.264/MPEG-4 AVC使用的是基於“命令”的參考圖片管理方式。由於HEVC中支援時間可分級,高時間級別的圖片可以人為的被丟棄。若被丟棄的圖片中含有控制DPB的命令,則會導致不正確的DPB狀態。故HEVC使用更為魯棒的基於狀態的RPS(Reference Picture Set,參考圖片集合)的方式對DPB中的參考圖片進行管理。HEVC中的RPS並不是基於命令的,而是基於狀態的,故更為穩健,抗差錯性也更強。

7. 變換和量化

HEVC 的量化機理和 H.264 /AVC基本相同,是在整數DCT變換時一併完成的。HEVC採用了率失真優化的量化( Rate Distortion Optimized Quantization,RDOQ) 技術,在給定位元速率的情況下選擇最優的量化引數使重建影象的失真最小。量化操作是在變換單元 TU 中分別對亮度和色度分量進行的。在TU中所有的變換系數都是按照一個特定的量化引數 QP 統一進行量化和反量化的。HEVC的RDOQ 可比H.264 /AVC提高編碼效率 5% 左右(亮度) ,當然帶來的負面影響是計算複雜度的增加。

8. 熵編碼

HEVC只採用了CABAC進行熵編碼,而沒有使用CAVLC。
除此之外,考慮到高清、超高清視訊編碼的巨大運算量,在HEVC提供了基於條和基於片的便於並行編碼和解碼處理的機制。然而,這樣又會引起編碼效能的降低,因為這些條和片是獨立預測的,打破了穿越邊界的預測相關性,每個條或片的用於熵編碼的統計必須從頭開始。為了避免這個問題,HEVC 提出了一種波前並行處理( Wavefront Parallel Processing,WPP)的熵編碼技術,在熵編碼時不需要打破預測的連貫性,可儘可能多地利用上下文資訊。
在編碼的波前並行處理時,一旦當前 CTU 行上邊的兩塊 CTU 已經處理完了,立即用一個新的並行程序(通常是一個新的執行緒) 開始處理這新的一行CTU,其過程如圖所示。之所以需要兩塊 CTU,是因為幀內預測和運動向量預測需要依賴於來之當前CTU 上邊和右上邊的 CTU 的資料。WPP 熵編碼初始化的引數可來自於從當前行上邊的兩塊完全編碼的 CTU 獲得的資訊,這樣就可在新的編碼執行緒中使用盡可能多的上下文資訊。

9. 環路濾波

環路濾波( Loop Filtering)位於編碼器預測環路中的反量化/反變換單元之後、重建的運動補償預測參考幀之前。因而,環路濾波是預測環路的一部分,屬於環內處理,而不是環外的後處理。環路濾波的目標就是消除編碼過程中預測、變換和量化等環節引入的失真。 由於濾波是在預測環路內進行的,減少了失真,儲存後為運動補償預測提供了較高質量的參考幀。HEVC 除了採用和 H.264 /AVC類似的環內去方塊濾波( DeBlocking Filter,DBF) 外,還增加了新的樣值自適應偏移( Sample Adaptive Offset,SAO)環內濾波工具,形成了2 個按順序進行的處理: 去方塊濾波和SAO濾波。
去方塊濾波方面,首先我們知道方塊效應是由於採用影象分塊壓縮方法所形成的一種影象失真,尤其在塊的邊界處更為明顯。為了消除這類失真,提高重建視訊的主觀和客觀質量,H.264 /AVC 在方塊的邊界按照“邊界強度”進行自適應低通濾波,又稱去方塊濾波。HEVC也使用了類似的環內去方塊濾波來減輕各種單元邊界(如CU、PU、TU 等)的塊效應。HEVC 為了減少複雜性,利於簡化硬體設計和並行處理,不對4×4的塊邊界濾波,僅對8x8邊界進行濾波,且僅定義了3個邊界強度等級( 0、1 和2),濾波邊界附近的畫素,省卻了對非邊界處畫素的處理。在濾波前,對於每一個邊界需要判決: 是否需要進行去方塊濾波? 如果需要,還要判決到底是進行強濾波還是弱濾波。判決是根據穿越邊界畫素的梯度值以及由此塊的量化引數 QP 匯出的門限值共同決定的。HEVC的去方塊濾波對需要進行濾波的各類邊界統一進行,先對整個影象的所有垂直邊界進行水平方向濾波,然後再對所有的水平邊界進行垂直方向濾波。
樣值自適應偏移( SAO) 是HEVC的一項新的編碼工具,對要重建的影象逐畫素進行濾波。它先按照畫素的灰度值或邊緣的性質,將畫素分為不同的型別,然後按照不同的型別為每個畫素值加上一個簡單的偏移值,達到減少失真的目的,從而提高壓縮率。加偏移值有兩種模式,帶偏移( Band Offset,BO)和邊緣偏移( Edge Offset,EO)。編碼器對影象的不同區域選擇施加BO模式或EO模式的偏移,並在碼流中給出相應的標識。
BO模式將畫素值從0到最大值分為32個相等的間隔——“帶( bands)”,例如對8位元而言,最大值是 255,則此時的帶的寬度就是256 /32 = 8,每個帶所包含的畫素值都比較相近。如果某 CTB 的亮度值分佈在4個相鄰的帶中間,說明這原本是一個比較平坦的影象區域,這樣的區域人為失真容易出現,則需對這些畫素值施加偏移量(可正可負),使畫素值的分佈趨向更集中。當然這個偏移量也要作為帶偏移傳輸到解碼端。
EO模式使用一種3畫素結構來對所處理的畫素進行分類。在該畫素所處邊緣(一維) 的方向上、以該畫素為中心再加上最近鄰的2個畫素,形成45°、垂直、水平和 135°四種“3 畫素結構”,如圖所示。按照3畫素值的不同分佈,該畫素可被分為峰值畫素(如果其值大於相鄰的2個畫素) ,谷值畫素(如果其值小於相鄰的 2 個畫素),邊緣畫素(如果其值等於任何一個相鄰畫素)和其它畫素(如果不符合前 3 種) 共4類。對4類不同的畫素所加的偏移值也不同。

最後來簡單順一遍HEVC的編碼過程,如下圖

輸入HEVC編碼器的是原始視訊序列,原始視訊序列會先按照LCU(Largest Coding Unit,最大編碼單元)分成不重疊的矩形塊。對於每個LCU,編碼器先要選擇合適的CU四叉樹劃分方式。對於每個不再繼續劃分的CU,編碼器會選擇合適的預測方式進行預測。CU可以繼續劃分為PU和TU。經過預測後,原始訊號和預測訊號的差稱作殘差訊號,而殘差訊號經過變換量化後傳遞到解碼端。預測值加上經過反變換和反量化後重建的殘差值構成了重建值。而此重建值需經過濾波(包括去塊效應濾波和SAO)處理後,構成最終的輸出圖片。

以上介紹了HEVC標準的相關內容,並且在最後簡單梳理了一下HEVC的編碼流程,下一篇文章中將會介紹HEVC所採用的全新的位元速率控制演算法。

相關推薦

HEVC 解碼

本文轉載自http://blog.csdn.net/nonmarking/article/details/47356791 本系列文章分為三個部分,首先對HEVC標準做一個介紹,然後回顧一下H.264中的位元速率控制方法,分析為什麼不能直接沿用舊的方法,最後具體分析

JPEG檔案/解碼(2)

心情 世界早在我們出現之前,就那麼巨集偉雄壯,每一個城市都是百年以至千年的成果,每一座巍峨的山峰都是百萬以致上億年的淺變,每一種生物,都是勇敢者和幸運者堅持了40億年的結晶。這條時間的單行線上,充滿了傳奇。當世界穿過我們的命運時,我們顯得太渺小,但我們的思維讓我們可以無

Linux的SOCKET(轉)

readv lose 服務 網絡字節序 返回值 quest avi 取數 key Linux的SOCKET編程詳解 1. 網絡中進程之間如何通信 進 程通信的概念最初來源於單機系統。由於每個進程都在自己的地址範圍內運行,為保證兩個相互通信的進 程之間既互不幹擾又

GCC

.net .cn .html tail csdn http log tails details http://www.cnblogs.com/lisuyun/p/4169395.html http://blog.csdn.net/kai_gai/article/detail

NetDataTable用法【轉】

security 操作 出錯 eight 按鈕 rdate sum 客戶 基本 http://www.diybloghome.com/article/16.html DataTable表示一個與內存有關的數據表,可以使用工具欄裏面的控件拖放來創建和使用,也可以在編寫程序過

AOP 面向切面

準則 rim 實現 handle 建議 cal ring 模式 ide 引言 對類(class)增強的手段通常分為以下三類 1.繼承 子類通過繼承父類或者實現接口對類進行增強 2.裝飾者模式(Wrapper) 常用於對類的某個方法進行重寫,以實現更強大的功能.常用於

16位匯第六講匯指令第第三講

不變 無符號 目的 分享 class 邏輯移位 aam 但是 二進制      16位匯編第六講匯編指令詳解第第三講 1.十進制調整指令 1. 十進制數調整指令對二進制運算的結果進行十進制調

初級遊戲外掛 windows運行原理+遊戲輔助程 遊戲外掛

穩定 程序員 操作系統 上下 open 服務 dll stdio.h 五個 詳解遊戲輔助編程 【目錄】 1-什麽是Windows API 2-Windows進程 3-Windows 的內存的運行原理 4-windows 中句柄的概念 5-Windows的變量類型

keil5 的模塊化

表示 keil signed 庫文件 是我 多說 一個個 默認 c51 模塊化編程是什麽?就是可以吧你學的程序分成一個個模塊,方便修改和移植。從事單片機和嵌入式這方面,編程具有強大移植性可以說是重中之重,如果你寫一些LED數碼管之類的小程序, 用模塊化編程有些小題大做。

PHP和javascript中url編碼解碼

http 遇到 註意 spa color 空格 www. col test 在實際開發中,我們可能會遇到路徑編碼解碼的問題,下面總結了一下: PHP中:   1、urlencode(編碼),urldecode(解碼) $a = urlencode(‘http://www.

FFmpeg解碼(原理與函式使用說明)

視訊解碼知識 •純淨的視訊解碼流程 ▫壓縮編碼資料->畫素資料。 ▫例如解碼H.264,就是“H.264碼流->YUV”。 •一般的視訊解碼流程 ▫視訊碼流一般儲存在一定的封裝格式(例如MP4、AVI等)中。封裝格式中通常還包含音訊碼流等內容。 ▫對於封裝格式中的

Scala ---003 函數入門

spa \n cal you ttl tle leo 需要 ring 一、函數的定義與調用 在Scala中定義函數時,需要定義函數的函數名、參數、函數體。 我們的第一個函數如下所示: def sayHello(name: String, age: Int) =

ADPCM檔案解碼

一、概述:   本文敘述瞭如何通過IMA-ADPCM壓縮和解壓縮演算法來完成從IMA-ADPCM檔案轉換為PCM檔案的過程。主要包括的內容有:PCM和IMA-ADPCM WAVE檔案內部結構的介紹,IMA-ADPCM壓縮與解壓縮演算法,以及如何生成特有的音訊壓縮格式檔案等三方面的內容。 二、WAVE檔

JS中encodeURIComponent(URL)編碼與decodeURIComponent(URL)解碼

(1)   encodeURIComponent(url) 函式 定義和用法        encodeURIComponent() 函式可把字串作為 URI 元件進行編碼。 語法     

Base64編碼解碼

npm:In Browser<script src="base64.js"></script>node.jsvar Base64 = require('js-base64').B

《JAVA高並發》-Thread start方法的源碼

star java ava mage inf bsp 高並發 src img Thread start方法的源碼: 《JAVA高並發編程詳解》-Thread start方法的源碼

《JAVA高並發》-並發程有三個至關重要的特性:原子性,有序性,可見性

nbsp 圖片 原子 重要 ava java 有序性 可見 並發編程 《JAVA高並發編程詳解》-並發編程有三個至關重要的特性:原子性,有序性,可見性

H264 解碼協議

1.、什麼是 H264? H264 是 MPEG-4 標準所定義的最新編碼格式,同時也是技術含量最高、代表最新技術水平的視訊編碼格式之一,標準寫法應該是H.264 H264 視訊格式是經過有失真壓縮的,但在技術上儘可能做的降低儲存體積下獲得較好影象質量和低頻寬影象快速傳輸。

python 3下文字檔案的解碼

很多次遇到python 3下的檔案編碼,解碼問題,我這裡的平臺是mac,下面吐血搞一波。。 1. ASCII編碼: 字串是一種資料型別,但是,字串比較特殊的是還有一個編碼問題。因為計算機只能處理數字,如果要處理文字,就必須先把文字轉換為數字才能處理。最早的計算機在設計時採用8個位

各種音視訊解碼學習解碼學習筆記(一):基本概念

最近在研究音視訊編解碼這一塊兒,看到@bitbit大神寫的【各種音視訊編解碼學習詳解】這篇文章,非常感謝,佩服的五體投地。奈何大神這邊文章太長,在這裡我把它分解很多小的篇幅,方便閱讀。大神部落格傳送門:https://www.cnblogs.com/skyofbitbit/p/3651270.htm