當前位置:首頁 » 文件管理 » 碼流數據壓縮

碼流數據壓縮

發布時間: 2022-09-25 10:37:53

壓縮碼流如何調整能調整么

如果你說的是視頻碼流的話,你可以對片子進行刪減或增加而不進行任何重編碼行為,但是如果對碼率的大小,片子畫面的大小之類的修改的話就必須要對片子進行重編碼了

② 音頻文件壓縮時選擇格式碼流與文件大小聲音質量之間的關系

正比,正常128以上,190以上的意質好,wma格式的比mp3好

③ GOP/ 碼流 /碼率 / 比特率 / 幀速率 / 解析度

關鍵幀的周期,也就是兩個IDR幀之間的距離,一個幀組的最大幀數,一般而言,每一秒視頻至少需要使用 1 個關鍵幀。增加關鍵幀個數可改善質量,但是同時增加帶寬和網路負載。

需要說明的是,通過提高GOP值來提高圖像質量是有限度的,在遇到場景切換的情況時,H.264編碼器會自動強制插入一個I幀,此時實際的GOP值被縮短了。另一方面,在一個GOP中,P、B幀是由I幀預測得到的,當I幀的圖像質量比較差時,會影響到一個GOP中後續P、B幀的圖像質量,直到下一個GOP開始才有可能得以恢復,所以GOP值也不宜設置過大。

同時,由於P、B幀的復雜度大於I幀,所以過多的P、B幀會影響編碼效率,使編碼效率降低。另外,過長的GOP還會影響Seek操作的響應速度,由於P、B幀是由前面的I或P幀預測得到的,所以Seek操作需要直接定位,解碼某一個P或B幀時,需要先解碼得到本GOP內的I幀及之前的N個預測幀才可以,GOP值越長,需要解碼的預測幀就越多,seek響應的時間也越長。

H.264/AVC標准中兩種熵編碼方法,CABAC叫自適應二進制算數編碼,CAVLC叫前後自適應可變長度編碼,

CABAC:是一種無損編碼方式,畫質好,X264就會舍棄一些較小的DCT系數,碼率降低,可以將碼率再降低10-15%(特別是在高碼率情況下),會降低編碼和解碼的速速。

CAVLC將佔用更少的CPU資源,但會影響壓縮性能。

幀:當采樣視頻信號時,如果是通過逐行掃描,那麼得到的信號就是一幀圖像,通常幀頻為25幀每秒(PAL制)、30幀每秒(NTSC制);

場:當采樣視頻信號時,如果是通過隔行掃描(奇、偶數行),那麼一幀圖像就被分成了兩場,通常場頻為50Hz(PAL制)、60Hz(NTSC制);

幀頻、場頻的由來:最早由於抗干擾和濾波技術的限制,電視圖像的場頻通常與電網頻率(交流電)相一致,於是根據各地交流電頻率不同就有了歐洲和中國等PAL制的50Hz和北美等NTSC制的60Hz,但是現在並沒有這樣的限制了,幀頻可以和場頻一樣,或者場頻可以更高。

幀編碼、場編碼方式:逐行視頻幀內鄰近行空間相關性較強,因此當活動量非常小或者靜止的圖像比較適宜採用幀編碼方式;而場內相鄰行之間的時間相關性較強,對運動量較大的運動圖像則適宜採用場編碼方式。

開啟會減少塊效應。

是否讓每個I幀變成IDR幀,如果是IDR幀,支持隨機訪問

--frame 將兩場合並作為一幀進行編碼,
--tff Enable interlaced mode (開啟隔行編碼並設置上半場在前),
--bff Enable interlaced mode。

PAFF 和MBAFF:當對隔行掃描圖像進行編碼時,每幀包括兩個場,由於兩個場之間存在較大的掃描間隔,這樣,對運動圖像來說,幀中相鄰兩行之間的空間相關性相對於逐行掃描時就會減小,因此這時對兩個場分別進行編碼會更節省碼流。

對幀來說,存在三種可選的編碼方式:將兩場合並作為一幀進行編碼(frame 方式)或將兩場分別編碼(field 方式)或將兩場合並起來作為一幀,但不同的是將幀中垂直相鄰的兩個宏塊合並為宏塊對進行編碼;前兩種稱為PAFF 編碼,對運動區域進行編碼時field 方式有效,對非運區域編碼時,由於相鄰兩行有較大的相關性,因而frame 方式會更有效。當圖像同時存在運動區域和非運動區域時,在MB 層次上,對運動區域採取field 方式,對非運動區域採取frame 方式會更加有效,這種方式就稱為MBAFF,預測的單位是宏塊對。

