天天看點

Ffmpeg 參數說明&示例

作者:星星與蒼狗

最新參數以官方文檔為準。本文檔中部份參數可能已過時

清單參數是通過網際網路收集整理,如參數在實際使用過程中存在問題,請移步:https://ffmpeg.org/ffmpeg.html 檢視官方文檔說明

基礎選項

參數名 描述
-L license
-h 幫助
-fromats 顯示可用的格式,編解碼的,協定的...
-f fmt 強迫采用格式fmt
-I filename 輸入檔案
-y 覆寫輸出檔案
-c [:stream_specifier] codec (*input/output,per-stream*)
-t duration 設定紀錄時間 hh:mm:ss[.xxx]格式的記錄時間也支援, 例如:指定操作的持續時間("-t 0.01"相當于取原視訊中的第10s~10.01秒), 一般用于截取視訊使用, 而不是用在截圖上.
-i 輸入您要處理的視訊檔案路徑,例如:ffmpmg -i pingcap-xxx.mp4
-fs 設定檔案大小上限
-ss position 搜尋到指定的時間 [-]hh:mm:ss[.xxx]的格式也支援, 是指視訊播放的時間進度
-title string 設定标題
-author string 設定作者
-copyright string 設定版權
-comment string 設定評論
-timestamp 時間戳
-album album名
-v 與log相關的
-target type 設定目标檔案類型(vcd,svcd,dvd) 所有的格式選項(比特率,編解碼以及緩沖區大小)自動設定, 隻需要輸入如下的就可以了:ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
-hq 激活高品質設定
-itsoffset offset 設定以秒為基準的時間偏移,該選項影響所有後面的輸入檔案。該偏移被加到輸入檔案的時戳,定義一個 正偏移意味着相應的流被延遲了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支援
-dframes 設定要記錄的幀數

視訊選項

正常參數

參數名 描述
-b bitrate 設定比特率,預設200kb/s
-bitexact 使用标準比特率
-r 幀速率(fps 設定幀頻 預設25,可以改,确認非标準桢率會導緻音畫不同步,是以隻能設定為15或者29.97)
-s size 設定幀大小 格式為WXH 預設160X128.下面的簡寫也可以直接使用:Sqcif 128X96 qcif 176X144 cif 252X288 4cif 704X576
-aspect aspect 設定橫縱比 4:3 16:9 或 1.3333 1.7777
-croptop 設定頂部切除尺寸(in pixels)
-cropbottom 設定底部切除尺寸(in pixels)
-cropleft size 設定左切除尺寸 (in pixels)
-cropright size 設定右切除尺寸 (in pixels)
-padtop 設定頂部補齊尺寸(in pixels) 像素機關
-padbottom size –padleft size –padright size –padcolor color 設定補齊條顔色(hex,6個16進制的數,紅:綠:蘭排列,比如 000000代表黑色)
-padleft size 左補齊(in pixels)
-padright size 右補齊(in pixels)
-padcolor color 補齊帶顔色(000000-FFFFFF)
-vn 不做視訊記錄(取消視訊)
-bt tolerance 設定視訊碼率容忍度kbit/s
-maxrate bitrate設定最大視訊碼率容忍度
-minrate bitreate 設定最小視訊碼率容忍度
-bufsize size 設定碼率控制緩沖區大小
-vcodec codec 強制使用codec編解碼方式。 如果用copy表示原始編解碼資料必須被拷貝。
-sameq 使用同樣視訊品質作為源(VBR)
-pass n 選擇處理遍數(1或者2)。兩遍編碼非常有用。第一遍生成統計資訊,第二遍生成精确的請求的碼率
-passlogfile file 選擇兩遍的紀錄檔案名為file
-vb 指定視訊比特率(bits/s)
-vframes number 設定轉換多少桢(frame)的視訊
-newvideo 在現在的視訊流後面加入新的視訊流

進階參數

