前沿拓展:
windows media p
Windows medi
GOP/ 碼流 /碼率 / 比特率 / 幀速率 / 分辨率
GOP(Group of picture)
關(guān)鍵幀的周期,也就是兩個(gè)IDR幀之間的距離,一個(gè)幀組的最大幀數(shù),一般而言,每一秒視頻至少需要使用 1 個(gè)關(guān)鍵幀。增加關(guān)鍵幀個(gè)數(shù)可改善質(zhì)量,但是同時(shí)增加帶寬和網(wǎng)絡(luò)負(fù)載。
需要說明的是,通過提高GOP值來提高圖像質(zhì)量是有限度的,在遇到場景切換的情況時(shí),H.264編碼器會自動強(qiáng)制插入一個(gè)I幀,此時(shí)實(shí)際的GOP值被縮短了。另一方面,在一個(gè)GOP中,P、B幀是由I幀預(yù)測得到的,當(dāng)I幀的圖像質(zhì)量比較差時(shí),會影響到一個(gè)GOP中后續(xù)P、B幀的圖像質(zhì)量,直到下一個(gè)GOP開始才有可能得以恢復(fù),所以GOP值也不宜設(shè)置過大。
同時(shí),由于P、B幀的復(fù)雜度大于I幀,所以過多的P、B幀會影響編碼效率,使編碼效率降低。另外,過長的GOP還會影響Seek**作的響應(yīng)速度,由于P、B幀是由前面的I或P幀預(yù)測得到的,所以Seek**作需要直接**,解碼某一個(gè)P或B幀時(shí),需要先解碼得到本GOP內(nèi)的I幀及之前的N個(gè)預(yù)測幀才可以,GOP值越長,需要解碼的預(yù)測幀就越多,seek響應(yīng)的時(shí)間也越長。
CABAC/CAVLC
H.264/AVC標(biāo)準(zhǔn)中兩種熵編碼方法,CABAC叫自適應(yīng)二進(jìn)制算數(shù)編碼,CAVLC叫前后自適應(yīng)可變長度編碼,
CABAC:是一種無損編碼方式,畫質(zhì)好,X264就會舍棄一些較小的DCT系數(shù),碼率降低,可以將碼率再降低10-15%(特別是在高碼率情況下),會降低編碼和解碼的速速。
CAVLC將占用更少的CPU資源,但會影響壓縮性能。
幀:當(dāng)采樣視頻信號時(shí),如果是通過逐行掃描,那么得到的信號就是一幀圖像,通常幀頻為25幀每秒(PAL制)、30幀每秒(NTSC制);
場:當(dāng)采樣視頻信號時(shí),如果是通過隔行掃描(奇、偶數(shù)行),那么一幀圖像就被分成了兩場,通常場頻為50Hz(PAL制)、60Hz(NTSC制);
幀頻、場頻的由來:最早由于抗干擾和濾波技術(shù)的限制,電視圖像的場頻通常與電網(wǎng)頻率(交流電)相一致,于是根據(jù)各地交流電頻率不同就有了歐洲和**等PAL制的50Hz和北美等NTSC制的60Hz,但是現(xiàn)在并沒有這樣的限制了,幀頻可以和場頻一樣,或者場頻可以更高。
幀編碼、場編碼方式:逐行視頻幀內(nèi)鄰近行空間相關(guān)性較強(qiáng),因此當(dāng)活動量非常小或者靜止的圖像比較適宜采用幀編碼方式;而場內(nèi)相鄰行之間的時(shí)間相關(guān)性較強(qiáng),對運(yùn)動量較大的運(yùn)動圖像則適宜采用場編碼方式。
Deblocking
開啟會減少塊效應(yīng)。
FORCE_IDR
是否讓每個(gè)I幀變成IDR幀,如果是IDR幀,支持隨機(jī)訪問。
frame,tff,bff
–frame 將兩場合并作為一幀進(jìn)行編碼,–tff Enable interlaced mode (開啟隔行編碼并設(shè)置上半場在前),–bff Enable interlaced mode。
PAFF 和MBAFF:當(dāng)對隔行掃描圖像進(jìn)行編碼時(shí),每幀包括兩個(gè)場,由于兩個(gè)場之間存在較大的掃描間隔,這樣,對運(yùn)動圖像來說,幀中相鄰兩行之間的空間相關(guān)性相對于逐行掃描時(shí)就會減小,因此這時(shí)對兩個(gè)場分別進(jìn)行編碼會更節(jié)省碼流。
對幀來說,存在三種可選的編碼方式:將兩場合并作為一幀進(jìn)行編碼(frame 方式)或?qū)蓤龇謩e編碼(field 方式)或?qū)蓤龊喜⑵饋碜鳛橐粠煌氖菍写怪毕噜彽膬蓚€(gè)宏塊合并為宏塊對進(jìn)行編碼;前兩種稱為PAFF 編碼,對運(yùn)動區(qū)域進(jìn)行編碼時(shí)field 方式有效,對非運(yùn)區(qū)域編碼時(shí),由于相鄰兩行有較大的相關(guān)性,因而frame 方式會更有效。當(dāng)圖像同時(shí)存在運(yùn)動區(qū)域和非運(yùn)動區(qū)域時(shí),在MB 層次上,對運(yùn)動區(qū)域采取field 方式,對非運(yùn)動區(qū)域采取frame 方式會更加有效,這種方式就稱為MBAFF,預(yù)測的單位是宏塊對。
整理了一些學(xué)習(xí)資料、教學(xué)視頻和學(xué)習(xí)路線圖如下
資料內(nèi)容包括《Andoird音視頻開發(fā)必備手冊+音視頻學(xué)習(xí)視頻+學(xué)習(xí)文檔資料包+大廠面試真題+2022最新學(xué)習(xí)路線圖》等等(C/C++,Linux,F(xiàn)Fmpeg ,webRTC, rtmp, hls, rtsp, ffplay, srs),免費(fèi)分享,點(diǎn)擊自取FFmpegWebRTCRTMPRTSPHLSRTP播放器-音視頻流媒體高級開發(fā)
碼流 / 碼率
碼流(Data Rate)是指視頻文件在單位時(shí)間內(nèi)使用的數(shù)據(jù)流量,也叫碼率或碼流率,通俗一點(diǎn)的理解就是取樣率,是視頻編碼中畫面質(zhì)量控制中最重要的部分,一般我們用的單位是kb/s或者M(jìn)b/s。一般來說同樣分辨率下,視頻文件的碼流越大,壓縮比就越小,畫面質(zhì)量就越高。碼流越大,說明單位時(shí)間內(nèi)取樣率越大,數(shù)據(jù)流,精度就越高,處理出來的文件就越接近原始文件,圖像質(zhì)量越好,畫質(zhì)越清晰,要求播放設(shè)備的解碼能力也越高。
當(dāng)然,碼流越大,文件體積也越大,其計(jì)算公式是文件體積=時(shí)間X碼率/8。例如,網(wǎng)絡(luò)上常見的一部90分鐘1Mbps碼流的720P RMVB文件,其體積就=5400秒×1Mb/8=675MB。
通常來說,一個(gè)視頻文件包括了畫面及聲音,例如一個(gè)RMVB的視頻文件,里面包含了視頻信息和音頻信息,音頻及視頻都有各自不同的采樣方式和比特率,也就是說,同一個(gè)視頻文件音頻和視頻的比特率并不是一樣的。而我們所說的一個(gè)視頻文件碼流率大小,一般是指視頻文件中音頻及視頻信息碼流率的總和。
以以國內(nèi)最流行,大家最熟悉的RMVB視頻文件為例,RMVB中的VB,指的是VBR,即Variable Bit Rate的縮寫,中文含義是可變比特率,它表示RMVB采用的是動態(tài)編碼的方式,把較高的采樣率用于復(fù)雜的動態(tài)畫面(歌舞、飛車、戰(zhàn)爭、動作等),而把較低的采樣率用于靜態(tài)畫面,合理利用資源,達(dá)到畫質(zhì)與體積可兼得的效果。
碼率和取樣率最根本的差別就是碼率是針對源文件來講的。
采樣率
采樣率(也稱為采樣速度或者采樣頻率)定義了每秒從連續(xù)信號中提取并組成離散信號的采樣個(gè)數(shù),它用赫茲(Hz)來表示。采樣率是指將模擬信號轉(zhuǎn)換成數(shù)字信號時(shí)的采樣頻率,也就是單位時(shí)間內(nèi)采樣多少點(diǎn)。一個(gè)采樣點(diǎn)數(shù)據(jù)有多少個(gè)比特。比特率是指每秒傳送的比特(bit)數(shù)。單位為 bps(Bit Per Second),比特率越高,傳送的數(shù)據(jù)越大,音質(zhì)越好.比特率 =采樣率 x 采用位數(shù) x聲道數(shù).
采樣率類似于動態(tài)影像的幀數(shù),比如電影的采樣率是24赫茲,PAL制式的采樣率是25赫茲,NTSC制式的采樣率是30赫茲。當(dāng)我們把采樣到的一個(gè)個(gè)靜止畫面再以采樣率同樣的速度回放時(shí),看到的就是連續(xù)的畫面。同樣的道理,把以44.1kHZ采樣率記錄的CD以同樣的速率播放時(shí),就能聽到連續(xù)的聲音。顯然,這個(gè)采樣率越高,聽到的聲音和看到的圖像就越連貫。當(dāng)然,人的聽覺和視覺器官能分辨的采樣率是有限的,基本上高于44.1kHZ采樣的聲音,絕大部分人已經(jīng)覺察不到其中的分別了。
而聲音的位數(shù)就相當(dāng)于畫面的顏色數(shù),表示每個(gè)取樣的數(shù)據(jù)量,當(dāng)然數(shù)據(jù)量越大,回放的聲音越準(zhǔn)確,不至于把開水壺的叫聲和火車的鳴笛混淆。同樣的道理,對于畫面來說就是更清晰和準(zhǔn)確,不至于把血和西紅柿醬混淆。不過受人的器官的機(jī)能限制,16位的聲音和24位的畫面基本已經(jīng)是普通人類的極限了,更高位數(shù)就只能靠儀器才能分辨出來了。比如電話就是3kHZ取樣的7位聲音,而CD是44.1kHZ取樣的16位聲音,所以CD就比電話更清楚。
當(dāng)你理解了以上這兩個(gè)概念,比特率就很容易理解了。以電話為例,每秒3000次取樣,每個(gè)取樣是7比特,那么電話的比特率是21000。 而CD是每秒 44100次取樣,兩個(gè)聲道,每個(gè)取樣是13位PCM編碼,所以CD的比特率是44100*2*13=1146600,也就是說CD每秒的數(shù)據(jù)量大約是 144KB,而一張CD的容量是74分等于4440秒,就是639360KB=640MB。
碼率和取樣率最根本的差別就是碼率是針對源文件來講的。
比特率
比特率是指每秒傳送的比特(bit)數(shù)。單位為bps(Bit Per Second),比特率越高,傳送的數(shù)據(jù)越大。在視頻領(lǐng)域,比特率常翻譯為碼率 !!!
比特率表示經(jīng)過編碼(壓縮)后的音、視頻數(shù)據(jù)每秒鐘需要用多少個(gè)比特來表示,而比特就是二進(jìn)制里面最小的單位,要么是0,要么是1。比特率與音、視頻壓縮的關(guān)系,簡單的說就是比特率越高,音、視頻的質(zhì)量就越好,但編碼后的文件就越大;如果比特率越少則情況剛好相反。
比特率是指將數(shù)字聲音、視頻由模擬格式轉(zhuǎn)化成數(shù)字格式的采樣率,采樣率越高,還原后的音質(zhì)、畫質(zhì)就越好。
常見編碼模式:
VBR(Variable Bitrate)動態(tài)比特率 也就是沒有固定的比特率,壓縮軟件在壓縮時(shí)根據(jù)音頻數(shù)據(jù)即時(shí)確定使用什么比特率,這是以質(zhì)量為前提兼顧文件大小的方式,推薦編碼模式;
ABR(Average Bitrate)平均比特率 是VBR的一種插值參數(shù)。LAME針對CBR不佳的文件體積比和VBR生成文件大小不定的特點(diǎn)獨(dú)創(chuàng)了這種編碼模式。ABR在指定的文件大小內(nèi),以每50幀(30幀約1秒)為一段,低頻和不敏感頻率使用相對低的流量,高頻和大動態(tài)表現(xiàn)時(shí)使用高流量,可以做為VBR和CBR的一種折衷選擇。
CBR(Constant Bitrate),常數(shù)比特率 指文件從頭到尾都是一種位速率。相對于VBR和ABR來講,它壓縮出來的文件體積很大,而且音質(zhì)相對于VBR和ABR不會有明顯的提高。
幀速率
幀速率也稱為FPS(Frames PerSecond)的縮寫——幀/秒。是指每秒鐘刷新的圖片的幀數(shù),也可以理解為圖形處理器每秒鐘能夠刷新幾次。越高的幀速率可以得到更流暢、更逼真的動畫。每秒鐘幀數(shù)(FPS)越多,所顯示的動作就會越流暢。
分辨率
就是幀大小每一幀就是一副圖像。
640*480分辨率的視頻,建議視頻的碼速率設(shè)置在700以上,音頻采樣率44100就行了
一個(gè)音頻編碼率為128Kbps,視頻編碼率為800Kbps的文件,其總編碼率為928Kbps,意思是經(jīng)過編碼后的數(shù)據(jù)每秒鐘需要用928K比特來表示。
計(jì)算輸出文件大小公式:
(音頻編碼率(KBit為單位)/8 +視頻編碼率(KBit為單位)/8)×影片總長度(秒為單位)=文件大?。∕B為單位)
2,高清視頻
目前的720P以及1080P采用了很多種編碼,例如主流的MPEG2,VC-1以及H.264,還有Divx以及Xvid,至于封裝格式更多到令人發(fā)指,ts、mkv、wmv以及藍(lán)光專用等等。
720和1080代表視頻流的分辨率,前者1280*720,后者1920*1080,不同的編碼需要不同的系統(tǒng)資源,大概可以認(rèn)為是H.264>VC-1>MPEG2。
VC-1是最后被認(rèn)可的高清編碼格式,不過因?yàn)橛形④浀暮笈_,所以這種編碼格式不能小窺。相對于MPEG2,VC-1的壓縮比更高,但相對于H.264而言,編碼解碼的計(jì)算則要稍小一些,目前來看,VC-1可能是一個(gè)比較好的平衡,輔以微軟的支持,應(yīng)該是一只不可忽視的力量。一般來說,VC-1多為 “.wmv”后綴,但這都不是絕對的,具體的編碼格式還是要通過軟件來查詢。
總的來說,從壓縮比上來看,H.264的壓縮比率更高一些,也就是同樣的視頻,通過H.264編碼算法壓出來的視頻容量要比VC-1的更小,但是VC-1 格式的視頻在解碼計(jì)算方面則更小一些,一般通過高性能的CPU就可以很流暢的觀看高清視頻。相信這也是目前NVIDIA Geforce 8系列顯卡不能完全解碼VC-1視頻的主要原因。
PS&TS是兩種視頻或影片封裝格式,常用于高清片。擴(kuò)展名分別為VOB/EVO和TS等;其文件編碼一般用MPEG2/VC-1/H.264
高清,英文為“High Definition”,即指“高分辨率”。 高清電視(HDTV),是由美國電影電視工程師協(xié)會確定的高清晰度電視標(biāo)準(zhǔn)格式?,F(xiàn)在的大屏幕液晶電視機(jī),一般都支持1080i和720P,而一些俗稱的“全高清”(Full HD),則是指支持1080P輸出的電視機(jī)。
目前的高清視頻編碼格式主要有H.264、VC-1、MPEG-2、MPEG-4、DivX、XviD、WMA-HD以及X264。事實(shí)上,現(xiàn)在網(wǎng)絡(luò)上流傳的高清視頻主要以兩類文件的方式存在:一類是經(jīng)過MPEG-2標(biāo)準(zhǔn)壓縮,以tp和ts為后綴的視頻流文件;一類是經(jīng)過WMV-HD(Windows Media Video HighDefinition)標(biāo)準(zhǔn)壓縮過的wmv文件,還有少數(shù)文件后綴為avi或mpg,其性質(zhì)與wmv是一樣的。真正效果好的高清視頻更多地以H.264與VC-1這兩種主流的編碼格式流傳。
一般來說,H.264格式以“.avi”、“.mkv”以及“.ts”封裝比較常見。
位率(定碼率,變碼率)
位率又稱為“碼率”。指單位時(shí)間內(nèi),單個(gè)錄像通道所產(chǎn)生的數(shù)據(jù)量,其單位通常是bps、Kbps或Mbps??梢愿鶕?jù)錄像的時(shí)間與位率估算出一定時(shí)間內(nèi)的錄像文件大小。 位率是一個(gè)可調(diào)參數(shù),不同的分辨率模式下和**場景下,合適的位率大小是不同的。在設(shè)置時(shí),要綜合考慮三個(gè)因素:
1、分辨率
分辨率是決**率(碼率)的主要因素,不同的分辨率要采用不同的位率??傮w而言,錄像的分辨率越高,所要求的位率(碼率)也越大,但并不總是如此,圖1說明了不同分辨率的合理的碼率選擇范圍。所謂“合理的范圍”指的是,如果低于這個(gè)范圍,圖像質(zhì)量看起來會變得不可接受;如果高于這個(gè)范圍,則顯得沒有必要,對于網(wǎng)絡(luò)資源以及存儲資源來說是一種浪費(fèi)。
2、場景
**的場景是設(shè)置碼率時(shí)要考慮的第二個(gè)因素。在視頻**中,圖像的運(yùn)動劇烈程度還與位率有一定的關(guān)系,運(yùn)動越劇烈,編碼所要求的碼率就越高。反之則越低。因此在同樣的圖像分辨率條件下,**人多的場景和人少的場景,所要求的位率也是不同的。
3、存儲空間
最后需要考量的因素是存儲空間,這個(gè)因素主要是決定了錄像系統(tǒng)的成本。位率設(shè)置得越高,畫質(zhì)相對會越好,但所要求的存儲空間就越大。所以在工程實(shí)施中,設(shè)置合適的位率即可以保證良好的回放圖像質(zhì)量,又可以避免不必要的資源浪費(fèi)。
位率類型
位率類型又稱為碼率類型,共有兩種——?jiǎng)討B(tài)碼率(VBR)和固定碼率(CBR)。所謂動態(tài)碼率是指編碼器在對圖像進(jìn)行壓縮編碼的過程中,根據(jù)圖像的狀況實(shí)時(shí)調(diào)整碼率高低的過程,例如當(dāng)圖像中沒有物體在移動時(shí),編碼器自動將碼率調(diào)整到一個(gè)較低的值。但當(dāng)圖像中開始有物體移動時(shí),編碼器又自動將碼率調(diào)整到一個(gè)較高的值,并且實(shí)時(shí)根據(jù)運(yùn)動的劇烈程度進(jìn)行調(diào)整。這種方式是一種圖像質(zhì)量不變,數(shù)據(jù)量變化的編碼模式。
固定碼率是指編碼器在對圖像進(jìn)行編碼的過程中,自始至終采用一個(gè)固定的碼率值,不論圖像情況如何變化。這種方式是碼率量不變,而圖像質(zhì)量變化的編碼模式。在動態(tài)碼率模式下,我們在硬盤錄像機(jī)上設(shè)置的位率值稱為“位率上限”。意思是我們?nèi)藶樵O(shè)定一個(gè)編碼碼率變化的上限,可以低于,但不能高于。根據(jù)這個(gè)位率值,我們可以估算出一定時(shí)間內(nèi)的存儲容量的上限值。
在固定碼率模式下,在硬盤錄像機(jī)上設(shè)置的位率值就是編碼時(shí)所使用的位率值,根據(jù)這個(gè)數(shù)值,我們可以精確地估算出一定時(shí)間內(nèi)的存儲容量。
QP(quantizer parameter)
介于0~31之間,值越小,量化越精細(xì),圖像質(zhì)量就越高,而產(chǎn)生的碼流也越長。
PSNR
允許計(jì)算峰值信噪比(PSNR,Peak signal-to-noise ratio),編碼結(jié)束后在屏幕上顯示PSNR計(jì)算結(jié)果。開啟與否與輸出的視頻質(zhì)量無關(guān),關(guān)閉后會帶來微小的速度提升。
profile level
分別是BP、EP、MP、HP:
1、BP-Baseline Profile:基本畫質(zhì)。支持I/P 幀,只支持無交錯(cuò)(Progressive)和CAVLC;
2、EP-Extended profile:進(jìn)階畫質(zhì)。支持I/P/B/SP/SI 幀,只支持無交錯(cuò)(Progressive)和CAVLC;
3、MP-Main profile:主流畫質(zhì)。提供I/P/B 幀,支持無交錯(cuò)(Progressive)和交錯(cuò)(Interlaced),也支持CAVLC 和CABAC 的支持;
4、HP-High profile:高級畫質(zhì)。在main Profile 的基礎(chǔ)上增加了8×8內(nèi)部預(yù)測、自定義量化、無損視頻編碼和更多的YUV 格式;
H.264規(guī)定了三種檔次,每個(gè)檔次支持一組特定的編碼功能,并支持一類特定的應(yīng)用。
1)基本檔次:利用I片和P片支持幀內(nèi)和幀間編碼,支持利用基于上下文的自適應(yīng)的變長編碼進(jìn)行的熵編碼(CAVLC)。主要用于可視電話、會議電視、**通信等實(shí)時(shí)視頻通信;
2)主要檔次:支持隔行視頻,采用B片的幀間編碼和采用加權(quán)預(yù)測的幀內(nèi)編碼;支持利用基于上下文的自適應(yīng)的算術(shù)編碼(CABAC)。主要用于數(shù)字廣播電視與數(shù)字視頻存儲;
3)擴(kuò)展檔次:支持碼流之間有效的切換(SP和SI片)、改進(jìn)誤碼性能(數(shù)據(jù)分割),但不支持隔行視頻和CABAC。主要用于網(wǎng)絡(luò)的視頻流,如視頻點(diǎn)播。
Reference
指兩個(gè)P幀之間的距離。
主碼流/副碼流
主碼流位率高,圖像質(zhì)量高,便于本地存儲;副碼流位率低,圖像質(zhì)量低,便于網(wǎng)絡(luò)傳輸。
小編綜合來說:
編碼參數(shù)不能只知道幀率,碼率,I幀間隔,QP因子,更要知道其他參數(shù)的作用。
拓展知識:
原創(chuàng)文章,作者:九賢生活小編,如若轉(zhuǎn)載,請注明出處:http://xiesong.cn/14520.html