碼流(Data Rate)是指視頻文件在單位時間內使用的數據流量,也叫碼率或碼流率,通俗一點的理解就是取樣率,是視頻編碼中畫面質量控制中最重要的部分,一般我們用的單位是kb/s或者Mb/s。一般來說同樣解析度下,視頻文件的碼流越大,壓縮比就越小,畫面質量就越高。碼流越大,說明單位時間內取樣率越大,數據流,精度就越高,處理出來的文件就越接近原始文件,圖像質量越好,畫質越清晰,要求播放設備的解碼能力也越高。

當然,碼流越大,文件體積也越大,其計算公式是文件體積=時間X碼率/8。例如,網路上常見的一部90分鍾1Mbps碼流的720P RMVB文件,其體積就=5400秒×1Mb/8=675MB。

通常來說,一個視頻文件包括了畫面及聲音,例如一個RMVB的視頻文件,裡麵包含了視頻信息和音頻信息,音頻及視頻都有各自不同的采樣方式和比特率,也就是說,同一個視頻文件音頻和視頻的比特率並不是一樣的。而我們所說的一個視頻文件碼流率大小,一般是指視頻文件中音頻及視頻信息碼流率的總和。

以以國內最流行,大家最熟悉的RMVB視頻文件為例,RMVB中的VB,指的是VBR,即Variable Bit Rate的縮寫,中文含義是可變比特率,它表示RMVB採用的是動態編碼的方式,把較高的采樣率用於復雜的動態畫面(歌舞、飛車、戰爭、動作等),而把較低的采樣率用於靜態畫面,合理利用資源,達到畫質與體積可兼得的效果。

碼率和取樣率最根本的差別就是碼率是針對源文件來講的。

采樣率(也稱為采樣速度或者采樣頻率)定義了每秒從連續信號中提取並組成離散信號的采樣個數,它用赫茲(Hz)來表示。采樣率是指將模擬信號轉換成數字信號時的采樣頻率,也就是單位時間內采樣多少點。一個采樣點數據有多少個比特。比特率是指每秒傳送的比特(bit)數。單位為 bps(Bit Per Second),比特率越高,傳送的數據越大,音質越好.比特率 =采樣率 x 採用位數 x聲道數.

采樣率類似於動態影像的幀數,比如電影的采樣率是24赫茲,PAL制式的采樣率是25赫茲,NTSC制式的采樣率是30赫茲。當我們把采樣到的一個個靜止畫面再以采樣率同樣的速度回放時,看到的就是連續的畫面。同樣的道理,把以44.1kHZ采樣率記錄的CD以同樣的速率播放時,就能聽到連續的聲音。顯然,這個采樣率越高,聽到的聲音和看到的圖像就越連貫。當然,人的聽覺和視覺器官能分辨的采樣率是有限的,基本上高於44.1kHZ采樣的聲音,絕大部分人已經覺察不到其中的分別了。

而聲音的位數就相當於畫面的顏色數,表示每個取樣的數據量,當然數據量越大,回放的聲音越准確,不至於把開水壺的叫聲和火車的鳴笛混淆。同樣的道理,對於畫面來說就是更清晰和准確,不至於把血和西紅柿醬混淆。不過受人的器官的機能限制,16位的聲音和24位的畫面基本已經是普通人類的極限了,更高位數就只能靠儀器才能分辨出來了。比如電話就是3kHZ取樣的7位聲音,而CD是44.1kHZ取樣的16位聲音,所以CD就比電話更清楚。

當你理解了以上這兩個概念,比特率就很容易理解了。以電話為例,每秒3000次取樣,每個取樣是7比特,那麼電話的比特率是21000。 而CD是每秒 44100次取樣,兩個聲道,每個取樣是13位PCM編碼,所以CD的比特率是44100 2 13=1146600,也就是說CD每秒的數據量大約是 144KB,而一張CD的容量是74分等於4440秒,就是639360KB=640MB。

碼率和取樣率最根本的差別就是碼率是針對源文件來講的。

