FFMPEG進階系列03-ffmpeg轉碼專題(上)
阿新 • • 發佈:2018-12-13
概述
關鍵的引數
該篇主要是探討轉碼相關的技術點,比如:
- 視訊尺寸:指的就是視訊的解析度,常見的解析度有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