天天看點

ffmpeg指令行codec選項

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通用選項。