比特率是指每秒傳送的比特(bit)數。單位為bps(Bit Per Second),比特率越高,傳送的數據越大。在視頻領域,比特率常翻譯為碼率 !!!

比特率表示經過編碼(壓縮)後的音、視頻數據每秒鍾需要用多少個比特來表示,而比特就是二進制裡面最小的單位,要麼是0,要麼是1。比特率與音、視頻壓縮的關系,簡單的說就是比特率越高,音、視頻的質量就越好,但編碼後的文件就越大;如果比特率越少則情況剛好相反。

比特率是指將數字聲音、視頻由模擬格式轉化成數字格式的采樣率,采樣率越高,還原後的音質、畫質就越好。

常見編碼模式:

VBR(Variable Bitrate)動態比特率 也就是沒有固定的比特率,壓縮軟體在壓縮時根據音頻數據即時確定使用什麼比特率,這是以質量為前提兼顧文件大小的方式,推薦編碼模式;

ABR(Average Bitrate)平均比特率 是VBR的一種插值參數。LAME針對CBR不佳的文件體積比和VBR生成文件大小不定的特點獨創了這種編碼模式。ABR在指定的文件大小內,以每50幀(30幀約1秒)為一段,低頻和不敏感頻率使用相對低的流量,高頻和大動態表現時使用高流量,可以做為VBR和CBR的一種折衷選擇。

CBR(Constant Bitrate),常數比特率 指文件從頭到尾都是一種位速率。相對於VBR和ABR來講,它壓縮出來的文件體積很大,而且音質相對於VBR和ABR不會有明顯的提高。

幀速率也稱為FPS(Frames PerSecond)的縮寫——幀/秒。是指每秒鍾刷新的圖片的幀數,也可以理解為圖形處理器每秒鍾能夠刷新幾次。越高的幀速率可以得到更流暢、更逼真的動畫。每秒鍾幀數(FPS)越多,所顯示的動作就會越流暢。

就是幀大小每一幀就是一副圖像。

640*480解析度的視頻,建議視頻的碼速率設置在700以上,音頻采樣率44100就行了

一個音頻編碼率為128Kbps,視頻編碼率為800Kbps的文件,其總編碼率為928Kbps,意思是經過編碼後的數據每秒鍾需要用928K比特來表示。

計算輸出文件大小公式:
(音頻編碼率(KBit為單位)/8 +視頻編碼率(KBit為單位)/8)×影片總長度(秒為單位)=文件大小(MB為單位)

2,高清視頻

目前的720P以及1080P採用了很多種編碼,例如主流的MPEG2,VC-1以及H.264,還有Divx以及Xvid,至於封裝格式更多到令人發指,ts、mkv、wmv以及藍光專用等等。

720和1080代表視頻流的解析度,前者1280 720,後者1920 1080,不同的編碼需要不同的系統資源,大概可以認為是H.264>VC-1>MPEG2。

VC-1是最後被認可的高清編碼格式,不過因為有微軟的後台,所以這種編碼格式不能小窺。相對於MPEG2,VC-1的壓縮比更高,但相對於H.264而言,編碼解碼的計算則要稍小一些,目前來看,VC-1可能是一個比較好的平衡,輔以微軟的支持,應該是一隻不可忽視的力量。一般來說,VC-1多為 「.wmv」後綴,但這都不是絕對的,具體的編碼格式還是要通過軟體來查詢。

總的來說,從壓縮比上來看,H.264的壓縮比率更高一些,也就是同樣的視頻,通過H.264編碼演算法壓出來的視頻容量要比VC-1的更小,但是VC-1 格式的視頻在解碼計算方面則更小一些,一般通過高性能的CPU就可以很流暢的觀看高清視頻。相信這也是目前NVIDIA Geforce 8系列顯卡不能完全解碼VC-1視頻的主要原因。

PS&TS是兩種視頻或影片封裝格式,常用於高清片。擴展名分別為VOB/EVO和TS等;其文件編碼一般用MPEG2/VC-1/H.264

高清,英文為「High Definition」,即指「高解析度」。 高清電視(HDTV),是由美國電影電視工程師協會確定的高清晰度電視標准格式。現在的大屏幕液晶電視機,一般都支持1080i和720P,而一些俗稱的「全高清」(Full HD),則是指支持1080P輸出的電視機。

