XviD為一個(gè)PC視頻編解碼器,而編解碼器是為[合作]的縮寫明鏡,因此描述了一個(gè)方案,以數(shù)字視頻編碼和解碼的編碼視頻數(shù)據(jù)的目的是為了減少流量,這意味著,使其更小更快的通過計(jì)算機(jī)網(wǎng)絡(luò)或計(jì)算機(jī)磁盤上的更多高效的存儲(chǔ)傳輸。
xvid有兩種編碼方式:single pass和twopass single pass模式編碼簡單,速度也快,但最終效果不如twopass。 twopass就是視頻壓制需要經(jīng)過兩次編碼,分別為twopass-1st pass(簡稱1pass)和twopass-2nd pass(簡稱2pass) 1pass時(shí),編碼器會(huì)用最高質(zhì)量編碼采集可供第2次運(yùn)算參考的畫面信息,而在2 pass時(shí)。編碼器會(huì)根據(jù)第一次壓縮獲得的信息和用戶指定的文件大小,自動(dòng)分配比特率,使需要高流量的運(yùn)動(dòng)畫面分配到更多的空間,更高的比特率來保證畫面質(zhì)量。相對的,對于那些不包含太多運(yùn)動(dòng)信息的靜態(tài)畫面則用較低的比特率。追求畫質(zhì)的朋友當(dāng)然會(huì)選擇這種方式,但運(yùn)算比single pass更費(fèi)時(shí)。
接下來介紹一些基本概念:
Q值——量化值,它被用來描述1幀的質(zhì)量,每幀都有一個(gè)Q值,取值范圍在1-31之間。Q值越小,畫質(zhì)越好,比特率越大 I-frame——關(guān)鍵幀,常被縮寫為IF。關(guān)鍵幀是構(gòu)成一個(gè)幀組的第一幀。IF保留了一個(gè)場景的所有信息 P-frame——未來單項(xiàng)預(yù)測幀,縮寫為PF,只儲(chǔ)存與之前一個(gè)已解壓畫面的差值 B-frame——雙向預(yù)測幀,縮寫為BF,除了參考之前解壓的畫面以外,也會(huì)參考后一幀的畫面信息
編碼流程:
各變量的設(shè)置:創(chuàng)建xvid_enc_frame_t和xvid_enc_stats_t,分別用于傳入?yún)?shù)和統(tǒng)計(jì)編碼結(jié)果。
具體過程:
設(shè)置傳入圖像數(shù)據(jù)和圖像色彩空間 設(shè)置傳出的碼流 設(shè)置vol的標(biāo)志 設(shè)置幀的編碼類型 設(shè)置量化因子 設(shè)置運(yùn)動(dòng)估計(jì)算法集合 設(shè)置vop的標(biāo)志 編碼器提供的函數(shù)