1. 程式人生 > >FFMPEG進階系列03-ffmpeg轉碼專題(上)

FFMPEG進階系列03-ffmpeg轉碼專題(上)

概述

關鍵的引數

該篇主要是探討轉碼相關的技術點,比如:

  • 視訊尺寸:指的就是視訊的解析度,常見的解析度有4096x2304,1920x1080,1280x720,720x576等。
  • 視訊編碼:視訊編碼方式就是指通過特定的壓縮技術,將某個視訊格式的檔案轉換成另一種視訊格式檔案的方式。視訊編碼格式常見到的有:MPEG-2 TS、Divx、Xvid、H.264、WMV-HD和VC-1。
  • 音訊編碼:音訊編碼方式指通過特定的壓縮技術對音訊資料進行處理的方法。
  • 幀率:幀率(即視訊更新率)是用於測量顯示幀數的量度。測量單位為“每秒顯示幀數”(Frame Per Second,FPS,幀率)或“赫茲”,單位用FPS用來描述視訊每秒播放多少幀,而單位用赫茲用來描述顯示器的畫面每秒更新多少次。 一般幀率越高,視訊畫面越流暢。
  • 位元率:指每秒傳送的位元(bit)數,即每秒傳輸的檔案大小。位元率規定使用“位元每秒”(bit/s 或 bps)為單位。位元率越高,每秒傳送的資料越大。
  • 取樣率:取樣率的單位是Hz,表示每秒取樣的次數。單位時間內取樣率越大,精度就越高,處理過的視訊檔案就越接近沒有處理過的視訊檔案。
  • 位元速率:位元速率就是資料傳輸時單位時間傳送的資料位數,一般我們用的單位是kbps即千位每秒。位元速率與體積成正比:位元速率越大,體積越大;位元速率越小,體積越小。由於檔案體積與取樣率是成正比的,所以幾乎所有的編碼格式都想用最低的位元速率達到最少的失真,“位元速率”就是失真度,位元速率越高越清晰,反之則畫面粗糙而且馬賽克多。
  • 視訊部分的位深度:用於指定影象中的每個畫素可以使用的顏色資訊數量,用“位即bit”為單位。
  • 音訊部分的位深度:單個聲道的取樣資料大小

視訊壓縮

一般來說,在做轉碼時音訊影響不大,重點在於視訊壓縮。 視訊壓縮引數主要分為以下:

  • -s 設定輸出解析度(例如 -s 480x320)
  • -r 設定幀率(例如 -r 25)
  • -b:v 設定位元速率(例如 -b:v 500k)
  • -c:v 或 -vcodec設定編碼器(例如 -c:v libx264)
  • 特殊引數-an,-vn,-sn分別排除所有的音訊,視訊,字幕流。
  • 編碼器高階引數設定(也最為複雜)

視訊解析度和壓縮大小參考

解析度 Bitrate 10分鐘的視訊
320p 320×240 180 kbit/s ~13 MB
360p 640×360 300 kbit/s ~22 MB
480p 864×480 500 kbit/s ~37 MB
576p 720x576 850 kbit/s ~63 MB
720p 960×720 1000 kbit/s ~75 MB

編碼器高階引數設定

編碼器高階引數設定,甚為複雜:

  • -vcodec libx264 強制指定視訊編碼模式
  • -profile:v high 使用H.264的High模式 比較消耗資源
  • -pre slow 使用慢速模式 耗時間 清晰度高。該引數還可選擇 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo
  • -b:v 360k / 720k / 1550k 視訊位元率 (該引數比較重要 如果是轉換Web用途 是否正確直接影響視訊播放流暢程度)
  • -maxrate 500k 最大位元率
  • -bufsize 1000k 位元率緩衝大小
  • -threads 0 處理器核心利用數量
  • -aspect 16:9 / 4:3 視訊比例
  • -pass N 1-3可選 ##ffmpeg x264編碼引數簡介 x264引數在FFMPEG中可以使用很多引數,同樣也可以使用x264本身的引數來控制,具體的引數列表如下所示:
引數 型別 說明
preset 字串 編碼器預設引數 。可選ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow and placebo。預設"medium"
tune 字串 調優編碼引數
profile 字串 編碼profile檔級設定。可選baseline主要用於低清視訊的製作,main主要用於移動裝置視訊的製作,high主要用於電腦播放和高清視訊的制。
level 字串 編碼level層級設定
wpredp 字串 P幀預測設定
x264opts 字串 設定x264專有引數
crf 浮點數 選擇質量恆定質量模式
crf_max 浮點數 選擇質量恆定質量模式最大值
qp 整數 恆定量化引數控制
psy 浮點數 只用psychovisual優化
rc-lookahead 整數 設定幀型別和幀率控制預讀幀數
weightb 布林 允許B幀加權預測,可以減少相鄰B幀質量低的影響,對質量和壓縮比都有提高,且對速度影響極少。預設為auto
weightp 整數 P幀加強預測。 選項none,simple,smart,預設-1
ssim 布林 計算和列印ssim統計資訊
intra-refresh 布林 用定時刷I幀以替代IDR幀,預設auto
bluray-compat 布林 藍光相容引數
b-bias 整數 B幀可能指數,正值傾向於增加B幀,負值傾向於減少B幀。如果B-Frams設定的較大,可以改成 -1。預設值:
mixed-refs 布林 每個 partition一個參考,而不是每個巨集塊一個參考。預設auto
8x8dct 布林 8×8矩陣變換,用在 high profile。 預設auto
aud 布林 帶AUD間隔符。預設auto
mbtree 布林 巨集塊樹頻率控制。預設auto
deblock 字串 環路濾波器引數
cplxblur 浮點數 減少波動QP引數。預設-1
partitions 字串 逗號分隔的 partition列表,可以包含的值有p8×8、p4x4、b8×8、8×8、i4×4、none、all
direct-pred 整數 運動向量預測模式
slice-max-size 整數 每個slice的最大位元組數。預設-1
nal-hrd 整數 HRD訊號資訊設定。選項none,vbr,cbr
motion-est 整數 運動估計方法。選項dia,hex,umh,esa,tesa。預設-1
forced-idr 布林 強行設定關鍵幀為IDR幀,預設false
coder 整數 編碼器型別。選項default,cavlc,cabac,vlc,ac。預設default
b_strategy 整數 I/P/B幀選擇策略 。預設-1
chromaoffset 整數 QP色度和亮度之間的差異引數
sc_threshold 整數 場景切換閾值引數
noise_reduction 整數 降噪處理引數
x264-params 字串 與x264opts操作相同

音訊壓縮

  • -acodec libfaac 強制指定音訊處理模式
  • -ac 2 聲道選擇
  • -ar 44100 音訊赫茲
  • -ab 128k 位元率 128k (或-b:a 128k)
  • 示例:-acodec libfaac -ac 2 -ar 44100 -ab 64k

更多資料,更多分享

音視訊技術交流群1 已滿 音視訊技術交流群2 已滿 音視訊技術交流群3 群號782508536

參考