目前的高清視頻編碼格式主要有H.264、VC-1、MPEG-2、MPEG-4、DivX、XviD、WMA-HD以及X264。事實上,現在網路上流傳的高清視頻主要以兩類文件的方式存在:一類是經過MPEG-2標准壓縮,以tp和ts為後綴的視頻流文件;一類是經過WMV-HD(Windows Media Video HighDefinition)標准壓縮過的wmv文件,還有少數文件後綴為avi或mpg,其性質與wmv是一樣的。真正效果好的高清視頻更多地以H.264與VC-1這兩種主流的編碼格式流傳。

一般來說,H.264格式以「.avi」、「.mkv」以及「.ts」封裝比較常見。

位率(定碼率,變碼率)

位率又稱為「碼率」。指單位時間內,單個錄像通道所產生的數據量,其單位通常是bps、Kbps或Mbps。可以根據錄像的時間與位率估算出一定時間內的錄像文件大小。 位率是一個可調參數,不同的解析度模式下和監控場景下,合適的位率大小是不同的。在設置時,要綜合考慮三個因素:
1、解析度
解析度是決定位率(碼率)的主要因素,不同的解析度要採用不同的位率。總體而言,錄像的解析度越高,所要求的位率(碼率)也越大,但並不總是如此,圖1說明了不同解析度的合理的碼率選擇范圍。所謂「合理的范圍」指的是,如果低於這個范圍,圖像質量看起來會變得不可接受;如果高於這個范圍,則顯得沒有必要,對於網路資源以及存儲資源來說是一種浪費。
2、場景
監控的場景是設置碼率時要考慮的第二個因素。在視頻監控中,圖像的運動劇烈程度還與位率有一定的關系,運動越劇烈,編碼所要求的碼率就越高。反之則越低。因此在同樣的圖像解析度條件下,監控人多的場景和人少的場景,所要求的位率也是不同的。
3、存儲空間
最後需要考量的因素是存儲空間,這個因素主要是決定了錄像系統的成本。位率設置得越高,畫質相對會越好,但所要求的存儲空間就越大。所以在工程實施中,設置合適的位率即可以保證良好的回放圖像質量,又可以避免不必要的資源浪費。
位率類型
位率類型又稱為碼率類型,共有兩種——動態碼率(VBR)和固定碼率(CBR)。所謂動態碼率是指編碼器在對圖像進行壓縮編碼的過程中,根據圖像的狀況實時調整碼率高低的過程,例如當圖像中沒有物體在移動時,編碼器自動將碼率調整到一個較低的值。但當圖像中開始有物體移動時,編碼器又自動將碼率調整到一個較高的值,並且實時根據運動的劇烈程度進行調整。這種方式是一種圖像質量不變,數據量變化的編碼模式。
固定碼率是指編碼器在對圖像進行編碼的過程中,自始至終採用一個固定的碼率值,不論圖像情況如何變化。這種方式是碼率量不變,而圖像質量變化的編碼模式。在動態碼率模式下,我們在硬碟錄像機上設置的位率值稱為「位率上限」。意思是我們人為設定一個編碼碼率變化的上限,可以低於,但不能高於。根據這個位率值,我們可以估算出一定時間內的存儲容量的上限值。
在固定碼率模式下,在硬碟錄像機上設置的位率值就是編碼時所使用的位率值,根據這個數值,我們可以精確地估算出一定時間內的存儲容量。

介於0~31之間,值越小,量化越精細,圖像質量就越高,而產生的碼流也越長。

允許計算峰值信噪比(PSNR,Peak signal-to-noise ratio),編碼結束後在屏幕上顯示PSNR計算結果。開啟與否與輸出的視頻質量無關,關閉後會帶來微小的速度提升。

分別是BP、EP、MP、HP:
1、BP-Baseline Profile:基本畫質。支持I/P 幀,只支持無交錯(Progressive)和CAVLC;
2、EP-Extended profile:進階畫質。支持I/P/B/SP/SI 幀,只支持無交錯(Progressive)和CAVLC;
3、MP-Main profile:主流畫質。提供I/P/B 幀,支持無交錯(Progressive)和交錯(Interlaced),也支持CAVLC 和CABAC 的支持;
4、HP-High profile:高級畫質。在main Profile 的基礎上增加了8x8內部預測、自定義量化、無損視頻編碼和更多的YUV 格式;

