libavcodec提供一些通用的全局選項,可以作用于所有的編碼器和解碼器。
除此之外,每個編解碼器還可能支援私有選項。
有時,全局選項可能隻影響特定類型的編解碼器,并且可能是無意義的或被另一種編解碼器忽略,是以需要了解指定選項的含義。還有一些選項僅用于解碼或編碼。
支援的選項如下:
b 整數(編碼,音頻,視訊)
設定碼率,機關是bits/s,預設是200K。
ab 整數(編碼,音頻)
設定音頻碼率,機關是bits/s,預設是128K。
bt 整數(編碼,視訊)
設定視訊碼率容許偏差,機關是bits/s。在1-pass模式下,碼率容許偏差指定了碼率控制願意偏離目标平均碼率值的程度。這與最小/最大碼率無關。降低容許偏差太多會對品質産生不利影響。
flags 标記(解碼/編碼,音頻,視訊,字幕)
設定通用标記。
可能的值:
mv4 | 每個宏塊允許4個運動矢量 |
qpel | 使用1/4像素運動補償 |
loop | 使用環路濾波 |
qscale | 使用固定的qscale值 |
pass1 | 使用内部2pass碼控的1-pass模式 |
pass2 | 使用内部2pass碼控的2-pass模式 |
gray | 隻解碼/編碼灰階tux |
psnr | Set error[?] variables during encoding |
truncated | 輸入碼流可能會随機截斷 |
drop_changed | 不要輸出參數與流中第一個解碼幀不同的幀。 當幀被丢棄時傳回AVERROR_INPUT_CHANGED錯誤。 |
ildct | 使用交錯的DCT |
low_delay | 強制低延遲 |
global_header | 将全局頭資訊放置在額外資料中,而不是每個關鍵幀中 |
bitexact | 隻寫入與平台、編譯、時間無關的資料。 這確定了檔案和資料校驗和在平台之間是可重複的和比對的。 它的主要用途是回歸測試 |
aic | 采用H263進階幀内編碼 / mpeg4 ac 預測 |
ilme | 采用交錯的運動估計 |
cgop | 使用closed gop |
output_corrupt | 可能輸出損壞的幀 |
time_base 有理數
設定codec時基
它是表示幀時間戳的基本時間機關(以秒為機關)。對于固定fps的内容,
時間基準應該是1 / frame_rate。
g 整數(編碼,視訊)
設定GOP大小。預設是12。
ar 整數(解碼/編碼,音頻)
設定音頻采樣率,機關是Hz。
ac 整數(解碼/編碼,音頻)
設定音頻聲道數目。
cutoff 整數(編碼,音頻)
設定截止帶寬。(部分編碼器支援)
frame_size 整數(編碼,音頻)
設定音頻幀大小。
除了最後一個幀外,每個送出的幀每個通道都必須包含精确的frame_size個samples。當編解碼器設定了CODEC_CAP_VARIABLE_FRAME_SIZE時,可能為0,在這種情況下,幀大小不受限制。frame_size由一些解碼器設定,以訓示固定的幀大小。
frame_number 整數
設定幀數。
delay 整數
qcomp 浮點數(編碼,視訊)
設定視訊量化器compression值 (VBR)。它在碼率控制方程中用作常數。
Recommended range for default rc_eq: 0.0-1.0。
qblur float (encoding,video)
設定視訊量化器blur值 (VBR)。
qmin 整數(編碼,視訊)
設定最小qp值(VBR),範圍-1到69,預設值2。
qmax 整數(編碼,視訊)
設定最大qp值(VBR),範圍-1到1024,預設值31。
qdiff 整數(編碼,視訊)
設定量化值的最大內插補點(VBR)。
bf 整數(編碼,視訊)
設定B幀個數。範圍是-1到16。-1 表示根據編碼器自動選擇B幀個數;0 表示禁用B幀。
b_qfactor 浮點數(編碼,視訊)
在P幀和B幀之間設定qp因子。
codec_tag 整數
bug 标記(解碼,視訊)
解決編碼器中有時無法自動檢測到的錯誤。
值包括:
autodetect | |
xvid_ilace | Xvid interlacing bug(如果fourcc==XVIX則自動檢查) |
ump4 | 如果fourcc==UMP4則自動檢查 |
no_padding | padding bug(自動檢查) |
amv | |
qpel_chroma | |
std_qpel | 過時的标準qpel |
qpel_chroma2 | |
direct_blocksize | direct-qpel-blocksize bug |
edge | 邊緣填充bug |
hpel_chroma | |
dc_clip | |
ms | 微軟解碼器中各種bug的變通方法 |
trunc | trancated frames |
strict 整數(解碼/編碼,音頻,視訊)
指定嚴格遵守标準的程度。
值:
very | 嚴格遵守規範或參考軟體的更嚴格的舊版本。 |
strict | 嚴格遵守規範中的所有規定,無論後果如何。 |
normal | |
unofficial | 允許非官方的擴充。 |
experimental | 允許使用非标準化的實驗性東西,實驗性(未完成/正在進行的工作/未經過良好測試)解碼器和編碼器。注意:實驗性解碼器可能會帶來安全風險,不要使用它來解碼不可信的輸入。 |
b_qoffset 浮點數(編碼,視訊)
設定P幀和B幀之間的QP偏移量。
err_detect 标記(解碼,音頻,視訊)
設定錯誤檢測标記。
crccheck | 驗證嵌入的crc |
bitstream | 檢測比特流規格偏差 |
buffer | 檢測不正确的比特流長度 |
explode | 檢測到小錯誤時中止解碼 |
ignore_err | 忽略解碼錯誤,繼續解碼。 如果您想分析視訊的内容, 是以希望解碼任何内容,這是非常有用的。 如果出現錯誤,此選項将無法生成令人愉快的視訊 |
careful | 考慮那些違反規範并且還未被視為錯誤的 |
compliant | 将所有不符合規範的情況視為錯誤 |
aggressive | 将正常編碼器不應該做的事情視為錯誤 |
has_b_frames 整數
block_align 整數
rc_override_count 整數
maxrate 整數(編碼,音頻,視訊)
設定最大碼率容許偏差,機關是bits/s。需要bufsize也設定。
minrate 整數(編碼,音頻,視訊)
設定最小碼率容許偏差,機關是bits/s。在設定CBR編碼時最有用。除此之外,它沒什麼用處。
bufsize 整數(編碼,音頻,視訊)
設定碼率控制緩存大小,機關是bits。
i_qfactor 浮點數(編碼,視訊)
在P幀和I幀之間設定QP因子。
i_qoffset 浮點數(編碼,視訊)
設定P幀和I幀之間的QP偏移量。
dct 整數(編碼,視訊)
設定DCT算法
auto | 自動選擇 |
fastint | 快速整形 |
int | 精确整形 |
mmx | |
altivec | |
faan | 浮點AAN DCT |
lumi_mask 浮點數(編碼,視訊)
對明亮區域的壓縮力度大于中等區域。
tcplx_mask 浮點數(編碼,視訊)
設定時域複雜度mask。
scplx_mask 浮點數(編碼,視訊)
設定空域複雜度mask。
p_mask 浮點數(編碼,視訊)
設定内部mask。
dark_mask 浮點數(編碼,視訊)
對深色區域的壓縮力度大于中等區域。
idct 整數(解碼/編碼,視訊)
選擇IDCT算法
auto | |
int | |
simple | |
simplemmx | |
simpleauto | 在simple和simplemmx中自動選擇 |
arm | |
altivec | |
sh4 | |
simplearm | |
simplearmv5te | |
simplearmv6 | |
simpleneon | |
xvid | |
faani | 浮點AAN IDCT |
slice_count 整數
ec 标記(解碼,視訊)
設定錯誤隐藏政策。
guess_mvs | 疊代運動向量(MV) 搜尋(慢) |
deblock | 對損壞的宏塊使用更強的deblock濾波器 |
favor_inter | 更傾向于從上一幀而不是目前幀進行預測 |
bits_per_coded_sample 整數
aspect 有理數 (編碼,視訊)
設定sample寬高比
sar 有理數 (編碼,視訊)
設定sample寬高比,aspect的别名。
debug 标記(解碼/編碼,音頻,視訊,字幕)
列印特定的調試資訊。
pict | picture資訊 |
rc | 碼率控制資訊 |
bitstream | |
mb_type | 宏塊類型 |
qp | 每個塊的qp值 |
dct_coeff | |
green_metadata | 顯示即将到來的幀、GOP或給定一段時間的複雜性中繼資料 |
skip | |
startcode | |
er | 錯誤識别 |
mmco | |
bugs | |
buffers | 圖像緩存配置設定 |
thread_ops | 線程操作 |
nomc | 跳過運作補償 |
cmp 整數(編碼,視訊)
設定整像素運作估計比較函數
sad | 內插補點絕對值的和,預設值,計算速度最快。 |
sse | 誤差平方和 |
satd | Hadamard變換內插補點絕對值的和 |
dct | DCT變換內插補點絕對值的和 |
psnr | 量化誤差平方和(避免使用,品質低) |
bit | 編碼塊需要的bit數 |
rd | 最優率失真,速度慢 |
zero | |
vsad | 垂直內插補點絕對值的和 |
vsse | 垂直誤差平方和 |
nsse | 噪聲保持差的平方和 |
w53 | 5/3小波,僅用于雪地 |
w97 | 9/7小波,僅用于雪地 |
dctmax | |
chroma |
subcmp 整數(編碼,視訊)
設定子像素運作估計比較函數
同cmp的值。
mbcmp 整數(編碼,視訊)
設定宏塊比較函數。
同cmp的值。
ildctcmp 整數(編碼,視訊)
設定場dct比較函數。
同cmp的值。
dia_size 整數(編碼,視訊)
為運動估計設定菱形類型和大小
(1024, INT_MAX) | 全運動估計,最慢 |
(768, 1024] | umh 運作估計 |
(512, 768] | hex 運作估計 |
(256, 512] | l2s 菱形運作估計 |
[2,256] | var 菱形運作估計 |
(-1, 2) | small 菱形運作估計 |
-1 | funny 菱形運作估計 |
(INT_MIN, -1) | sab 菱形運作估計 |
last_pred 整數(編碼,視訊)
設定從前一幀來得運作矢量的數量。
precmp 整數(編碼,視訊)
設定預運動估計比較函數
同cmp的值。
pre_dia_size 整數(編碼,視訊)
設定運動估計預通過的菱形類型和大小。
subq 整數(編碼,視訊)
設定子像素運動估計品質。
me_range 整數(編碼,視訊)
設定運動向量範圍。
global_quality 整數(編碼,音頻,視訊)
slice_flags 整數
mbd 整數(編碼,視訊)
設定宏塊決策算法(高品質模式)。
simple | 使用mbcmp,預設值 |
bits | 使用最少的bits |
rd | 使用最佳率失真 |
rc_init_occupancy 整數(編碼,視訊)
設定解碼開始前加載到rc緩沖區的比特數。
flags2 标記(解碼/編碼,音頻,視訊,字幕)
值:
fast | 允許非規範相容的加速技巧 |
noout | 跳過比特流編碼 |
ignorecrop | 忽略來自sps的裁剪資訊 |
local_header | 在每個關鍵幀放置全局頭資訊,而不是在extradata中 |
chunks | 幀資料可能被分割成多個chunks |
showall | 顯示第一個關鍵幀之前的所有幀 |
export_mvs | 将運動向量導出到支援它的編解碼器幀的side-data (參見AV_FRAME_DATA_MOTION_VECTORS) |
skip_manual | 不要跳過samples,導出跳過資訊作為幀的side-data |
ass_ro_flush_noop | 重新整理時不要重置ASS ReadOrder字段 |
icc_profiles | Generate/parse embedded ICC profiles from/to colorimetry tags. |
export_side_data 标記(解碼/編碼,音頻,視訊,字幕)
mvs | 将運動向量導出到支援它的編解碼器幀的side-data (參見AV_FRAME_DATA_MOTION_VECTORS) |
prft | 将編碼器Producer Reference Time導出到 支援它的編解碼器包的side-data (參見AV_PKT_DATA_PRFT) |
venc_params | 将視訊編碼參數導出到支援它的編解碼器幀的side-data (參見AV_FRAME_DATA_VIDEO_ENC_PARAMS) 目前,支援H.264 and VP9 |
film_grain | 将電影grain導出到幀的side-data (參見AV_FRAME_DATA_FILM_GRAIN_PARAMS) 目前,支援AV1解碼器 |
threads 整數(解碼/編碼,視訊)
設定要使用的線程數
值0表示自動選擇線程數,預設是自動選擇。
dc 整數 (編碼,視訊)
設定intra_dc_precision
nssew 整數 (編碼,視訊)
設定nsse權重
skip_top 整數 (解碼,視訊)
設定頂部被跳過的宏塊行數
skip_bottom 整數 (解碼,視訊)
設定底部被跳過的宏塊行數
profile 整數 (編碼,音頻,視訊)
設定編碼器profile。預設值為unknown。編碼器特定的profile記錄在相關的編碼器文檔中。
level 整數 (編碼,音頻,視訊)
可能的值:‘unknown’
lowres 整數 (解碼,音頻,視訊)
解碼圖像的一部分
1 | 1 / 2 |
2 | 1 / 4 |
3 | 1 / 8 |
mblmin 整數 (編碼,視訊)
設定最小宏塊拉格朗日因子(VBR)
mblmax 整數 (編碼,視訊)
設定最大宏塊拉格朗日因子(VBR)
skip_loop_filter 整數 (解碼,視訊)
跳過環路濾波
skip_idct 整數 (解碼,視訊)
跳過IDCT
skip_frame 整數 (解碼,視訊)
根據選項值所選擇的幀類型進行解碼器丢棄處理
none | 不丢棄幀 |
default | 丢棄無用的幀,比如0大小的幀 |
noref | 丢棄所有非參考幀 |
bidir | 丢棄所有B幀 |
nokey | 丢棄除關鍵幀外的所有幀 |
nointra | 丢棄除I幀外的所有幀 |
all | 丢棄所有幀 |
預設值是default
bidir_refine 整數 (編碼,視訊)
細化雙向宏塊中使用的兩個運動向量
keyint_min 整數 (編碼,視訊)
設定關鍵幀之間的最小間隔
refs 整數 (編碼,視訊)
設定運動補償的參考值數目
trellis 整數 (編碼,音頻,視訊)
設定率失真優化量化
mv0_threshold 整數 (編碼,視訊)
compression_level 整數 (編碼,音頻,視訊)
bits_per_raw_sample 整數
channel_layout 整數(解碼/編碼,音頻)
request_channel_layout 整數(解碼,音頻)
rc_max_vbv_use 浮點數(編碼,視訊)
rc_min_vbv_use 浮點數(編碼,視訊)
ticks_per_frame 整數(解碼/編碼,音頻,視訊)
color_primaries 整數(解碼/編碼,視訊)
bt709 | BT.709 |
bt470m | BT.470 M |
bt470bg | BT.470 BG |
smpte170m | SMPTE 170 M |
smpte240m | SMPTE 240 M |
film | Film |
bt2020 | BT.2020 |
smpte428 | SMPTE ST 428-1 |
smpte428_1 | SMPTE ST 428-1 |
smpte431 | SMPTE 431-2 |
smpte432 | SMPTE 432-1 |
jedec-p22 | JEDEC P22 |
color_trc 整數(解碼/編碼,視訊)
bt709 | BT.709 |
gamma22 | BT.470 M |
gamma28 | BT.470 BG |
smpte170m | SMPTE 170 M |
smpte240m | SMPTE 240 M |
linear | Linear |
log100 | Log |
log316 | Log square root |
iec61966-2-4 | IEC 61966-2-4 |
bt1361e | BT.1361 |
iec61966-2-1 | IEC 61966-2-1 |
bt2020-10 | BT.2020 - 10 bit |
bt2020-12 | BT.2020 - 12 bit |
smpte2084 | SMPTE 2084 |
smpte428 | SMPTE 428-1 |
arib-std-b67 | ARIB STD-B67 |
log | Log |
log_sqrt | Log square root |
iec61966_2_4 | IEC 61966-2-4 |
bt1361 | BT.1361 |
iec61966_2_1 | IEC 61966-2-1 |
bt2020_10bit | BT.2020 - 10 bit |
bt2020_12bit | BT.2020 - 12 bit |
smpte428_1 | SMPTE 428-1 |
colorspace 整數(解碼/編碼,視訊)
rgb | RGB |
bt709 | BT.709 |
fcc | FCC |
bt470bg | BT.470 BG |
smpte170m | SMPTE 170 M |
smpte240m | SMPTE 240 M |
ycocg | YCOCG |
bt2020nc | BT.2020 NCL |
bt2020_ncl | BT.2020 NCL |
bt2020c | BT.2020 CL |
bt2020_cl | BT.2020 CL |
smpte2085 | SMPTE 2085 |
chroma-derived-nc | Chroma-derived NCL |
chroma-derived-c | Chroma-derived CL |
ictcp | ICtCp |
color_range 整數(解碼/編碼,視訊)
如果用作輸入參數,它會提示解碼器輸入的color_range
tv | |
mpeg | MPEG (219*2^(n-8)) |
pc | |
jpeg | JPEG (2^n-1) |
chroma_sample_location 整數(解碼/編碼,視訊)
left |
center |
topleft |
top |
bottomleft |
bottom |
log_level_offset 整數
設定日志級别偏移量
slices 整數(編碼,視訊)
片數,用于并行編碼。
thread_type 标記(解碼/編碼,視訊)
選擇要使用的多線程方法
使用' frame '會增加解碼延遲,每個線程增加一幀,是以不能提供未來幀的用戶端不應該使用它
值:
slice | 一次解碼一個幀的多個部分。 使用切片的多線程隻有在視訊用切片編碼時才有效 |
frame | 一次解碼多個幀 |
預設值是slice+frame
audio_service_type 整數(編碼,音頻)
設定音頻服務類型
ma | Main Audio Service |
ef | Effects |
vi | Visually Impaired |
hi | Hearing Impaired |
di | Dialogue |
co | Commentary |
em | Emergency |
vo | Voice Over |
ka | Karaoke |
request_sample_fmt sample_fmt (解碼,音頻)
設定音頻解碼器優先使用的sample格式,預設是none
pkt_timebase 有理數
sub_charenc 編碼(解碼,字幕)
設定輸入字幕字元編碼
field_order field_order (視訊)
設定/覆寫視訊的幀場順序
progressive | Progressive video |
tt | Interlaced video, top field coded and displayed first |
bb | Interlaced video, bottom field coded and displayed first |
tb | Interlaced video, top coded first, bottom displayed first |
bt | Interlaced video, bottom coded first, top displayed first |
skip_alpha bool (解碼,視訊)
設定為1以禁用alpha處理(透明度),預設值為0。
codec_whitelist list (input)
用逗号分割的解碼器清單白名單。預設都允許。
dump_separator string (input)
分隔符用于分隔列印在指令行上關于Stream參數的字段。例如,用換行和縮進分隔字段
ffprobe -dump_separator "
" -i ~/videos/matrixbench_mpeg2.mpg
max_pixels 整數(解碼/編碼,視訊)
每個圖像的最大像素數。此值可用于避免由于圖像過大而導緻的記憶體溢出故障
apply_cropping bool (解碼,視訊)
如果裁剪參數是左側和頂部參數所需對齊方式的倍數,則啟用裁剪。如果對齊不符合,裁剪将部分應用以保持對齊。預設值是1(已啟用)。
注意:所需的對齊取決于是否設定了AV_CODEC_FLAG_UNALIGNED和CPU。
AV_CODEC_FLAG_UNALIGNED不能從指令行更改。硬體解碼器也不會應用左/上裁剪。
舉例:
1、輸入mp4檔案,輸出ts檔案,視訊編碼器采用mpeg2video,關鍵幀間隔12幀,B幀個數為0,以場格式編碼,視訊碼率12Mbps;音頻編碼器采用mp2,音頻碼率128kbps。
./ffmpeg -i in.mp4 -c:v mpeg2video -g 12 -bf 0 -flags +ildct+ilme -top 1 -b:v 12000k -c:a mp2 -b:a 128k -f mpegts out.ts
其中-g、-bf、-flags三個參數屬于codec通用選項。
2、輸入mp4檔案,輸出flv檔案,視訊編碼器采用libx264,視訊碼率1Mbps;音頻編碼器采用mp3,輸出立體聲,采樣率44100Hz,采樣格式為有符号16位,音頻碼率32kbps。
./ffmpeg -i in.mp4 -c:v libx264 -b:v 1000k -pix_fmt yuv420p -c:a libmp3lame -ac 2 -ab 32k -ar 44100 -sample_fmt s16p -f flv out.flv
其中-ac、-ab、-ar三個參數屬于codec通用選項。