整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          人教版七上Unit1基礎知識高頻考點盤點

          人教版七上Unit1基礎知識高頻考點盤點

          nit 1 My name's Gina.

          考點歸納

          介紹自己:My name's+名字 我的名字叫....../ I'm+名字 我是......

          2.詢問姓名

          1)What's your name? 你叫什么名字?

          Alan艾倫 / My name's Alan我的名字叫艾倫 / I'm Alan 我叫艾倫

          What's=What is name's=name is I'm=I am

          2)What's his name? 他叫什么名字?

          His name's Eric 他的名字叫埃里克。/ He's Eric . 他叫埃里克。

          ( He's=He is )

          3)What's her name?她叫什么名字?

          Her name's Mary. 她的名字叫瑪麗。/ She's Mary. 她叫瑪麗。

          ( She's=She is )

          Nice to meet you. 見到你很高興。(初次見面用語。)

          回答Nice to meet you. 或Nice to meet you, too.

          4. How do you do? 你好!回答:How do you do? 你好!

          5. Mr ,Mrs ,Miss 和Ms

          Mr ['mist?(r)] 先生

          Miss [mis] 小姐,女士;(年輕未婚女子)

          Mrs ['misiz] 太太;夫人(用于已婚婦女姓名前)

          Ms. [miz] 女士

          6. Is he Jack? 他是杰克嗎?

          Yes, he is. 是的,他是。

          No, he isn't. His name's Mike. 不,他不是。他的名字叫邁克。

          7. Are you Helen? 你是海倫嗎?

          Yes, I am.是的,我是。(肯定回答不能縮寫)/ No, I'm not. I'm Gina. 不,我不是。我是吉娜。

          英美人的姓名與中國人的姓名順序相反,名在前,姓在后。如Jim Green, 名是Jim,姓是Green。 △名字:first name(第一個名字)或 given name 姓氏:last name(最后的名字)或family name(家族的名字) 全名:full name

          [專項演練]

          ( )1.My full name is Jerry Harry Potter. My first name is_and my family name is_.

          A .Jerry Harry B .Jerry Potter C .Potter Jerry

          ( )2.I'm Tom Green. You can call (稱呼) me_

          A. Mr. Tom B. Mr. Green C. Green

          9. 問電話號碼: What's your/his/her telephone number? 用的是人稱代詞的賓格。

          It's + 號碼.

          電話號碼的讀法:用基數詞按順序讀出。"0"可讀O或zero.

          10. is/am/are的用法:

          I用am, you用are. 1) I am 14, how old are you? 我14歲,你多大了?

          is連著他/她/它 2) He/She is a student.他/她是個學生。What color is it?

          單數is,復數are. 3) The key is yellow. 鑰匙是黃色的。

          He and I are students. 他和我都是學生。

          同步語法:

          A) 用am, is, are填空。(5分)

          1. I _________ a Chinese girl.

          2. His name _________ Liu Xiang.

          3. The girls _________ good.

          4. Mary and I _________ nine.

          5. Her QQ number _________ 282836138.

          11. ID card 身份證

          Three and five is eight. 三加五等于八。

          What's nine and seven? 九加七等于幾?

          語法點:人稱代詞和物主代詞

          四、單元作文:根據下面提供的信息作自我介紹,我的名字是Kitty,我是一個12歲的女孩,我就讀于陽光學校,我愛幫助別人,我住在一個離市中心10英里的一棟公寓里。要求:語句通順,表達正確,不少于5句話。可適當發揮。

          五、課后提升訓練

          Eight, numner, first, friend, China

          1、Helen and Linda are good _______.

          2、Jim Smith is a boy.Jim is his _____ name.

          3、Six and two is _______ .

          4、Ms.Brown is in _______ now(現在) .

          5、-What's your QQ ______? -lt's 983161190.

          good-looking, remember, wear, glass, look, high, joke, popular, heavy, haveMiss Li is our English teacher. Do you know her? And what does she 1、 like? Let me tell you. She's of middle 2、 , but a little bit 3、 . She 4、 short brown and curly hair. She always 5、 a pair of 6、 on her face. She is 7、 , we like her very much. She loves to tell8、 , and she is very 9、 in our school. Can you10、 her?

          六、Enjoy reading:閱讀理解

          My father is tall and has short, gray(灰白的) hair. He wears glasses with heavy, black frames(框架). But I just see a picture of him from 1968. What a surprise! In the picture, he's 15 years old. He's short and he has glasses with small, round frames. He has long, yellow hair and it's really straight. He's wearing blue jeans and a T-shirt with the word "Love". I'm 15 years old now. I'm medium height and I have short hair. My hair isn't yellow, it's blue. My dad thinks it's strange(奇怪的), but my friends think it's great. I wear glasses, but my glasses have bright red frames. They're so cool! I have an earring(耳環) in one ear, too. Dad really can't understand(明白) that, I never wear blue jeans. I like big, baggy(松的) pants and long T-shirts. Most of my T-shirts have pictures of my favorite rock bands(搖滾樂隊) on them.

          1、What kind of glasses does Father wear when he is fifteen years old? He wears ___.

          A.glasses with heavy, black frames B.glasses with bright red frames

          C.long and yellow glasses D.glasses with small, round frames

          2、What color is my hair? It's _______.

          A.yellow B.blue C.gray D.red

          3、What do I like to wear? I like to wear ______.

          A.blue jeans and a T-shirtB.yellow jeans and a T-shirt with the word "love"

          C.big and baggy pants and long T-shirtsD.blue jeans and an earring

          4、What's on my father's T-shirt?

          A.The word "love". B.Heavy and black frames.

          C.Pictures of rock bands. D.An earring.

          5、Who has an earring in one ear?

          A.My dad does. B.I do. C.My father does. D.My Friends do.

          I'm Tony. My best friends are Frank and Cindy. We often do many things together(一起). Frank lives next to my home and we are in the same class. He is thirteen years old and tall and medium build. He has curly hair and blue eyes. He's good-looking and very clever. He's good at math and often helps me with my homework. He likes wearing black pants and yellow T-shirts.

          Cindy doesn't go to my school. She's eleven years old. She is thin and medium height. She has curly blonde hair and her eyes are brown. She is good-looking, too, but a little bit shy. She is good at playing the guitar. Her favorite subject at school is music. She often teaches Frank and me to play the guitar after class.

          The three of us have great fun together, and we help each other and sometimes play video games at my house.

          6、--What things do the three children do together? --They ___________.

          A. play video games and play the guitar B. play the guitar C. play video games

          7、_________ eyes are blue.

          A. Tony's B. Frank's C. Cindy's

          8、_________ good at math.

          A. Tony is B. Frank is C. Cindy is

          9、_________ is good-looking, but a little bit shy.

          A. Cindy B. Frank C. Tony

          10、Where do they play video games?

          A. At Cindy's house B. At Frank's house C. At Tony's house

          My name is Kate Miler. I like(喜歡) white and green. My telephone number is 6012-2234.I have(有) three good friends--Linda, Mary and Bill. Look (看) at the girl! Her name is Linda Strog, She likes white. Her telephone number is 6l12-2078.That girl is Mary Brown. She likes red and purple. Her telephone number is 6042-2807.Bill Smith likes back. His telephone number is 6086-2045.

          11、Kate Miller's first name is _____.

          A. Kate B. Miller C. Kate Miller

          12、____is a boy.

          A. Linda B. Mary C. Bill

          13、Mary likes _____.

          A. white and green B. red and purple C. blue and black

          14、Strog is ____last name.

          A. Mary's B. Bill's C. Linda's

          15、The last number of Mary's telephone number is ____.

          A. seven B. eight C. nine

          [課后練習]

          1)用所給詞的適當形式填空:

          1.What's (you) name? (I)name is Helen. 2.This is my mother. (she) name is Maria.

          3.He is my teacher. (he) English is pretty good. 4who is __? I like__ (he)

          5. look at __ ( I ) 6.These are (I)books and those are (they) computer games.

          7. (we)teacher is Mr. Wang. (he)mother is Liu Lily.

          8.She is Zhang Bozhi. Bozhi is (she) (one) name.

          2)單選

          1、Mary King is ____________ new teacher.

          A. I B. she C. her

          2、Is this your brother? What's ____________name?

          A. her B. his C. your

          3、The boy is Nick King. Nick is his______ name.

          A. first B. last C. family

          4、26個英文字母的第8個字母是——

          A. Ee B. Gg C. Hh

          5. 下面哪一組劃線部分讀相同的音素_____.

          A. Grace; thanks B. evening; quilt C. fine; yellow D. ruler; blue

          6. This is____ pen. _____ pen is _____orange.

          A. the; A; an B. a; A; / C. a; The; / D. the; The; an

          7. There is ______ "u" and _______ "h" in the word "hour".

          A. an; an B. a; a C. an; a D. a; an

          3)翻譯下列句子。

          Brown 是他的姓氏。

          Brown is ___________________________.

          他的電話號碼是什么?

          What is his________________?

          3.她的鋼筆是黑色的

          _________ pen is black.

           近期,不少剛入行的讀者反饋,希望有最新的視頻監控術語文檔,因此筆者在安防知識網已有內容的基礎上,結合國外一些常用視頻監控術語,對此部分內容進行整理,以期幫助行業人士快速了解監控行業,由于整理工作量龐大,內容將不定期更新,同時整理期間難免出現紕漏,如有問題請及時提出交流。

            AHD – 一種高清視頻信號的可靠傳輸技術。AHD技術能夠在已有的模擬傳輸線上實現超長距離(500米)高清視頻信號的可靠傳輸;其采用先進的Y/C信號分離和模擬濾波技術,可以有效地減少高頻區的色噪聲,圖像還原性更好;

            ANPR –Automatic Number Plate Recognition,車牌自動識別系統,有些地方也稱LPR(License Plate Recognition);

            API –Application Programming Interface,應用程序接口,是一些預先定義的接口(如函數、HTTP接口),或指軟件系統不同組成部分銜接的約定。在視頻監控系統中,大多數API并不公開,API經常用來實現與第一方軟件的系統集成, 如出入口控制系統、 樓宇控制系統、消防系統、環境監控系統等;

            AoV –水平視角,經常與視場角(FoV)共同出現;

            a&s—指《a&s安全&自動化》,于1994 年創刊,是中國第一本專業安防產業雜志;

            BLC-背光補償也稱作逆光補償或逆光補正,它可以有效補償攝像機在逆光環境下拍攝時畫面主體黑暗的缺陷。當攝像機處于逆光環境中拍攝時,畫面會出現黑色的圖像,然而在安防中逆光環境是難以避免的,這個時候就需要進行背光補償。當引入背光補償功能時,攝像機如果檢測到拍攝圖像一個區域中的視頻電平比較低,通過上面介紹的AGC電路改善和提升該區域的視頻電平,提高輸出視頻信號的幅值,使圖像整體清晰明亮。如果你想看的主題因明亮的背景而顯得暗淡,可以把BLC設置到ON狀態,從而補償強烈的背光。簡單地說,就是在光線較弱的環境下,背景較暗的區域,也能夠得到比較清晰的畫面;

            變焦比—變焦比(Zoom ration)是指變焦鏡頭的最短焦點和最長焦點之比,變焦比是一個比值因此不能夠全面地反映相機鏡頭變焦水平和鏡頭的性能;

            CBR—Constants Bit Rate,即固定碼率,就是靜態(恒定)比特率的意思,CBR是一種固定采樣率的壓縮方式。優點是壓縮快,能被大多數軟件和設備支持,缺點是占用空間相對大,效果不十分理想,現已逐步被VBR的方式取代;

            CCD –電荷耦合器件,是一種用電荷量表示信號大小,用耦合方式傳輸信號的探測元件,具有自掃描、感受波譜范圍寬、畸變小、體積小、重量輕、系統噪聲低、功耗小、壽命長、可靠性高等一系列優點,并可做成集成度非常高的組合件。在之前是攝像機中常用的傳感器類型,現已被CMOS 取代;

            CMOS –Complementary Metal Oxide Semiconductor(互補金屬氧化物半導體)的縮寫。由于較低的生產成本以及在弱光、寬動態與高分辨率上的表現力卓越,已經成為攝像機常用的傳感器類型;

            CNN –Convolutional Neural Networks, CNN)是一類包含卷積計算且具有深度結構的前饋神經網絡(Feedforward Neural Networks),是深度學習(deep learning)的代表算法之一;

            DoF- Depth of Focus ,景深是指在攝影機鏡頭或其他成像器前沿能夠取得清晰圖像的成像所測定的被攝物體前后距離范圍。光圈、鏡頭、及焦平面到拍攝物的距離是影響景深的重要因素;

            DHCP—動態主機配置協議是一個局域網的網絡協議。指的是由服務器控制一段IP地址范圍,客戶機登錄服務器時就可以自動獲得服務器分配的IP地址和子網掩碼。大多數 IP 攝像機默認使用 DHCP 來進行設備的初始設置;

            DNR –Digital Noise Reduction,數字降噪技術,用數字處理降低混雜在視頻信號中的雜質。由于圖像噪波的出現是隨機的,因此每一幀圖像出現的噪波是不同的。3D數字降噪通過對比相鄰的幾幀圖像,將不重疊的信息(即噪波)自動濾出,從而顯示出比較純凈細膩的畫面;

            DVR – Digital Video Recorder,簡稱DVR,即數字視頻錄像機,相對于傳統的模擬視頻錄像機,采用硬盤錄像,故常常被稱為硬盤錄像機;

            DWDR –Digital overlay wide dynamic range,數字寬動態。區別于寬動態,數字寬動態是寬動態技術中最容易實現的一種技術。寬動態能確保在大部分強光或逆光監控環境下,拍出清晰的圖像,而數字寬動態只能解決部分畫面問題,無法解決全部;

            EIS—Electric Image Stabilization指的是電子防抖技術,是一種通過軟件算法實現的防抖能力;

            EOL- End-Of-Life,已經停產產品或項目;

            F-Stop:即光圈級數(或光圈數值:F-number),如f/1.4、f/2.8等,,f/x.x越大,光圈越小,進光量越少,速度越慢;

            FPS - Frames Per Second,每秒傳輸幀數,通俗來講就是指每秒動畫或視頻的畫面數。在安防領域,30 FPS通常被稱為全幀率,一般的視頻監控均在10-25之間;

            FoV – 視場角,指鏡頭所能覆蓋的范圍,(物體超過這個角就不會被收在鏡頭里),一個攝像機鏡頭能涵蓋多大范圍的景物,通常以角度來表示,這個角度就叫鏡頭的視角FOV;

            GDPR —《通用數據保護條例》(General Data Protection Regulation,簡稱GDPR)為歐洲聯盟的條例,前身是歐盟在1995年制定的《計算機數據保護法》,對視頻監控數據、生物識別等應用具有影響及規范;

            GOP—Group of picture(圖像組),指兩個I幀之間的距離,兩個I幀之間形成一組圖片,就是GOP;

            GPU—圖形處理器(graphics processing unit,縮寫:GPU),又稱顯示核心、視覺處理器、顯示芯片,是一種專門在個人電腦、工作站、游戲機和一些移動設備(如平板電腦、智能手機等)上做圖像和圖形相關運算工作的微處理器;

            HD-CVI—High Definition Composite Video Interface簡稱CVI,即高清復合視頻接口,是一種基于同軸電纜的高清視頻傳輸規范,采用模擬調制技術傳輸逐行掃描的高清視頻;

            HD-TVI—即同軸高清視頻傳輸標準,是一種基于同軸電纜的高清視頻傳輸規范,作為全新的模擬高清解決方案,其能否彌補市場上目前存在的模擬高清的缺陷;

            HDD—Hard Disk Drive的縮寫,即硬盤驅動器。通常行業內也稱為機械硬盤,是監控常用的存儲介質;

            HFOV—horizontal field of view 水平視角,指相機的鏡頭在水平方向上能夠達到的可拍攝最大角度;

            HLC—高光補償,將圖像中亮度最高的區域(一般都是夜晚場景的車燈或者路燈等光源)拉灰,以減少類似于車燈等高亮光源對人眼的刺激;

            畫面比例-也稱屏幕比例,即屏幕寬度和高度的比例,又名縱橫比或者長寬比,標準的屏幕比例一般有4:3和16:9兩種,不過16:9也有幾個“變種”,比如15:9和16:10。在攝像機中16:9是常見的縱橫比,是高清720P與1080P傳感器慣用的比例,另4:3與3:2比例在一些攝像機中會使用到;

            IK—指IK防護等級,后面的數字(0-10),代表外殼對外界有害機械碰撞的防護等級。IK準適用于額定電壓不超過72. 5 kV的電器設備外殼對外界機械碰撞的防護分級,僅適用于對外界機械碰撞防護分級有專門要求的外殼;

            IP(防護等級)—IP(INGRESS PROTECTION)防護等級系統是由IEC(INTERNATIONAL ELECTROTECHNICAL COMMISSION)所起草,將電器依其防塵防濕氣之特性加以分級。IP防護等級是由兩個數字所組成,第1個數字表示電器防塵、防止外物侵入的等級(這里所指的外物含工具,人的手指等均不可接觸到電器之內帶電部分,以免觸電),第2個數字表示電器防濕氣、防水浸入的密閉程度,數字越大表示其防護等級越高;

            IPC—網絡攝像機又叫IP CAMERA(簡稱IPC),是一種結合傳統攝像機與網絡技術所產生的新一代攝像機,它可以將視頻影像通過網絡傳至地球另一端,且遠端的瀏覽者不需用任何專業軟件,只要標準的網絡瀏覽器(如“Microsoft IE或Netscape)即可監視其視頻影像。網絡攝像機一般由鏡頭、圖像傳感器、聲音傳感器、信號處理器、A/D轉換器、編碼芯片、主控芯片、網絡及控制接口等部分組成;

            IR –紅外線(Infrared Radiation),簡稱IR,是一種無線通訊方式,可以進行無線數據的傳輸。在監控領域,專指紅外攝像技術,其分為被動紅外攝像技術和主動紅外攝像技術。被動紅外攝像技術是利用任何物體在絕對零度(一273℃)以上都有紅外光發射的原理。由于人的身體和發熱物體發出的紅外光較強,其它非發熱物體發出的紅光很微弱,因此,利用特殊的紅外攝像機就可以實現夜間監控。被動紅外攝像技術由于設備造價高且不能反映周圍環境狀況,因此在夜視系統中不被采用。主動紅外攝像技術是利用特制的"紅外燈"人為產生紅外輻射,產生人眼看不見而普通攝像機能捕捉到的紅外光,輻射"照明"景物和環境,利用普通低照度CCD黑白攝像機或使用"白天彩色夜間自動變黑白"的攝像機或"紅外低照度彩色攝像機"去感受周圍環境反射回來的紅外光,從而實現夜視功能;

            LAN—局域網。局域網的覆蓋范圍一般是方圓幾千米之內,其具備的安裝便捷、成本節約、擴展方便等特點使其在各類辦公室內運用廣泛。局域網可以實現文件管理、應用軟件共享、打印機共享等功能,在使用過程當中,通過維護局域網網絡安全,能夠有效地保護資料安全,保證局域網網絡能夠正常穩定的運行;

          本文基本邏輯:視頻編碼的理論基礎是什么 → H.264 視頻編碼的基本概念、編碼工具、編碼流程及碼流結構 → H.265 的編碼工具及改進 → H.266 的編碼工具及改進)

          跟音頻編碼一樣,視頻編碼最重要的目的也是為了進行數據壓縮,以此來降低數據傳輸和存儲成本

          以一路分辨率 720x1280(常說的 720P),幀率為 30 fps 的視頻為例,如果不經過編碼壓縮,直接傳輸或存儲原始的 RGB 數據,對應的碼率是:720 * 1280 * 3 * 8 * 30=632.8125 Mbps (寬 * 高 * 像素字節數 * 字節比特數 * 幀數)。一分鐘的時間所需要的數據量是:632.8125 Mbps * 60s=4.63 GB

          這個數據量很大,需要很高的存儲或傳輸成本,因此需要采用編碼壓縮技術以減少碼率。

          通常,對信息進行壓縮,可以從這幾個方面著手:

          • 1)信源包含的符號出現概率的非均勻性,使得信源是可以被壓縮的。熵編碼就利用信源的統計特性進行碼率壓縮的編碼方式。比如著名的哈夫曼編碼(也是熵編碼的一種),就是當信源中各符號的出現概率都一樣時編碼效率最低。
          • 2)信源的相關性,使得信源是可以被壓縮的。比如信息 A 和信息 B 的相關性,使得我們可以由信息 A 加殘差 D(D=A - B) 來推導信息 B,這樣只編碼 A 和 D 來實現壓縮,這就是所謂的差分編碼技術。
          • 3)人的感知對不同信源的敏感度不一樣,使得信源是可以被壓縮的。對人感知不敏感的信息進行部分或全部忽略來實現壓縮。

          要對視頻進行編碼,則主要是研究視頻數據中的冗余信息,并對其進行壓縮。視頻信息主要包括這幾個方面的冗余:

          • 空間冗余:在同一張幀之中,相鄰的像素之間通常有很強的關連性,這樣的關連性即為空間上的冗余信息。
          • 時間冗余:在視頻信息中,相鄰的幀與幀之間通常有很強的關連性,這樣的關連性即為時間上的冗余信息。
          • 編碼冗余:視頻中不同數據出現的概率不同,欲編碼的符號的幾率分布是不均勻的。
          • 視覺冗余:人的視覺系統對某些細節不敏感。視覺上的冗余信息是指在人在觀看視頻時,人眼無法察覺的信息。

          現在常見的視頻編碼格式有 3 個大的系列,分別由不同的組織主導制定:

          1)ISO-MPEG/ITU-T 系列:由國際標準組織機構(ISO)下屬的運動圖象專家組(MPEG)和國際電傳視訊聯盟遠程通信標準化組織(ITU-T)開發的系列編碼標準。

          • H.264,也被稱為高級視頻編碼(Advanced Video Coding,簡稱 AVC),是一種被廣泛使用的高精度視頻的錄制、壓縮和發布格式。該標準引入了一系列新的能夠大大提高壓縮性能的技術,并能夠同時在高碼率端和低碼率端大大超越以前的諸標準。
          • H.265,也被稱為高效率視頻編碼(High Efficiency Video Coding,簡稱 HEVC),是 H.264 的繼任者。HEVC 被認為不僅提升圖像質量,同時也能達到 H.264 兩倍的壓縮率(等同于同樣畫面質量下比特率減少了 50%),可支持 4K 分辨率甚至到超高畫質電視,最高分辨率可達到 8192×4320(8K 分辨率),這是目前發展的趨勢。
          • H.266,也被稱為多功能視頻編碼(Versatile Video Coding,簡稱 VVC),是 H.265 的繼任者。VVC 對 8K 超高清、屏幕、高動態和 360 度全景視頻等新的視頻類型以及自適應帶寬和分辨率的流媒體和實時通信等應用有了更好的支持。根據最近的 JVET 官方主觀測試結果,VVC 的平均編碼性能相對 HEVC 的提高已經可以達到 49%。

          2)AOM 系列:前身是由 Google 主導的 VPx 系列的編碼標準。后續由多家公司組件成立了開放媒體聯盟(Alliance for Open Media,AOM)繼續開發新的編碼標準。

          • VP8,是一個開放的圖像壓縮格式,最早由 On2 Technologiesis 開發,隨后由 Google 發布。同時 Google 也發布了 VP8 編碼的實做庫:libvpx,以 BSD 授權條款的方式發布,隨后也附加了專利使用權。而在經過一些爭論之后,最終 VP8 的授權確認為一個開放源代碼授權。
          • VP9,是 Google 提供的開源的免費視頻編碼格式,是 VP8 的后續版本。
          • AV1,Alliance for Open Media Video 1 是由 AOM(Alliance for Open Media,開放媒體聯盟)制定的一個開源、免版權費的視頻編碼格式,目標是解決 H.265 昂貴的專利費用和復雜的專利授權問題并成為新一代領先的免版權費的編碼標準。此外,AV1 是 Google 制定的 VP9 標準的繼任者,也是 H.265 強有力的競爭者。

          3)AVS 系列:AVS(Audio Video coding Standard)是中國具備自主知識產權的系列編碼標準。

          • AVS2,第二代數字音視頻編解碼技術標準(AVS2),其首要應用目標是超高清晰度視頻,支持超高分辨率(4K 以上)、高動態范圍視頻的高效壓縮。
          • AVS3,AVS3 增加了對 8K 分辨率的支持,該技術將使用于中央廣播電視總臺 8K 超高清頻道。

          這里我們只對 H.264、H.265、H.266 做一下介紹。

          1、H.264 編碼

          1.1、基本概念

          1.1.1、句法元素分層結構

          H.264 中,句法元素可以分為『序列』、『圖像』、『片』、『宏塊』、『子宏塊』五個層次。

          在 H.264 中,分層結構相較之前最大的不同是取消了序列層和圖像層,并將原本屬于序列和圖像頭部的大部分句法元素游離出來形成序列和圖像兩級參數集,其余的部分則放入片層。在這種機制下,由于參數集是獨立的,可以被多次重發或者采用特殊技術加以保護。參數集與參數集外部的句法元素處于不同信道中,這是 H.264 的一個建議,我們可以使用更安全但成本更昂貴的通道來傳輸參數集。

          領取音視頻開發資料:音視頻流媒體高級開發FFmpegWebRTCRTMPRTSPHLSRTP播放器

          企鵝君羊994289133領取資料

          1.1.2、軟件和硬件編解碼

          編解碼分為軟編軟解和硬編硬解

          • 軟編/軟解: CPU 處理。
          • 硬編/硬解: 使用顯卡 GPU、專用 SDP 等其它芯片硬件處理。

          軟編用的是 CPU 處理,優點是調節能力比較強,相對于硬編,軟編可以通過參數調整可以在同一碼率下編碼出清晰度更高的視頻,此外軟編可以兼容性更好,可以適配所有設備,但缺點是性能可能比較差,不如硬編速度快、功耗低。

          軟解相對于硬解,則是性能可能較差,不如硬解功耗低,但是兼容性更好,適配性更好。

          目前移動應用大部分業務場景采用的編碼策略是:手機端盡量采用硬編編碼出一路高清的視頻,將高清視頻發送給服務器,由服務器再進行軟編轉碼為多路碼率的視頻,再通過 CDN 分發給觀看端。另外,安卓的一些低端機可能由于硬件問題對硬編支持不完善,這時候可以使用軟編,或者硬編出錯的情況可以切換為軟編來兜底。當然有時候,對于一些性能優越的高端機型或者編碼時長不多的業務場景也可以優先用軟編,例如錄制 15 秒短視頻的場景,首先時間比較短并且機器性能高不怕 CPU 消耗,這樣相同碼率可以再提高清晰度。

          對于大部分的應用場景的解碼策略則主要采用硬解,用軟解作為兜底。此外,對于一些硬解不支持的編碼類型,可以使用軟解,比如有的機型不支持 H.265 解碼,則只能使用軟解。

          1.1.3、序列

          H.264 編碼的方式可以這樣理解:在視頻中,一段時間內相鄰的圖像的像素、亮度與色溫的差別通常很小。所以沒必要去對一段時間內的每一幅圖像都進行完整一幀的編碼,而是可以選取這段時間的第一幀圖像進行完整編碼,而下一幅圖像只記錄與第一幀完整編碼圖像的像素、亮度與色溫等特征的差別即可,以此類推循環下去。

          什么叫序列呢?上述的這段時間內圖像變化不大的圖像集就可以稱之為一個序列。序列可以理解為有相同特點的一段圖像數據。但是如果某個圖像與之前的圖像變換很大,很難參考之前的幀來生成新的幀,那么就結束上一個序列,開始下一個序列。重復上述做法,生成新的一段序列。

          1.1.4、幀類型

          H.264 結構中,一幅視頻圖像編碼后的數據叫做一幀,一幀由一個片(slice)或多個片組成,一個片由一個或多個宏塊(MB)組成,一個宏塊由 16x16 的 YUV 數據組成。宏塊是 H.264 編碼的基本單位。

          在 H.264 協議內定義了三種幀,分別是 I 幀、B 幀與 P 幀。

          1)I 幀

          I 幀,即幀內編碼圖像幀,不參考其他圖像幀,只利用本幀的信息進行編碼。

          I 幀的特點:

          • 它是一個全幀壓縮編碼幀,將全幀圖像信息進行壓縮編碼及傳輸;
          • 解碼時僅用 I 幀的數據就可重構完整圖像;
          • I 幀描述了圖像背景和運動主體的詳情;
          • I 幀不需要參考其他畫面而生成;
          • I 幀是 P 幀和 B 幀的參考幀,其質量直接影響到同組中以后各幀的質量;
          • 一般地,I 幀是圖像組 GOP 的基礎幀(第一幀),在一組中只有一個 I 幀;
          • I 幀所占數據的信息量比較大。

          I 幀編碼流程:

          • 進行幀內預測,決定所采用的幀內預測模式;
          • 當前像素值減去預測值,得到殘差;
          • 對殘差進行變換和量化;
          • 變長編碼和算術編碼;
          • 重構圖像并濾波,得到的圖像作為其它幀的參考幀。

          2)P 幀

          P 幀,即預測編碼圖像幀,利用之前的 I 幀或 P 幀,采用運動預測的方式進行幀間預測編碼。

          P 幀的預測與重構:P 幀是以 I 幀為參考幀,在 I 幀中找出 P 幀『某點』的預測值和運動矢量,取預測差值和運動矢量一起傳送。在接收端根據運動矢量從 I 幀中找出 P 幀『某點』的預測值并與差值相加以得到 P 幀『某點』樣值,從而可得到完整的 P 幀。

          P 幀特點:

          • P 幀是 I 幀后面相隔 1-2 幀的編碼幀;
          • P 幀采用運動補償的方法傳送它與前面的 I 或 P 幀的差值及運動矢量(預測誤差);
          • P 幀屬于前向預測的幀間編碼,它只參考前面最靠近它的 I 幀或 P 幀;
          • P 幀可以是其后面 P 幀的參考幀,也可以是其前后的 B 幀的參考幀;
          • 由于 P 幀是參考幀,它可能造成解碼錯誤的擴散;
          • 由于是差值傳送,P 幀的壓縮比較高。

          P 幀編碼的基本流程:

          • 進行運動估計,計算采用幀間編碼模式的率失真函數值。P 幀只參考前面的幀;
          • 進行幀內預測,選取率失真函數值最小的幀內模式與幀間模式比較,確定采用哪種編碼模式;
          • 計算實際值和預測值的差值;
          • 對殘差進行變換和量化;
          • 若編碼,如果是幀間編碼模式,編碼運動矢量。

          3)B 幀

          B 幀,即雙向預測編碼圖像幀,提供最高的壓縮比,它既需要之前的圖像幀(I 幀或 P 幀),也需要后來的圖像幀(P 幀),采用運動預測的方式進行幀間雙向預測編碼。

          B 幀的預測與重構:B 幀以前面的 I 或 P 幀和后面的 P 幀為參考幀,找出 B 幀『某點』的預測值和兩個運動矢量,并取預測差值和運動矢量傳送。接收端根據運動矢量在兩個參考幀中找出預測值并與差值求和,得到 B 幀『某點』樣值,從而可得到完整的 B 幀。

          B 幀特點:

          • B 幀是由前面的 I 或 P 幀和后面的 P 幀來進行預測的;
          • B 幀傳送的是它與前面的 I 或 P 幀和后面的 P 幀之間的預測誤差及運動矢量;
          • B 幀是雙向預測編碼幀;
          • B 幀壓縮比最高,因為它只反映兩參考幀間運動主體的變化情況,預測比較準確;
          • B 幀不是參考幀,不會造成解碼錯誤的擴散。

          B 幀編碼的基本流程:

          • 進行運動估計,計算采用幀間編碼模式的率失真函數值。B 幀可參考后面的幀;
          • 進行幀內預測,選取率失真函數值最小的幀內模式與幀間模式比較,確定采用哪種編碼模式;
          • 計算實際值和預測值的差值;
          • 對殘差進行變換和量化;
          • 若編碼,如果是幀間編碼模式,編碼運動矢量。

          率失真函數的相關簡介:

          有損壓縮算法,性能由編碼輸出的比特率失真共同決定。

          編碼的目的:就是在保證一定視頻質量的條件下盡量減少編碼比特率,或在一定編碼比特率限制條件下盡量地減小編碼失真。

          編碼器的工作:根據以上率失真準則找到最佳編碼參數。

          信息論中率失真概念:在允許一定程度失真的條件下,能夠把信源信息壓縮到什么程度,即最少需要多少比特數才能描述信源。由此得到率失真函數:R(D)=min I(X, Y),它給出了限定失真條件下信息壓縮允許的下界。但其在視頻編碼中難以應用,因為各種概率和條件概率未知,只能作為理論值。

          視頻編碼中的率失真曲線:為了研究視頻碼率與視頻質量的平衡。由于系統性,不能達到理論上的 R(D) 值,只能由不同的編碼參數(如 QP 和選擇的模式)得到有限的 (R, D) 可操作點,形成凸包絡。

          視頻編碼中的率失真優化(RDO):遍歷所有的參數候選模式對視頻進行編碼,滿足碼率限制的失真最小的一組參數集作為最優的視頻編碼參數。每一層級都找出,最終使整體系統性能最優。這里假設了無相關性的獨立優化,如相關性較強則共同優化。

          1.1.5、DTS 和 PTS

          DTS、PTS 的概念如下所述:

          • DTS(Decoding Time Stamp):即解碼時間戳,這個時間戳的意義在于告訴播放器該在什么時候解碼這一幀的數據。
          • PTS(Presentation Time Stamp):即顯示時間戳,這個時間戳用來告訴播放器該在什么時候顯示這一幀的數據。

          需要注意的是:雖然 DTS、PTS 是用于指導播放端的行為,但它們是在編碼的時候由編碼器生成的。

          當視頻流中沒有 B 幀時,通常 DTS 和 PTS 的順序是一致的。但如果有 B 幀時,就回到了我們前面說的問題:解碼順序和播放順序不一致了。

          比如一個視頻中,幀的顯示順序是:I B B P,現在我們需要在解碼 B 幀時知道 P 幀中信息,因此這幾幀在視頻流中的順序可能是:I P B B,這時候就體現出每幀都有 DTS 和 PTS 的作用了。DTS 告訴我們該按什么順序解碼這幾幀圖像,PTS 告訴我們該按什么順序顯示這幾幀圖像。順序大概如下:

          Stream: I P B B
             DTS: 1 2 3 4
             PTS: 1 4 2 3

          1.1.6、GOP

          GOP(Group Of Pictures)是圖像組的概念,它指的是視頻編碼序列中兩個 I 幀之間的距離。通常意義上的 GOP 由 I 幀開始,到下一個 I 幀之前的幀結束。嚴格意義上講,這個 I 幀是一個 IDR 幀。

          H.264 使用的是封閉 GOP(Closed GOP),即在一個 GOP 中所有幀的解碼不依賴該 GOP 外的其他幀,除了第一幀必須是 I 幀,其他幀可以是 P 幀或 B 幀。

          上圖中是一個 GOP 為 15 幀的例子,如果視頻的幀率是 15 fps,那么這個 GOP 就是 1s 時長。

          關鍵幀的間隔調節會影響 GOP 的長度,進而影響到讀取 GOP 的速度,為防止運動變化,一個 GOP 組內幀數不宜取多。如果關鍵幀的間隔設置過大的話(GOP 長度過大),在必須用到關鍵幀的場合就可能被迫使用 B/P 幀來代替,這就會降低畫面質量。

          1.1.7、IDR 幀

          IDR 幀全稱叫做 Instantaneous Decoder Refresh,是 I 幀的一種。IDR 幀的作用是立刻刷新,重新算一個新的序列開始編碼,使錯誤不致傳播。I 幀有被跨幀參考的可能,但 IDR 幀不會。

          比如:

          IDR1 P2 B3 B4 P5 B6 B7 I8 B9 B10 P11 B12 B13 P14 B15 B16

          這里的 B8 可以跨過 I8 去參考 P7。

          IDR1 P2 B3 B4 P5 B6 B7 IDR8 B9 B10 P11 B12 B13 P14 B15 B16

          這里的 B9 就不可以參考 IDR8 前面的幀。

          H.264 引入 IDR 幀是為了解碼的重同步,當解碼器解碼到 IDR 幀時,立即將參考幀隊列清空,將已解碼的數據全部輸出或拋棄,重新查找參數集,開始一個新的序列。這樣,如果前一個序列出現錯誤,在這里可以獲得重新同步的機會,不會將錯誤傳導下去。IDR 幀之后的幀永遠不會使用 IDR 幀之前的幀來解碼。

          所以總結下來,IDR 幀有如下特性:

          • IDR 幀一定是 I 幀,嚴格來說 I 幀不一定是 IDR 幀(但一般 I 幀就是 IDR 幀);
          • 對于 IDR 幀來說,在 IDR 幀之后的所有幀都不能引用任何 IDR 幀之前的幀的內容。與此相反,對于普通的 I 幀來說,位于其之后的 B 和 P 幀可以引用位于普通 I 幀之前的 I 幀(普通 I 幀有被跨幀參考的可能);
          • 播放器永遠可以從一個 IDR 幀播放,因為在它之后沒有任何幀引用之前的幀。因此,視頻開頭的 I 幀一定是 IDR 幀;一個封閉類 GOP 的開頭的 I 幀也一定是 IDR 幀。

          1.1.8、壓縮方式

          H.264 采用的核心算法是『幀內壓縮』和『幀間壓縮』,幀內壓縮是生成 I 幀的算法,幀間壓縮是生成 B 幀和 P 幀的算法。

          幀內壓縮也稱為空間壓縮當壓縮一幀圖像時,僅考慮本幀的數據而不考慮相鄰幀之間的冗余信息,這實際上與靜態圖像壓縮類似。幀內一般采用有損壓縮算法,由于幀內壓縮是編碼一個完整的圖像,所以可以獨立的解碼、顯示。幀內壓縮一般達不到很高的壓縮率,跟編碼 JPEG 差不多。

          幀間壓縮的原理是:相鄰幾幀的數據有很大的相關性,或者說前后兩幀信息變化很小的特點。也即連續的視頻其相鄰幀之間具有冗余信息,根據這一特性,壓縮相鄰幀之間的冗余量就可以進一步提高壓縮量,減小壓縮比。幀間壓縮也稱為時間壓縮,它通過比較時間軸上不同幀之間的數據進行壓縮。幀間壓縮一般是無損的。幀差值算法是一種典型的時間壓縮法,它通過比較本幀與相鄰幀之間的差異,僅記錄本幀與其相鄰幀的差值,這樣可以大大減少數據量。

          編碼壓縮的步驟大致如下:

          • 分組,也就是將一系列變換不大的圖像歸為一個組,也就是一個序列,也就是 GOP;
          • 定義幀,將每組的圖像幀歸分為 I 幀、P 幀和 B 幀三種類型;
          • 預測幀,以 I 幀做為基礎幀,以 I 幀預測 P 幀,再由 I 幀和 P 幀預測 B 幀;
          • 數據傳輸,最后將 I 幀數據與預測的差值信息進行存儲和傳輸。

          1.2、分層結構

          H.264 的主要目標是為了有高的視頻壓縮比和良好的網絡親和性,為了達成這兩個目標,H.264 的解決方案是將系統框架分為兩個層面:『視頻編碼層面(VCL)』和『網絡抽象層面(NAL)』。

          • 視頻編碼層(VCL),是對視頻編碼核心算法過程、子宏塊、宏塊、片等概念的定義。這層主要是為了盡可能的獨立于網絡來高效的對視頻內容進行編碼。編碼完成后,輸出的數據是 SODB(String Of Data Bits)。
          • 網絡適配層(NAL),是對圖像序列、圖像等片級別以上的概念的定義。這層負責將 VCL 產生的比特字符串適配到各種各樣的網絡和多元環境中。該層將 VCL 層輸出的 SODB 數據打包成 RBSP(Raw Byte Sequence Payload)。SODB 是編碼后的原始數據,RBSP 是在原始編碼數據后面添加了結尾比特,一個比特 1 和若干個比特 0,用于字節對齊。然后再在 RBSP 頭部加上 NAL Header 來組成一個一個的 NAL 單元。

          從視頻編碼層(VCL)角度去看 H.264 的結構:

          從網絡適配層(NAL)角度去看 H.264 的結構:

          1.3、編碼工具

          下圖為一個典型的視頻編碼器。在進行當前信號編碼時,編碼器首先會產生對當前信號做預測的信號,稱作預測信號(Predicted Signal),預測的方式可以是時間上的幀間預測(Inter Prediction),亦即使用先前幀的信號做預測,或是空間上的幀內預測(Intra Prediction),亦即使用同一張幀之中相鄰像素的信號做預測。得到預測信號后,編碼器會將當前信號與預測信號相減得到殘差信號(Residual Signal),并只對殘差信號進行編碼,如此一來,可以去除一部分時間上或是空間上的冗余信息。接著,編碼器并不會直接對殘差信號進行編碼,而是先將殘差信號經過變換(通常為離散余弦變換)然后量化以進一步去除空間上和感知上的冗余信息。量化后得到的量化系數會再透過熵編碼,去除統計上的冗余信息。

          H.264 的編解碼流程如下:

          1.3.1、幀內預測

          一般來說,對于一幀圖像,相鄰兩個像素的亮度和色度值之間通常是比較接近的,也就是顏色是逐漸變化的,不會一下子突變成完全不一樣的顏色。而進行視頻編碼,目的就是利用這個相關性,來進行壓縮。幀內預測就是基于這個原理。

          假設現在我們要對一個像素 X 進行編碼,在編碼這個像素之前,我們找到它臨近的像素作為參考像素 X’,根據 X’ 我們經過預測算法得到對像素 X 的預測值 Xp,然后我們再用 X 減去 Xp 得到二者的殘差 D,并用這個殘差 D 代替 X 進行編碼,起到節省碼率的作用。最后,我們還用預測值 Xp 和殘差 D 相加得到 X’ 用于下一個像素的預測。這個就是我們用幀內預測進行編碼壓縮的大體思想。

          在實際編碼中,我們固然可以按像素為單位進行預測,但這樣效率比較低,所以在 H.264 標準中提出按照塊為單位進行計算。一個宏塊是 16x16 像素,它可以分成子塊,最小是 4x4 的(這個大小是對于亮度編碼而言,至于色度編碼,4:2:0 采樣格式的色度宏塊的長和寬都是亮度宏塊的一半),這樣能大大提高計算速度。

          在幀內預測模式中,預測塊是基于已編碼重建的塊和當前塊形成的。對亮度像素而言,預測塊用于 4×4 子塊或者 16×16 宏塊的相關操作。4×4 亮度子塊有 9 種可選預測模式,獨立預測每一個 4×4 亮度子塊,適用于帶有大量細節的圖像編碼;16×16 亮度塊有 4 種預測模式,預測整個 16×16 亮度塊,適用于平坦區域圖像編碼;色度塊也有 4 種預測模式,類似于 16×16 亮度塊預測模式。編碼器通常選擇使預測塊和編碼塊之間差異最小的預測模式。

          1.3.2、幀間預測

          幀間預測就是時域預測,旨在消除時域冗余信息,簡單點說就是利用之前編碼過的圖像來預測要編碼的圖像。其中涉及到兩個重要的概念:運動估計和運動補償。

          運動估計是尋找當前編碼的塊在已編碼的圖像(參考幀)中的最佳對應塊,并且計算出對應塊的偏移(運動矢量)。

          運動補償是根據運動矢量和幀間預測方法,求得當前幀的估計值過程。其實就是將運動矢量參數貼到參考幀上獲取當前幀。另外運動補償是一個過程。

          H.264 幀間預測是利用已編碼視頻幀/場和基于塊的運動補償的預測模式。與以往標準幀間預測的區別在于塊尺寸范圍更廣(從 16×16 到 4×4)、亞像素運動矢量的使用(亮度采用 1/4 像素精度 MV)及多參考幀的運用等等。

          每個宏塊(16×16 像素)可以 4 種方式分割:一個 16×16,兩個 16×8,兩個 8×16,四個 8×8。其運動補償也相應有四種。而 8×8 模式的每個子宏塊還可以四種方式分割:一個 8×8,兩個 4×8 或兩個 8×4 及 4 個 4×4。這些分割和子宏塊大大提高了各宏塊之間的關聯性。這種分割下的運動補償則稱為樹狀結構運動補償。

          每個分割或子宏塊都有一個獨立的運動補償。每個 MV 必須被編碼、傳輸,分割的選擇也需編碼到壓縮比特流中。對大的分割尺寸而言, MV 選擇和分割類型只需少量的比特,但運動補償殘差在多細節區域能量將非常高。小尺寸分割運動補償殘差能量低,但需要較多的比特表征 MV 和分割選擇。分割尺寸的選擇影響了壓縮性能。整體而言,大的分割尺寸適合平坦區域,而小尺寸適合多細節區域。

          宏塊的色度成分(Cr 和 Cb)則為相應亮度的一半(水平和垂直各一半)。色度塊采用和亮度塊同樣的分割模式,只是尺寸減半(水平和垂直方向都減半)。例如,8×16 的亮度塊相應色度塊尺寸為 4×8,8×4 亮度塊相應色度塊尺寸為 4×2 等等。色度塊的 MV 也是通過相應亮度 MV 水平和垂直分量減半而得。

          1.3.3、變換和量化

          絕大多數圖像都有一個共同的特征:平坦區域和內容緩慢變化區域占據一幅圖像的大部分,而細節區域和內容突變區域則占小部分。也可以說,圖像中直流和低頻區占大部分,高頻區占小部分。這樣,空間域的圖像變換到頻域或所謂的變換域,會產生相關性很小的一些變換系數,并可對其進行壓縮編碼,即所謂的變換編碼。

          此外,為了減小圖像編碼的動態范圍,一般也會進行量化。

          在圖像編碼中,變換編碼和量化從原理上講是兩個獨立的過程。但在 H.264 中,將兩個過程中的乘法合二為一,并進一步采用整數運算,減少編解碼的運算量,提高圖像壓縮的實時性。

          H.264 對圖像或預測殘差采用了 4×4 整數離散余弦變換(DCT)技術,避免了以往標準中使用的通用 8×8 離散余弦變 換逆變換經常出現的失配問題。量化過程根據圖像的動態范圍大小確定量化參數,既保留圖像必要的細節,又減少碼流。

          1.3.4、熵編碼

          熵的大小與信源的概率模型有著密切的關系,各個符號出現的概率不同,信源的熵也不同。當信源中各事件是等概率分布時,熵具有極大值。信源的熵與其可能達到的最大值之間的差值反映了該信源所含有的冗余度。信源的冗余度越小,即每個符號所獨立攜帶的信息量越大,那么傳送相同的信息量所需要的序列長度越短,符號位越少。因此,數據壓縮的一個基本的途徑是去除信源的符號之間的相關性,盡可能地使序列成為無記憶的,即前一符號的出現不影響以后任何一個符號出現的概率。

          利用信源的統計特性進行碼率壓縮的編碼就稱為熵編碼,也叫統計編碼。熵編碼是無損壓縮編碼方法,它生成的碼流可以經解碼無失真地恢復出原數據。熵編碼是建立在隨機過程的統計特性基礎上的。

          視頻編碼常用的有兩種:變長編碼(哈夫曼編碼)、算術編碼。

          H.264 最后將結果進行熵編碼,分為上下文自適應的變長編碼(Context-based Adaptive Variable-Length Coding,CAVLC)上下文自適應的二進制算術編碼(Context-based Adaptive Binary Arithmetic Coding,CABAC)

          在 H.264 的 CAVLC(基于上下文自適應的可變長編碼)中,通過根據已編碼句法元素的情況動態調整編碼中使用的碼表,取得了極高的壓縮比。CAVLC 用于亮度和色度殘差數據的編碼。殘差經過變換量化后的數據表現出如下特性:4×4 塊數據經過預測、變換、量化后,非零系數主要集中在低頻部分,而高頻系數大部分是零;量化后的數據經過 zig-zag 掃描,DC 系數附近的非零系數值較大,而高頻位置上的非零系數值大部分是 +1 和 -1;相鄰的 4×4 塊的非零系數的數目是相關的。CAVLC 充分利用殘差經過整數變換、量化后數據的特性進行壓縮,進一步減少數據中的冗余信息,為 H.264 卓越的編碼效率奠定了基礎。

          算術編碼的思想是用 0 到 1 的區間上的一個數來表示一個字符輸入流,它的本質是為整個輸入流分配一個碼字,而不是給輸入流中的每個字符分別指定碼字。算術編碼是用區間遞進的方法來為輸入流尋找這個碼字的,它從于第一個符號確定的初始區間(0 到 1)開始,逐個字符地讀入輸入流,在每一個新的字符出現后遞歸地劃分當前區間,劃分的根據是各個字符的概率,將當前區間按照各個字符的概率劃分成若干子區間,將當前字符對應的子 2 區間取出,作為處理下一個字符時的當前區間。到處理完最后一個字符后,得到了最終區間,在最終區間中任意挑選一個數作為輸出。解碼器按照和編碼相同的方法和步驟工作,不同的是作為逆過程,解碼器每劃分一個子區間就得到輸入流中的一個字符。在實際過程中,輸入流中字符的概率分布是動態改變的,這需要維護一個概率表去記錄概率變化的信息。在作遞進計算時,通過對概率表中的值估計當前字符的概率,當前字符處理后,需要重新刷新概率表。這個過程表現為對輸入流字符的自適應。編碼器和解碼器按照同樣的方法估計和刷新 概率表,從而保證編碼后的碼流能夠順利解碼。

          用哈夫曼編碼,必須為所有可能的長度為 N 的序列設計和存儲碼書,這樣做的復雜度隨 N 呈指數增長。用算術編碼則不需要預先為每個可能的信源序列指定碼書。而是每當所確定區間的下限和上限有公共最高有效位時,就可以連續地得到比特。編碼序列的長度可以和信源的長度一樣長。因此,實際上,算術編碼可以更接近熵率。

          算術編碼的另一個優點是可以簡單地通過更新符號概率表來實現對信源統計特性的自適應。通過對不同上下文用不同的概率表也可以容易地實現條件編碼。對于哈夫曼編碼,則不得不基于更新的概率表重新設計碼書,或對不同的上下文設計多個碼表。

          由于較高的編碼效率和易于自適應,只要所涉及的計算量是能接受的,無疑算術編碼比哈夫曼編碼是一種更好的選擇。

          1.4、碼流結構

          1.4.1、原始碼流

          H.264 原始碼流(又稱為裸流),是由一個接一個的 NAL 單元組成的(NAL Header 加上 RBSP 組成一個 NAL 單元),結構如下圖所示:

          在網絡傳輸的環境下,編碼器將每個 NAL 各自獨立、完整地放入一個分組,由于分組都有頭部,解碼器可以很方便地檢測出 NAL 的分界,依次取出 NAL 進行解碼。為了節省碼流,H.264 沒有另外在 NAL 的頭部設立表示起始的句法元素。但是如果編碼數據是儲存在介質(如 DVD 光盤)上,由于 NAL 是依次緊密排列,解碼器將無法在數據流中分辨每個 NAL 的起始和終止,所以必須要有另外的機制來解決這個問題。

          針對這個問題,H.264 草案的附錄 B 中指明了一種簡單又高效的方案。當數據流是存儲在介質上時,在每個 NAL 前添加起始碼0x000001。這就是我們常說的 Annex-b 碼流格式

          在某些類型的介質上,為了尋址的方便,要求數據流在長度上對齊,或必須是某個常數的倍數。考慮到這種情況,H.264 建議在起始碼前添加若干字節的 0 來填充,直到該 NAL 的長度符合要求。在這樣的機制下,解碼器在碼流中檢測起始碼,作為一個 NAL 的起始標識,當檢測到下一個起始碼時當前 NAL 結束。H.264 規定當檢測到 0x00000001 時也可以表征上一個 NAL 的結束,下一個 NAL 開始,這是因為連著的三個字節的 0 中的任何一個字節的 0 要么屬于起始碼要么是起始碼前面添加的 0。

          添加起始碼是一個解決問題的很好的方法,但上面關于起始碼的介紹還不完整,因為忽略了一個重要的問題:如果在 NAL 內部出現了 0x000001 或是 0x00000001 的序列怎么辦?毫無疑問這種情況是致命的,解碼器將把這些本來不是起始碼的字節序列當作起始碼,而錯誤地認為這里往后是一個新的 NAL 的開始,進而造成解碼數據的錯位!而我們做的大量實驗證明,NAL 內部經常會出現這樣的字節序列。因為 0x000001 的情況是覆蓋 0x00000001 的情況,所以下面值討論如何處理 0x000001 即可。

          于是 H.264 提出了另外一種機制,叫做防止競爭,在編碼器編碼完一個 NAL 時,應該檢測是否出現下表左側中的四個字節序列,以防止它們和起始碼競爭。如果檢測到這些序列存在,編碼器將在最后一個字節前插入一個新的字節:0x03,從而使它們變成下表右側的樣子。當解碼器在 NAL 內部檢測到有 0x000003 的序列時,將把 0x03 拋棄,恢復原始數據。

          0x000000 → 0x00000300
          0x000001 → 0x00000301
          0x000002 → 0x00000302
          0x000003 → 0x00000303

          上表中的前兩個序列我們前文中已經提到,第三個 0x000002 是作保留用,而第四個 0x000003是為了保證解碼器能正常工作,因為我們剛才提到,解碼器恢復原始數據的方法是檢測到 0x000003 就拋棄其中的 0x03,這樣當出現原始數據為 0x000003 時會破壞數據,所以必須也應該給這個序列插入 0x03

          解碼器在逐個字節地讀一個 NAL 時并不同時對它解碼,而是要通過起始碼機制將整個 NAL 讀進、計算出長度后再開始解碼。

          到此,我們就知道如何在原始碼流里分割 NAL 單元了。接下來,我們再來了解每個 NAL 單元的結構。

          1.4.2、NAL 單元

          NAL 單元由 NAL Header 和 RBSP 構成。

          NAL Header 的結構如下:

          • forbidden_zero_bit,第 0 位,表示禁止位,一般為值為 0,值為 1 表示語法錯誤。
          • nal_ref_idc,第 1-2 位,表示當前 NAL 的優先級。取值范圍為 0-3,值越高,表示當前 NAL 越重要,需要優先受到保護。H.264 規定如果當前 NAL 是屬于參考幀的片,或是序列參數集,或是圖像參數集這些重要的數據單位時,本句法元素必須大于 0。但在大于 0 時具體該取何值,卻沒有進一步規定,通信雙方可以靈活地制定策略。
          • nal_unit_type,第 3-7 位,表示當前 NAL 單元的類型。具體類型定義如下表:

          nal_unit_type=5 時,表示當前 NAL 是 IDR 圖像的一個片,在這種情況下,IDR 圖像中的每個片的 nal_unit_type 都應該等于 5。注意 IDR 圖像不能使用片分區。

          1.4.3、RBSP

          前面也介紹過,RBSP 指原始字節載荷,它是 NAL 單元的數據部分的封裝格式,封裝的數據來自 SODB(原始數據比特流)。SODB 是編碼后的原始數據,SODB 經封裝為 RBSP 后放入 NAL 的數據部分。

          從 SODB 到 RBSP 的生成過程:

          • 如果 SODB 內容是空的,生成的 RBSP 也是空的。
          • 否則,RBSP 由如下的方式生成:
            • 1)RBSP 的第一個字節直接取自 SODB 的第 1-8 個比特,(RBSP 字節內的比特按照從左到右對應為從高到低的順序排列,most significant),以此類推,RBSP 其余的每個字節都直接取自 SODB 的相應比特。RBSP 的最后一個字節包含 SODB 的最后幾個比特和 rbsp_trailing_bits()
            • 2)rbsp_trailing_bits() 的第一個比特是 1,接下來填充 0,直到字節對齊。
            • 3)最后添加若干個 cabac_zero_word,其值等于 0x0000

          1.4.4、NAL 單元的不同類型

          上面講到了 NAL 單元是有多種類型的,這里我們就其中重要的幾種類型做一下講解:

          • SPS
          • PPS
          • SEI
          • Slice

          序列參數集、圖像參數集與圖像、片之間的關系:

          1)序列參數集 SPS

          SPS 中保存了一組編碼后的圖像序列的依賴的全局參數。

          SPS 中的信息至關重要,如果其中的數據丟失,解碼過程就可能失敗。SPS 和 PPS 通常作為解碼器的初始化參數。一般情況,SPS 和 PPS 所在的 NAL 單元位于整個碼流的起始位置,但是在某些場景下,在碼率中間也可能出現這兩種結構:

          • 解碼器要在碼流中間開始解碼。比如,直播流。
          • 編碼器在編碼過程中改變了碼率的參數。比如,圖像的分辨率。

          SPS 其中的關鍵參數包括:

          • profile_idc: 表示當前 H.264 碼流的編碼檔次。其中部分檔次:
            • 基礎檔次:BaselineProfile (profile_idc 值為 66)
            • 主要檔次:MainProfile (profile_idc 值為 77)
            • 擴展檔次:ExtentedProfile (profile_idc 值為 88)
          • level_idc,表示當前碼流的編碼等級。編碼的等級定義了某種條件下的最大視頻分辨率、最大視頻幀率等參數。
          • seq_parameter_set_id,表示當前的序列參數集的 id。通過該 id 值,圖像參數集 PPS 可以引用其關聯的 SPS 中的參數。
          • log2_max_frame_num_minus4,用于計算 MaxFrameNum 的值。計算公式為 MaxFrameNum=2 ^ (log2_max_frame_num_minus4 + 4)。變量 MaxFrameNum 表示 frame_num 的最大值,frame_num 標識所屬圖像的解碼順序,在解碼過程中它也是一個非常重要的變量。值得注意的是 frame_num 是循環計數的,即當它到達 MaxFrameNum 后又從 0 重新開始新一輪的計數。解碼器必須要有機制檢測這種循環,不然會引起類似千年蟲的問題,在圖像的順序上造成混亂。
          • pic_order_cnt_type,指明了 POC(Picture Order Count) 的編碼方法,POC 標識圖像的播放順序。由于 H.264 使用了 B 幀預測,使得圖像的解碼順序并不一定等于播放順序,但它們之間存在一定的映射關系。POC 可以由 frame-num 通過映射關系計算得來,也可以索性由編碼器顯式地傳送。H.264 中一共定義了三種 POC 的編碼方法,這個句法元素就是用來通知解碼器該用哪種方法來計算 POC。
          • log2_max_pic_order_cnt_lsb_minus4,用于計算 MaxPicOrderCntLsb 的值。計算公式為 MaxPicOrderCntLsb=2 ^ (log2_max_pic_order_cnt_lsb_minus4 + 4)MaxPicOrderCntLsb 表示 POC 的最大值,該變量在 pic_order_cnt_type=0 時使用。
          • num_ref_frames,指定參考幀隊列可能達到的最大長度,解碼器依照這個句法元素的值開辟存儲區,這個存儲區用于存放已解碼的參考幀,H.264 規定最多可用 16 個參考幀,本句法元素的值最大為 16。值得注意的是這個長度以幀為單位,如果在場模式下,應該相應地擴展一倍。
          • gaps_in_frame_num_value_allowed_flag,這個句法元素等于 1 時,表示允許句法元素 frame_num 可以不連續。當傳輸信道堵塞嚴重時,編碼器來不及將編碼后的圖像全部發出,這時允許丟棄若干幀圖像。在正常情況下每一幀圖像都有依次連續的 frame_num 值,解碼器檢查到如果 frame_num 不連續,便能確定有圖像被編碼器丟棄。這時,解碼器必須啟動錯誤掩藏的機制來近似地恢復這些圖像,因為這些圖像有可能被后續圖像用作參考幀。當這個句法元素等于 0 時,表不允許 frame_num 不連續,即編碼器在任何情況下都不能丟棄圖像。這時,H.264 允許解碼器可以不去檢查 frame_num 的連續性以減少計算量。這種情況下如果依然發生 frame_num 不連續,表示在傳輸中發生丟包,解碼器會通過其他機制檢測到丟包的發生,然后啟動錯誤掩藏的恢復圖像。
          • pic_width_in_mbs_minus1,本句法元素加 1 后指明圖像寬度,以宏塊為單位:frame_width=16 * (pic_width_in_mbs_minus1 + 1),宏塊尺寸是 16x16。通過這個句法元素解碼器可以計算得到亮度分量以像素為單位的圖像寬度:PicWidthInSamplesL=PicWidthInMbs * 16,從而也可以得到色度分量以像素為單位的圖像寬度:PicWidthInSamplesC=PicWidthInMbs * 8。以上變量 PicWidthInSamplesLPicWidthInSamplesC 分別表示圖像的亮度、色度分量以像素為單位的寬。H.264 將圖像的大小在 SPS 中定義,意味著可以在通信過程中隨著 SPS 動態地改變圖像的大小,甚至可以將傳送的圖像剪裁后輸出。
          • pic_height_in_map_units_minus1,本句法元素加 1 后指明圖像高度:PicHeightInMapUnits=pic_height_in_map_units_minus1 + 1PicSizeInMapUnits=PicWidthInMbs * PicHeightInMapUnits。圖像的高度的計算要比寬度的計算復雜,因為一個圖像可以是幀也可以是場,從這個句法元素可以
            在幀模式和場模式下分別計算出出亮度、色度的高。值得注意的是,這里以 map_unit 為單位。
          • frame_mbs_only_flag,本句法元素等于 0 時表示本序列中所有圖像的編碼模式都是幀,沒有其他編碼模式存在;本句法元素等于 1 時 ,表示本序列中圖像的編碼模式可能是幀,也可能是場或幀場自適應,某個圖像具體是哪一種要由其他句法元素決定。結合 map_unit 的含義,這里給出上一個句法元素 pic_height_in_map_units_minus1 的進一步解析步驟:
            • frame_mbs_only_flag 等于 1,pic_height_in_map_units_minus1 指的是一個 picture 中幀的高度;
            • frame_mbs_only_flag 等于 0,pic_height_in_map_units_minus1 指的是一個 picture 中場的高度。
            • 所以可以得到如下以宏塊為單位的圖像高度:
            • FrameHeightInMbs=( 2 – frame_mbs_only_flag ) * PicHeightInMapUnits
            • PictureHeightInMbs=( 2 – frame_mbs_only_flag ) * PicHeightInMapUnits

          2)圖像參數集 PPS

          PPS 中保存了每一幀編碼后的圖像所依賴的參數。

          PPS 其中的關鍵參數包括:

          • pic_parameter_set_id,表示當前 PPS 的 id,相關聯的各片通過這個 id 來引用對應的 PPS 參數。
          • seq_parameter_set_id,表示當前 PPS 引用的 SPS 的 id。
          • entropy_coding_mode_flag,表示熵編碼的選擇,本句法元素為 0 時,表示熵編碼使用 CAVLC,本句
            法元素為 1 時表示熵編碼使用 CABAC
          • pic_order_present_flag,POC 的三種計算方法在片層還各需要用一些句法元素作為參數,本句法元素等于 1 時表示在片頭會有句法元素表示這些參數;本句法元素等于 0 時,表示片頭不會給出這些參數,這些參數使用默認值。
          • num_slice_groups_minus1,本句法元素加 1 后表示圖像中片組的個數。H.264 中沒有專門的句法元素用于表示是否使用片組模式,當本句法元素等于 0 (即只有一個片組),表示不使用片組模式,后面也不會跟有用于計算片組映射的句法元素。
          • slice_group_map_type,當 num_slice_group_minus1 大于 0,即使用片組模式時,本句法元素出現在碼流中,用以表示片組分割類型。map_units 的定義:
            • 幀場自適應模式時,map_units 指的是宏塊對;
            • 場模式時,map_units 指的是宏塊;
            • 幀模式時,map_units 指的是與宏塊對相類似的,上下兩個連續宏塊的組合體。
            • frame_mbs_only_flag 等于 1 時,map_units 指的就是宏塊;
            • frame_mbs_only_falg 等于 0 時:
          • num_ref_idx_l0_active_minus1,加 1 后表示目前參考幀隊列的長度,即有多少個參考幀(包括短期和長期)。值得注意的是,當目前解碼圖像是場模式下,參考幀隊列的長度應該是本句法元素再乘以 2,因為場模式下各幀必須被分解以場對形式存在。(這里所說的場模式包括圖像的場及幀場自適應下的處于場模式的宏塊對) 本句法元素的值有可能在片頭被重載。在序列參數集中有句法元素 num_ref_frames 也是跟參考幀隊列有關,它們的區別是 num_ref_frames 表示參考幀隊列的最大值,解碼器用它的值來分配內存空間;num_ref_idx_l0_active_minus1 表示在這個隊列中當前實際的、已存在的參考幀數目,這從它的名字 active 中也可以看出來。這個句法元素是 H.264 中最重要的句法元素之一,編碼器要通知解碼器某個運動矢量所指向的是哪個參考圖像時,并不是直接傳送該圖像的編號,而是傳送該圖像在參考幀隊列中的序號。這個序號并不是在碼流中傳送的,而是編碼器和解碼器同步地、用相同的方法將參考圖像放入隊列,從而獲得一個序號。這個隊列在每解一個圖像,甚至是每個片后都會動態地更新。維護參考幀隊列是編解碼器十分重要的工作,而本句法元素是維護參考幀隊列的重要依據。參考幀隊列的復雜的維護機制是 H.264 重要也是很有特色的組成部分。
          • num_ref_idx_l1_active_minus1 與上一個句法元素的語義一致,只是本句法元素用于 list1,而上一
            句法元素用于 list0。
          • constrained_intra_pred_flag,在 P 和 B 片中,幀內編碼的宏塊的鄰近宏塊可能是采用的幀間編碼。當本句法元素等于 1 時,表示幀內編碼的宏塊不能用幀間編碼的宏塊的像素作為自己的預測,即幀內編碼的宏塊只能用鄰近幀內編碼的宏塊的像素作為自己的預測;而本句法元素等于 0 時,表示不存在這種限制。

          3)補充增強信息 SEI

          SEI 即補充增強信息(Supplemental Enhancement Information),屬于碼流范疇,它提供了向視頻碼流中加入額外信息的方法,是 H.264 標準的特性之一。

          SEI的基本特征如下:

          • 并非解碼過程的必須選項;
          • 可能對解碼過程(容錯、糾錯)有幫助;
          • 集成在視頻碼流中。

          也就是說,視頻編碼器在輸出視頻碼流的時候,可以不提供 SEI 信息。雖然在視頻的傳輸過程、解封裝、解碼這些環節,都可能因為某種原因丟棄 SEI 內容,但在視頻內容的生成端和傳輸過程中,是可以插入 SEI 信息的。這些插入的信息,和其他視頻內容一同經過傳輸鏈路到達消費端。

          SEI 是一種 NAL 單元類型。它的結構大致如下:

          // H.264
          0x06,n 個 FF 字節 + 1 個非 FF 字節,16 字節 UUID,userData,0x80 或 0x0080
          • 開始碼:H.264 中 SEI 的 NAL 單元類型是 0x06;H.264 中 SEI 的 NAL 單元類型是 0x4E、0x01。
          • 自定義:SEI 除了開始的 NAL 單元類型字段外,還存在不同的子類型。H.264 中第 2 個字節或者 H.265 中第 3 個字節 0x05 表示后續是自定義數據。
          • 負載長度:表示后續跟著的自定義數據長度,計算方法是:n * 255 + XY,也就是將數據長度減去 255,有多少個就寫多少個 FF,剩下的如果不為 0,再寫一個字節。
          • 負載內容:負載內容是 UUID + payload content。UUID 固定 16 個字節,用于區分不同的業務。payload content 表示自定義數據。

          4)片 Slice

          一幀圖像可編碼成一個或者多個片,每片包含整數個宏塊,分片的目的是為了限制錯誤碼的擴散和傳輸,使編碼片相互間保持獨立。

          片的結構:

          Slice 中的關鍵參數包括:

          • slice_type,表示當前片的類型。具體類型如下。其中,IDR 圖像時,slice_type 等于 2、4、7、9。

          • pic_parameter_set_id,表示引用的 PPS 的 id。
          • frame_num,表示解碼順序。每個參考幀都有一個依次連續的 frame_num 作為它們的標識,這指明了各圖像的解碼順序。但事實上非參考幀的片頭也會出現 frame_num。只是當該個圖像是參考幀時,它所攜帶的這個句法元素在解碼時才有意義。H.264 對 frame_num 的值作了如下規定:當參數集中的句法元素 gaps_in_frame_num_value_allowed_flag 不為 1 時,每個圖像的 frame_num 值是它前一個參考幀的 frame_num 值增加 1。

          • field_pic_flag,這是在片層標識圖像編碼模式的唯一一個句法元素。所謂的編碼模式是指的幀編碼、場編碼、幀場自適應編碼。
          • idr_pic_id,IDR 圖像的標識。不同的 IDR 圖像有不同的 idr_pic_id 值。值得注意的是,IDR 圖像有不等價于 I 圖像,只有在作為 IDR 圖像的 I 幀才有這個句法元素,在場模式下,IDR 幀的兩個場有相同的 idr_pic_id 值。idr_pic_id 的取值范圍是 [0,65535],和 frame_num 類似,當它的值超出這個范圍時,它會以循環的方式重新開始計數。
          • pic_order_cnt_lsb,在 POC 的第一種算法中本句法元素來計算 POC 值,在 POC 的第一種算法中是顯式地傳遞 POC 的值,而其他兩種算法是通過 frame_num 來映射 POC 的值。

          主站蜘蛛池模板: 无码人妻一区二区三区在线| 亚洲爽爽一区二区三区| 亚洲一区欧洲一区| 国产精品无码亚洲一区二区三区 | 一区二区三区福利| 亚洲av无码片vr一区二区三区 | 午夜DV内射一区二区| 日韩美女视频一区| 国模精品一区二区三区视频| 中文字幕一区二区三区在线观看 | 白丝爆浆18禁一区二区三区| 精品人妻系列无码一区二区三区| 久久成人国产精品一区二区| 一区二区三区四区无限乱码 | 日本一区二区三区在线看| 亚洲日韩AV一区二区三区中文| 国产一区二区福利| 国产内射999视频一区| 国产一区二区三区在线观看精品| chinese国产一区二区| 亚洲高清成人一区二区三区| 亚洲精品色播一区二区| 无码中文字幕一区二区三区| 亚洲色偷精品一区二区三区| 日本一区二区三区在线看| 加勒比精品久久一区二区三区| 麻豆视传媒一区二区三区| 美女福利视频一区二区| 亚洲视频一区二区| 国产亚洲一区二区在线观看| 久久亚洲AV午夜福利精品一区| 免费无码VA一区二区三区| 精品人妻一区二区三区浪潮在线| 国产精品揄拍一区二区久久| 国产精品亚洲一区二区在线观看| 国产精品一区二区综合| 久久精品无码一区二区app| 久久99国产精品一区二区| 日韩一区二区三区无码影院| 日韩一区二区三区射精| 黑人一区二区三区中文字幕|