H.264規定了三種檔次,每個檔次支持一組特定的編碼功能,並支持一類特定的應用。
1)基本檔次:利用I片和P片支持幀內和幀間編碼,支持利用基於上下文的自適應的變長編碼進行的熵編碼(CAVLC)。主要用於可視電話、會議電視、無線通信等實時視頻通信;
2)主要檔次:支持隔行視頻,採用B片的幀間編碼和採用加權預測的幀內編碼;支持利用基於上下文的自適應的算術編碼(CABAC)。主要用於數字廣播電視與數字視頻存儲;
3)擴展檔次:支持碼流之間有效的切換(SP和SI片)、改進誤碼性能(數據分割),但不支持隔行視頻和CABAC。主要用於網路的視頻流,如視頻點播。

指兩個P幀之間的距離。

主碼流位率高,圖像質量高,便於本地存儲;副碼流位率低,圖像質量低,便於網路傳輸。

總結:

編碼參數不能只知道幀率,碼率,I幀間隔,QP因子,更要知道其他參數的作用。

④ 碼流什麼意思

碼流(Data Rate)是指視頻文件在單位時間內使用的數據流量,也叫碼率,是視頻編碼中畫面質量控制中最重要的部分。同樣解析度下,視頻文件的碼流越大,壓縮比就越小,畫面質量就越好。

雙碼流的意思就是 一個主碼流用作存儲,一個輔碼流用作傳輸, 主要是來解決本地錄像高畫質和遠程網路帶寬不匹配的問題。

拓展資料

一般情況下,DVD格式歌曲的碼流為6~8M;VCD歌曲的碼流約為1.5M。相同配置和同樣網路環境下,DVD歌曲和VCD歌曲的並發流是不一樣的。

視頻比特率與碼流只是同一個問題兩種叫法,比如一個MPEG2視頻文件,一般不但包含視頻信息還有音頻信息,音頻也有自己的比特率,這是音視信息復合在一起的文件,這個文件的碼流是其音視碼流的總和。

⑤ 視頻怎麼壓縮到500m以內

將一個視頻壓縮到500m以內需要使用格式工廠來修改視頻的比特率,操作方法如下:

操作設備:戴爾電腦

操作系統:win10

操作軟體:格式工廠v4.8

1、選中要壓縮的文件,查看內存大小(文件為4G多)。

⑥ 攝像機的壓縮碼流是什麼意思

我們經常說HDV是25M的,這個25M就是碼流。
對於EX1R,拍攝時有一個35M、25M的選項,也是碼流。

那麼,什麼是碼流呢?
碼流也可以稱為碼率,是表示畫面壓縮程度的一個參數。
CMOS成像後,總得把拍攝的畫面傳輸到記錄裝置上。
這就需要通過演算法對畫面進行壓縮編碼。
編碼後,圖像的數據量就是碼流。

說到這里,大家明白了。
在CMOS成像後,下一個步驟就是壓縮編碼。
即使你的解析度再高,畫面成像再好。
編碼很差,你獲得的畫面照樣很差。
這樣壓縮編碼就很重要了。
有的同學說了,那麼編碼是不壓縮或者壓縮小一些不就可以了?
。。。。。對於高清攝像機,問題就出在這里。
要知道,每種記錄裝置,無論是磁帶還是存儲卡,寫入速度是有限制的。
畫面的數據量太大,就無法記錄下來了。所以壓縮編碼是必須的

⑦ 音視頻壓縮:H264碼流層次結構和NALU詳解

前言:
為什麼需要編碼呢?比如當前屏幕是1280*720.一秒24張圖片.那麼我們一秒的視頻數據是
1280*720(位像素)*24(張) / 8(1位元組8位)(結果:B) / 1024(結果:KB) / 1024 (結果:MB) = 2.64MB
一秒的數據有2.64MB數據量。1分鍾就會有100多MB。這對用戶來說真心是災難。所以現在我們需要一種壓縮方式減小數據的大小.在更低 比特率(bps)的情況下依然提供清晰的視頻。
H264: H264/AVC是廣泛採用的一種編碼方式。我們這邊會帶大家了解。從大到小排序依次是 序列,圖像,NALU,片,宏塊,亞宏塊,塊,像素。

問題背景:

