FFplay文檔解讀-4-編解碼器選項一

前言

Github地址:Github
簡書地址:簡書
專輯地址:FFplay專輯

6.編解碼器選項

libavcodec提供了一些通用的全局選項,可以在所有編碼器和解碼器上設(shè)置。 此外,每個編解碼器可以支持所謂的私有選項,這些選項特定于給定的編解碼器。

有時,全局選項可能只會影響特定類型的編解碼器,并且可能是荒謬的或被其他人忽略,因此需要了解指定選項的含義。 還有一些選項僅用于解碼或編碼。

可以通過在FFmpeg工具中指定-option值,或通過在AVCodecContext選項中顯式設(shè)置值或使用“l(fā)ibavutil / opt.h”API進行編程來設(shè)置選項。

支持的選項列表如下:

b integer (encoding,audio,video)

bit/s為單位設(shè)置比特率。 默認(rèn)值為200K。

ab integer (encoding,audio)

設(shè)置音頻比特率(以位/秒為單位)。 默認(rèn)值為128K。

bt integer (encoding,video)

設(shè)置視頻比特率容差(以位/秒為單位)。 在1遍模式中,比特率容差指定速率控制愿意偏離目標(biāo)平均比特率值的程度。 這與最小/最大比特率無關(guān)。 降低公差太大會對質(zhì)量產(chǎn)生不利影響。

flags flags (decoding/encoding,audio,video,subtitles)

設(shè)置通用標(biāo)志。

可能的取值如下:

????值???? 解釋
mv4 按宏塊使用四個運動矢量(mpeg4
qpel 使用1/4像素運動補償
loop 使用循環(huán)過濾器
qscale 使用固定的qscale
pass1 在第一次通過模式下使用內(nèi)部2pass速率控制
pass2 在第二次通過模式下使用內(nèi)部2pass速率控制
gray 僅解碼/編碼灰度
emu_edge 不要描邊
psnr 在編碼期間設(shè)置error[?]變量
truncated
ildct 使用隔行掃描DCT
low_delay 強制低延遲
global_header 將全局標(biāo)頭放在extradata而不是每個關(guān)鍵幀中
bitexact 僅編寫平臺,構(gòu)建和時間無關(guān)的數(shù)據(jù)。 (除了(I)DCT)。 這可確保文件和數(shù)據(jù)校驗和可重現(xiàn)并在平臺之間匹配。 它的主要用途是進行回歸測試
aic 應(yīng)用H263高級幀內(nèi)編碼/ mpeg4交流預(yù)測
cbp 不推薦使用,請改用mpegvideo私有選項
qprd 不推薦使用,請改用mpegvideo私有選項
ilme 應(yīng)用隔行掃描運動估計
cgop 使用封閉的gop
me_method integer (encoding,video)

設(shè)置運動估計方法。

可能的取值如下:

????值???? 解釋
zero 零運動估計(最快)
full 全運動估計(最慢)
epzs EPZS運動估計(默認(rèn))
esa esa運動估計(別名為完整)
tesa 德莎運動估計
dia dia運動估計(epzs的別名)
log 對數(shù)運動估計
phods phods運動估計
x1 X1運動估計
hex 十六進制運動估計
umh umh運動估計
iter iter運動估計
extradata_size integer

設(shè)置extradata大小。

time_base rational number

設(shè)置編解碼器時基。

它是表示幀時間戳的基本時間單位(以秒為單位)。 對于固定fps內(nèi)容,時基應(yīng)為1 / frame_rate,時間戳增量應(yīng)相同為1

g integer (encoding,video)

設(shè)置圖片組(GOP)大小。 默認(rèn)值為12。

ar integer (decoding/encoding,audio)

設(shè)置音頻采樣率(Hz)。

ac integer (decoding/encoding,audio)

設(shè)置音頻通道數(shù)。

cutoff integer (encoding,audio)

設(shè)置截止帶寬。 (僅受選定編碼器支持,請參閱各自的文檔部分。)

frame_size integer (encoding,audio)

設(shè)置音頻幀大小。

除最后一個之外的每個提交的幀必須包含每個通道的frame_size樣本。 當(dāng)編解碼器設(shè)置了CODEC_CAP_VARIABLE_FRAME_SIZE時,可能為0,在這種情況下,幀大小不受限制。 它由一些解碼器設(shè)置以指示恒定的幀大小。

frame_number integer

設(shè)置幀編號。

delay integer

qcomp float (encoding,video)

設(shè)置視頻量化器比例壓縮(VBR)。 它在速率控制方程中用作常數(shù)。 默認(rèn)rc_eq的推薦范圍:0.0-1.0。

qblur float (encoding,video)

設(shè)置視頻量化器比例模糊(VBR)

qmin integer (encoding,video)

設(shè)置最小視頻量化比例(VBR)。 必須包含在-169之間,默認(rèn)值為2。

qmax integer (encoding,video)

設(shè)置最大視頻量化器比例(VBR)。 必須包含在-11024之間,默認(rèn)值為31。

qdiff integer (encoding,video)

設(shè)置量化器標(biāo)度(VBR)之間的最大差異。

bf integer (encoding,video)

設(shè)置非B幀之間的最大B幀數(shù)。

必須是-116之間的整數(shù)。0表示禁用B幀。 如果使用值-1,它將根據(jù)編碼器選擇自動值。

默認(rèn)值為0

b_qfactor float (encoding,video)

P幀和B幀之間設(shè)置qp因子。

rc_strategy integer (encoding,video)

設(shè)置ratecontrol方法。

b_strategy integer (encoding,video)

設(shè)置策略以在I/P/B幀之間進行選擇。

ps integer (encoding,video)

以字節(jié)為單位設(shè)置RTP有效負(fù)載大小。

mv_bits integer

header_bits integer

i_tex_bits integer

p_tex_bits integer

i_count integer

p_count integer

skip_count integer

misc_bits integer

frame_bits integer

codec_tag integer

bug flags (decoding,video)

解決方法不自動檢測編碼器錯誤。

可能的取值:

解釋
autodetect
old_msmpeg4 一些舊的lavc生成了msmpeg4v3文件(沒有自動檢測)
xvid_ilace Xvid隔行掃描錯誤(如果fourcc == XVIX,則自動檢測)
ump4 (如果fourcc == UMP4,則自動檢測)
no_padding 填充錯誤(自動檢測)
amv
ac_vlc 非法vlc錯誤(每四個自動檢測)
qpel_chroma
std_qpel 舊標(biāo)準(zhǔn)qpel(每個四分之一版本自動檢測)
qpel_chroma2
direct_blocksize direct-qpel-blocksize bug(根據(jù)fourcc/version自動檢測)
edge 邊緣填充錯誤(每個fourcc /版本自動檢測)
hpel_chroma
dc_clip
ms 解決微軟破解解碼器中的各種錯誤。
trunc 截斷的幀
lelim integer (encoding,video)

設(shè)置亮度的單個系數(shù)消除閾值(負(fù)值也考慮DC系數(shù))。

celim integer (encoding,video)

設(shè)置色度的單個系數(shù)消除閾值(負(fù)值也考慮直流系數(shù))。

strict integer (decoding/encoding,audio,video)

指定嚴(yán)格遵守標(biāo)準(zhǔn)的程度。

可能的結(jié)果如下:

??值?? 解釋
very 嚴(yán)格遵守較舊的更嚴(yán)格版本的規(guī)范或參考軟件
strict 無論后果如何,嚴(yán)格遵守規(guī)范中的所有內(nèi)容
normal
unofficial 允許非官方擴展
experimental 允許非標(biāo)準(zhǔn)化的實驗性事物,實驗性(未完成/正在進行/未經(jīng)過充分測試)解碼器和編碼器。 注意:實驗解碼器可能會帶來安全風(fēng)險,請勿使用此解碼器來解碼不受信任的輸入
b_qoffset float (encoding,video)

設(shè)置P幀和B幀之間的QP偏移。

err_detect flags (decoding,audio,video)

設(shè)置錯誤檢測標(biāo)志。

可能的取值如下:

解釋
crccheck 驗證嵌入式CRC
bitstream 檢測比特流規(guī)范偏差
buffer 檢測不正確的比特流長度
explode 在小錯誤檢測中中止解碼
ignore_err 忽略解碼錯誤,并繼續(xù)解碼。 如果想分析視頻內(nèi)容并因此希望無論如何都要解碼所有內(nèi)容,這將非常有用。 如果出現(xiàn)錯誤,此選項不會產(chǎn)生令人滿意的視頻
careful 考慮違反規(guī)范的事情,并且沒有在野外看到錯誤
compliant 將所有規(guī)范非合規(guī)性視為錯誤
aggressive 考慮一個理智的編碼器不應(yīng)該做的錯誤
has_b_frames integer

block_align integer

mpeg_quant integer (encoding,video)

使用MPEG量化器代替H.263。

qsquish float (encoding,video)

如何在qmin和qmax之間保持量化器(0 =clip,1 =use differentiable function)。

rc_qmod_amp float (encoding,video)

設(shè)置實驗量化器調(diào)制。

rc_qmod_freq integer (encoding,video)

設(shè)置實驗量化器調(diào)制。

rc_override_count integer

rc_eq string (encoding,video)

設(shè)定速率控制方程。 在計算表達(dá)式時,除了“表達(dá)式評估”部分中定義的標(biāo)準(zhǔn)函數(shù)外,還提供以下函數(shù):bits2qp(bits),qp2bits(qp)。 此外,還有以下常量:iTex pTex tex mv fCode iCount mcVar var isI isP isB avgQP qComp avgIITex avgPITex avgPPTex avgBPTex avgTex

maxrate integer (encoding,audio,video)

設(shè)置最大比特率容差(以位/秒為單位)。 需要設(shè)置bufsize。

minrate integer (encoding,audio,video)

設(shè)置最小比特率容差(以位/秒為單位)。 在設(shè)置CBR編碼時最有用。 它沒有什么用處。

bufsize integer (encoding,audio,video)

設(shè)置速率控制緩沖區(qū)大?。ㄒ晕粸閱挝唬?/p>

rc_buf_aggressivity float (encoding,video)

目前沒用。

i_qfactor float (encoding,video)

P幀和I幀之間設(shè)置QP因子。

i_qoffset float (encoding,video)

設(shè)置PI幀之間的QP偏移。

rc_init_cplx float (encoding,video)

設(shè)置1遍編碼的初始復(fù)雜度。

dct integer (encoding,video)

設(shè)置DCT算法。

可能的取值如下:

解釋
auto 自動選擇一個好的(默認(rèn))
fastint fast integer
int 準(zhǔn)確的整數(shù)
mmx
altivec
faan 浮點AAN DCT
lumi_mask float (encoding,video)

壓縮明亮區(qū)域比中等區(qū)域強。

tcplx_mask float (encoding,video)

設(shè)置時間復(fù)雜度掩蔽。

scplx_mask float (encoding,video)

設(shè)置空間復(fù)雜度掩蔽。

p_mask float (encoding,video)

設(shè)置屏蔽間隔。

dark_mask float (encoding,video)

壓縮比中等強度的黑暗區(qū)域。

idct integer (decoding/encoding,video)

選擇IDCT實施。

可能的取值如下:

解釋
auto
int
simple
simplemmx
simpleauto 自動選擇與簡單IDCT兼容的IDCT
arm
altivec
sh4
simplearm
simplearmv5te
simplearmv6
simpleneon
simplealpha
ipp
xvidmmx
faani 浮點AAN IDCT
slice_count integer

ec flags (decoding,video)

設(shè)置錯誤隱藏策略。

可能的取值如下:

解釋
guess_mvs 迭代運動矢量(MV)搜索(慢)
deblock 使用強deblock過濾器來修復(fù)損壞的MB
favor_inter 傾向于從前一幀而不是當(dāng)前幀預(yù)測
bits_per_coded_sample integer

pred integer (encoding,video)

設(shè)定預(yù)測方法。

可能的取值如下:

left
plane
median
aspect rational number (encoding,video)

設(shè)置樣本寬高比。

sar rational number (encoding,video)

設(shè)置樣本寬高比。 方面的別名。

debug flags (decoding/encoding,audio,video,subtitles)

打印特定的調(diào)試信息。

可能的取值如下:

解釋
pict 圖片信息
rc 速率控制
bitstream
mb_type 宏塊(MB)類型
qp 每塊量化參數(shù)(QP)
dct_coeff
green_metadata 顯示即將到來的幀,GoP或給定持續(xù)時間的復(fù)雜性元數(shù)據(jù)。
skip
startcode
er 錯誤識別
mmco 內(nèi)存管理控制操作(H.264)
bugs
buffers 圖片緩沖區(qū)分配
thread_ops 線程操作
nomc 跳過運動補償
cmp integer (encoding,video)

設(shè)置完全比較功能。

可能的取值如下:

解釋
sad 絕對差值之和,快速(默認(rèn))
sse 平方誤差之和
satd 絕對Hadamard的總和改變了差異
dct 絕對DCT轉(zhuǎn)換差異的總和
psnr 量化誤差平方和(avoid, low quality)
bit 塊所需的位數(shù)
rd 速率失真最佳,速度慢
zero 0
vsad 絕對垂直差異之和
vsse 垂直差異的平方和
nsse 噪聲保持平方差的總和
w53 5/3小波,僅用于snow場景
w97 9/7小波,僅用于snow場景中
dctmax
chroma
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容