參數名 描述
-g gop_size 設定圖像組大小
-intra 僅适用幀内編碼
-qscale q 使用固定的視訊量化标度(VBR)
-qmin q 最小視訊量化标度(VBR)
-qmax q 最大視訊量化标度(VBR)
-qdiff q 量化标度間最大偏差 (VBR)
-qblur blur 視訊量化标度柔化(VBR)
-qcomp compression 視訊量化标度壓縮(VBR)
-rc_init_cplx complexity 一遍編碼的初始複雜度
-b_qfactor factor 在p和b幀間的qp因子
-i_qfactor factor 在p和i幀間的qp因子
-b_qoffset offset 在p和b幀間的qp偏差
-i_qoffset offset 在p和i幀間的qp偏差
-rc_eq equation 設定碼率控制方程 預設tex^qComp
-rc_override override 特定間隔下的速率控制重載
-me method 設定運動估計的方法 可用方法有 zero phods log x1 epzs(預設) full
-dct_algo algo 設定dct的算法 可用的有 0 FF_DCT_AUTO 預設的DCT 1 FF_DCT_FASTINT 2 FF_DCT_INT 3 FF_DCT_MMX 4 FF_DCT_MLIB 5 FF_DCT_ALTIVEC
-idct_algo algo 設定idct算法。可用的有 0 FF_IDCT_AUTO 預設的IDCT 1 FF_IDCT_INT 2 FF_IDCT_SIMPLE 3 FF_IDCT_SIMPLEMMX 4 FF_IDCT_LIBMPEG2MMX 5 FF_IDCT_PS2 6 FF_IDCT_MLIB 7 FF_IDCT_ARM 8 FF_IDCT_ALTIVEC 9 FF_IDCT_SH4 10 FF_IDCT_SIMPLEARM
-er n 設定錯誤殘留為n 1 FF_ER_CAREFULL 預設 2 FF_ER_COMPLIANT 3 FF_ER_AGGRESSIVE 4 FF_ER_VERY_AGGRESSIVE
-ec bit_mask 設定錯誤掩蔽為bit_mask,該值為如下值的位掩碼 1 FF_EC_GUESS_MVS (default=enabled) 2 FF_EC_DEBLOCK (default=enabled)
-bf frames 使用frames B 幀,支援mpeg1,mpeg2,mpeg4
-mbd mode 宏塊決策 0 FF_MB_DECISION_SIMPLE 使用mb_cmp 1 FF_MB_DECISION_BITS 2 FF_MB_DECISION_RD
-4mv 使用4個運動矢量 僅用于mpeg4
-part 使用資料劃分 僅用于mpeg4
-bug param 繞過沒有被自動監測到編碼器的問題
-strict strictness 跟标準的嚴格性
-aic 使能進階幀内編碼 h263+
-umv 使能無限運動矢量 h263+
-deinterlace 不采用交織方法
-interlace 強迫交織法編碼僅對mpeg2和mpeg4有效。當你的輸入是交織的并且你想要保持交織以最小圖像損失的時候采用該選項。 可選的方法是不交織,但是損失更大
-pix_fmt format set pixel format, 'list' as argument shows all the pixel formats supported
-psnr 計算壓縮幀的psnr
-vstats 輸出視訊編碼統計到vstats_hhmmss.log
-vhook module 插入視訊處理子產品 module 包括了子產品名和參數,用空格分開
-intra 僅适用幀内編碼
-qscale q 以<數值>品質為基礎的VBR,取值0.01-255,約小品質越好
-loop_input 設定輸入流的循環數(目前隻對圖像有效)
-loop_output 設定輸出視訊的循環數,比如輸出gif時設為0表示無限循環
-g int 設定圖像組大小
-cutoff int 設定截止頻率
-qmin int 設定最小品質,與-qmax(設定最大品質)共用,比如-qmin 10 -qmax 31
-qmax int 設定最大品質
-qdiff int 量化标度間最大偏差 (VBR)
-bf int 使用frames B 幀,支援mpeg1,mpeg2,mpeg4

音頻選項

參數名 描述
-ab 設定比特率(機關:bit/s,也許老版是kb/s)前面-ac設為立體聲時要以一半比特率來設定,比如192kbps的就設成96, 轉換 預設比特率都較小,要聽到較高品質聲音的話建議設到160kbps(80)以上。
-ar 設定音頻采樣率 (機關:Hz),PSP隻認24000
-ac 設定聲道數,1就是單聲道,2就是立體聲,轉換單聲道的TVrip可以用1(節省一半容量),高品質的DVDrip就可以用2, 預設為1
-an 取消音頻
-acodec 指定音頻編碼('copy' to copy stream)
-aframes 設定轉換多少桢(frame)的音頻
-aq 設定音頻品質 (指定編碼)
-vol volume 設定錄制音量大小(預設為256) <百分比> ,某些DVDrip的AC3軌音量極小,轉換時可以用這個提高音量,比如200就是原來的2倍
-newaudio 在現在的音頻流後面加入新的音頻流

字幕選項

參數名 描述
-sn 取消字幕
-scodec codec 設定字幕編碼('copy' to copy stream)
-newsubtitle 在目前字幕後新增
-slang code 設定字幕所用的ISO 639編碼(3個字母)

音頻/視訊捕獲選項

正常參數

參數名 描述
-vd device 設定視訊捕獲裝置。比如/dev/video0
-vc channel 設定視訊捕獲通道 DV1394專用
-tvstd standard 設定電視标準 NTSC PAL(SECAM)
-dv1394 設定DV1394捕獲
-av device 設定音頻裝置 比如/dev/dsp

進階參數

參數名稱 描述
-map file:stream 設定輸入流映射
-debug 列印特定調試資訊
-benchmark 為基準測試加入時間
-hex 傾倒每一個輸入包
-bitexact 僅使用位精确算法 用于編解碼測試
-ps size 設定包大小,以bits為機關
-re 以本地幀頻讀資料,主要用于模拟捕獲裝置
-loop 循環輸入流(隻工作于圖像流,用于ffserver測試)

示例1

# 示例1 
 ffmpeg.exe 10 -i possible.mkv test.jpg
 # 示例2
 ffmpeg.exe -ss 10 -i possible.mkv -y -f image2 -t 0.01 0.jpg
 # 示例3
 ffmpeg.exe -ss 00:00:10 -i possible.mkv -y -f image2 -frames:v 1 test.jpg           

-i: 選擇輸入檔案, 如"-i possible.mkv"是指定ffmpeg.exe輸入的媒體檔案為possible.mkv -ss: 選擇開始時間, 如"-ss 10"是将視訊指向10秒, 也就是從10秒開始 -y: 強制覆寫檔案(防止因為重名出錯) -f: 指定輸出的檔案格式, 如"-f image2" -t: 指定操作的持續時間("-t 0.01"相當于取原視訊中的第10s~10.01秒), 一般用于截取視訊使用, 而不是用在截圖上.

"-frames:v 1" for a single image 用于替換-t選項, 上面的-t選項在截圖中使用是不合理的. 該操作可以指定1張圖檔 test.jpg // 為輸出檔案

示例2

ffmpeg -i ${input_video} -vcodec copy -an -f flv rtmp://${server}/live/${streamName}           
  • -vcodec : 指定視訊解碼器, v 是指視訊(video), code 指解碼器,後面跟解碼器名稱, copy 表示不作解碼;
  • -acodec: 指音頻解碼器, a 是指音頻(audio), 後面跟解碼器名稱,an 代表 audio none , node 代表去掉音頻。