前面在講封裝格式過程中,都有一個章節講解如何將H.264的NALU單元如何打包到TS、FLV、RTP中,解裝剛好相反,怎麼從這些封裝格式裡面解析出一個個NALU單元。NALU即是編碼器的輸出數據又是解碼器的輸入數據,所以在封裝和傳輸時,我們一般處理對象就是NALU,至於NALU內部到底是什麼則很少關心。甚至我們在編解碼時,我們只需要初始化好x264編碼庫,然後輸入YUV數據,它就會給你經過一系列壓縮演算法後輸出NALU,或者將NALU輸入到x264解碼庫就會輸出YUV數據。

這篇文章就初步帶你看下NALU能傳輸那些數據,NALU的類型和結構以及H264碼流的層次,最後通過分析工具分析下裸碼流記性驗證,你可以選擇感興趣章節閱讀。

NALU結構:

H.264的基本流(elementary stream),也叫裸流(沒有加格式封裝),就是一系列NALU的集合,如下圖所示:

用Notepad十六進制形式打開,以annexb格式存儲的h264裸流文件內容:

NALU結構分為兩層,包含了視頻編碼層(VCL)和網路適配層(NAL):

視頻編碼層(VCL即Video Coding Layer) :負責高效的視頻內容表示,這是核心演算法引擎,其中對宏塊、片的處理都包含在這個層級上,它輸出的數據是SODB;

網路適配層(NAL即Network Abstraction Layer) :以網路所要求的恰當方式對數據進行打包和發送,比較簡單,先報VCL吐出來的數據SODB進行位元組對齊,形成RBSP,最後再RBSP數據前面加上NAL頭則組成一個NALU單元。

分層目的:

這樣做的目的:VCL只負責視頻的信號處理,包含壓縮,量化等處理,NAL解決編碼後數據的網路傳輸,這樣可以將VCL和NAL的處理放到不同平台來處理,可以減少因為網路環境不同對VCL的比特流進行重構和重編碼;

NLAU結構:

其實NALU的承載數據真實並不是RBSP(Raw Byte Sequence Playload)而是EBSP即(Extent Byte Sequence Payload),EBSP和RBSP的區別就是在 RBSP裡面加入防偽起始碼位元組(0x03),因為H.264規范規定,編碼器吐出來的數據需要在每個NALU添加起始碼:0x00 00 01或者0x00 00 00 01,用來指示一個NALU的起始和終止位置,那麼RBSP數據內部是有可能含有這種位元組序列的,為了防止解析錯誤,所以在RBSP數據流裡面碰到0x 00 00 00 01的0x01前面就會加上0x03,解碼時將NALU的EBSP中的0x03去掉成為RBSP,稱為脫殼操作。

原始位元組序列負載 RBSP即Raw Byte Sequence Playload,因為VCL輸出的 原始數據比特流 SODB即String Of Data Bits,其長度不一定是8bit的整數倍,為了湊成整數個位元組,往往需要對SODB最後一個位元組進行填充形成RBSP,所以從SODB到RBSP的示意圖如下:

填充方式就是對VCL的輸出數據進行8bit進行切分,最後一個不滿8bit的位元組第一bit位置1,然後後面預設的bit置0即可
具體填充語法見下文:

原來文檔中的解釋:

主要的意思我的理解如下:

其中H.264規范規定,編碼器吐出來的數據需要在每個NALU添加起始碼:0x00 00 01或者0x00 00 00 01,用來指示一個NALU的起始和終止位置。

所以H.264編碼器輸出的碼流中每個幀開頭3-4位元組的start code起始碼為0x00 00 01或者0x00 00 00 01。

上面我們分析了NALU的結構以及每層輸出數據的處理方法,但是對於NALU的RBSP數據二進製表示的什麼含義並不清楚,下面分析下NALU的類型。

1. NALU Header

頭信息協議如上圖。

舉例說明:

這其中NALU的RBSP除了能承載真實的視頻壓縮數據,還能傳輸編碼器的配置信息,其中能傳輸視頻壓縮數據的為slice。

那麼如果NLAU傳輸視頻壓縮數據時,編碼器沒有開啟DP(數據分割)機制,則一個片就是一個NALU,一個 NALU 也就是一個片。否則,一個片由三個 NALU 組成,即DPA、DPB和DPC,對應的nal_unit_type 類型為 2、3和4。

通常情況我們看到的NLAU類型就是SPS、PPS、SEI、IDR的slice、非IDR這幾種。

上面站在NALU的角度看了NALU的類型、結構、數據來源、分層處理的原因等,其中NLAU最主要的目的就是傳輸視頻數據壓縮結果。那麼站在對數據本身的理解上,我們看下H.264碼流的層次結構。

H.264層次結構:

其實為了理解H.264是如何看待視頻數據,先要了解下視頻的形成過程。其實你把多副連續的有關聯圖像連續播就可以形成視頻,這主要利用了人視覺系統的暫留效應,當把連續的圖片以每秒25張的速度播放,人眼基本就感覺是連續的視頻了。動畫片就是這個原理:一張圖像裡面相鄰的區域或者一段時間內連續圖像的相同位置,像素、亮度、色溫差別比較小,所以視頻壓縮本質就是利於這種空間冗餘和時間上冗餘進行編碼,我們可以選取一段時間第一幅圖像的YUV值,後面的只需要記錄和這個的完整圖像的差別即可,同時即使記錄一副圖像的YUV值,當有鏡頭完全切換時,我們又選取切換後的第一張作為基本圖像,後面有一篇文章回講述下目前視頻壓縮的基本原理。

所以從這裡面就可以引申以下幾個概念:

所以視頻流分析的對象可以用下面的圖片描述:

如果站在數據的角度分析NALU的層次關系,如下圖:

這里視頻幀被劃分為一個片或者多個片,其中slice數據主要就是通過NLAU進行傳輸,其中slice數據又是由:

一個Slice = Silce + Slice Data

一幀圖片跟 NALU 的關聯 :

一幀圖片經過 H.264 編碼器之後,就被編碼為一個或多個片(slice),而裝載著這些片(slice)的載體,就是 NALU 了,我們可以來看看 NALU 跟片的關系(slice)。

引用自: https://www.jianshu.com/p/9522c4a7818d

Slice片類型:

設置片的目的是限制誤碼的擴散和傳輸,也就是一幀圖像中它們的編碼片是互相獨立的,這樣假設其中一張圖像的某一個片有問題導致解碼花屏,但是這個影響范圍就控制在這個片中,這就是我們平時看視頻發現只有局部花屏和綠屏的原因。

Slice Data裡面傳輸的是一個個宏塊,宏塊中的數據承載各個像素點YUV的壓縮數據。一個圖像通常被我們劃分成宏塊來研究,通常有16 16、16 8等格式。我們解碼的過程也就是恢復這些像素陣列的過程,如果知道了每個像素點的亮度和色度,就能渲染出一張完整的圖像,圖像的快速播放即是視頻。
剛才提到了宏塊.那麼什麼是宏塊呢?
宏塊是視頻信息的主要承載者。一個編碼圖像通常劃分為多個宏塊組成.包含著每一個像素的亮度和色度信息。視頻解碼最主要的工作則是提供高效的方式從碼流中獲得宏塊中像素陣列。
一個宏塊 = 一個16*16的亮度像素 + 一個8×8Cb + 一個8×8Cr彩色像素塊組成。(YCbCr 是屬於 YUV 家族的一員,在YCbCr 中 Y 是指亮度分量,Cb 指藍色色度分量,而 Cr 指紅色色度分量)
其中宏塊MB的類型:

宏塊的結構:

H.264碼流示例分析:

這里我們分析一下H.264的NLAU數據,其中包括了非VCL的NALU數據和VCL的NALU。

H.264碼流的NLAU單元:

4. 這里由於沒有數據分割機制,所以一個NALU承載一個片,同時一個片就是一個視頻幀;

4.至於NALU的非VCL數據SPS、PPS、SEI各個欄位的含義具體解析放到下篇文章,這個信息對於解碼器進行播放視頻很重要,很多播放問題都是這個數據有問題導致的;

上面看了視頻的GOP序列,視頻幀信息和片的組成,下面分析片中的宏塊信息;

H.264的層次結構:

總結:

本文主要講述了平時研究和分析視頻流對象的層次,然後這些視頻數據通過NALU傳輸時,NALU的類型和層次關系,以及NALU數據在不同層次的輸出。最後用視頻分析工具分析了H.264裸碼流驗證了上述層次關系。

所以對H.264數據分析時,一定要了解你現在分析的層次和框架,因為每個層次我們關心的數據處理對象是不一樣的,這個非常重要。

一般H.264的分析工具都是收費的,也有一些免費和裁剪版本供大家學習和使用。推薦幾個:Elecard StreamEye、CodecVisa、VideoEye、H264Analyzer、H264Visa等,有時需要交叉使用才能完成對你關心信息的分析,這些都放到我的Git上了,大家獲取使用即可。

引用原文

25fps i幀間隔50 用分析軟體查看可以看出每50幀一個i幀,並發送sps、pps、sei

sps、pps、sei、I幀綁在一起發送

⑧ 如何壓縮視頻大小,從1.8G壓縮到200

如何壓縮視頻大小,從1.8G壓縮到200MB?
視頻體積太大的話,不僅佔用電腦容量,如果想發送給別人也會很麻煩或很慢。為了解決視頻容量過大給小夥伴們帶來的諸多不便,今天我給大家介紹一個壓縮視頻的簡單的方法。

使用工具:嗨格式壓縮大師
→點擊下載正版無損壓縮軟體

具體操作步驟及講解附上:
1、打開嗨格式壓縮大師,運行軟體進入主界面,我們可以看到有視頻壓縮、圖片壓縮、Word壓縮、PDF壓縮等一系列壓縮功能,選擇並點擊我們需要的「視頻壓縮」功能;
2、進入視頻壓縮界面後,將需要壓縮的視頻拖拽進去就可以壓縮了,如果是多個視頻,可以直接一並添加(這款軟體支持批量壓縮哦~~)
3、視頻添加完成後,如果你對視頻有不同壓縮需求,可以在軟體頁面右側進行視頻壓縮的各項參數設置;可以手動調節視頻的參數,包括按比特率、文件大小等設置,數值越小壓縮後的文件就越小。
4、設置好壓縮模式之後,點擊「開始壓縮」稍等片刻,便能壓縮完成啦~

⑨ 什麼是碼流

數字信道傳送數字信號的速率稱為數據傳輸速率或比特率.
比特率這個詞有多種翻譯,比如碼率等,表示經過編碼(壓縮)後的音頻數據每秒鍾需要用多少個比特來表示,而比特就是二進制裡面最少的單位,要麼是0,要麼是1。比特率與音視頻壓縮的關系簡單的說就是比特率越高音視頻的質量就越好,但編碼後的文件就越大;如果比特率越少則情況剛好翻轉。
例如:以500Kbps來編碼音視頻。
其中1Kbps=1024bps,
b就是比特(bit)
s就是秒(second)
p就是每(per)
所以,以500kbps來編碼表示經過編碼後的音視頻數據每秒鍾需要用500K的比特來表示MPEG碼流(視頻壓縮碼流)
MPEG-Video碼流 圖像部分的碼流。文件擴展名通常使用:m1v, m2v, mpv, vbs等。
MPEG-Audio碼流 聲音部分的碼流。文件擴展名通常使用:mp1, mp2, mp3, mpa等。
MPEG-System碼流 MPEG-Video碼流和MPEG-Audio碼流復合形成的獨立碼流。文件擴展名通常使用:mpg, m2p等。
MPEG碼流完全依靠編碼器對MPEG語法和語義的准確使用來處理節目素材,如果沒有正確設置固定標志比特位、同步類型、數據包起始碼等,解碼器就可能錯誤解釋MPEG碼流。邏輯檢查功能主要檢查非節目素材的全部比特位,同時顯示任何不合邏輯的地方。打開基本碼流分析窗口菜單View的子菜單Event Log可以觀察視頻基本碼流的邏輯錯誤列表。

熱點內容
伺服器部署錯了怎麼重置 發布:2024-04-24 00:02:30 瀏覽:348
色選機腳本 發布:2024-04-23 23:52:35 瀏覽:257
吉利博越推薦買哪個配置 發布:2024-04-23 23:52:34 瀏覽:635
java字典排序 發布:2024-04-23 23:52:34 瀏覽:162
sky光遇測試服怎麼下安卓 發布:2024-04-23 23:46:40 瀏覽:798
access如何使用sql 發布:2024-04-23 23:29:39 瀏覽:910
ug10編程優缺點 發布:2024-04-23 23:08:47 瀏覽:335
房產配置怎麼設置 發布:2024-04-23 22:59:26 瀏覽:850
python怎麼調用函數 發布:2024-04-23 22:58:09 瀏覽:755
懷舊服怎麼把g轉到別的伺服器 發布:2024-04-23 22:57:53 瀏覽:221