首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

FFmpeg 常用命令大全:參數分類、封裝轉換、編解碼參數與轉碼原理圖解

     編輯:Java 綜合教學

命令幫助體系

  • ffmpeg -h:基礎幫助(六大參數組)
  • ffmpeg -h long:高級參數
  • ffmpeg -h full:全部參數
  • ffmpeg -version:詳細版本信息(含各庫版本)
  • ffmpeg -formats:支持的封裝格式列表(D=解復用、E=復用)

四大核心參數類別

類別核心參數示例說明
全局/公共-y, -v, -loglevel, -f, -i覆蓋輸出、日誌級別、強制格式、輸入文件
視頻-c:v, -b:v, -r, -s, -aspect, -vf編碼器、碼率、幀率、分辨率、濾鏡鏈
音頻-c:a, -b:a, -ar, -ac, -af編碼器、碼率、采樣率、聲道數、濾鏡
字幕-c:s, -scodec, -sn字幕編碼、禁用字幕

封裝轉換核心參數 (AVFormatContext)

  • -avioflags direct:無緩衝直接寫入(適合實時流)
  • -probesize 5000000:探測數據大小(解決無法識別格式)
  • -fflags +genpts+igndts:生成 PTS、忽略 DTS(修復時間戳異常)
  • -analyzeduration 1000000:分析時長(直播降低延遲可調小)
  • -format_whitelist "mp4,mov,hls":安全白名單

編解碼核心參數 (AVCodecContext)

  • -b:v 2000k / -b:a 128k:視頻/音頻碼率
  • -g 250:GOP 大小(關鍵幀間隔)
  • -keyint_min 25:最小 IDR 間隔
  • -profile:v high -level 4.1:H.264 Profile/Level
  • -preset fast -tune zerolatency:x264 速度/調優預設
  • -threads 4:編解碼線程數

轉碼原理流程圖

FFmpeg 轉碼流程

五步驟:讀取輸入 → 解復用 → 解碼 → 編碼 → 復用輸出

實戰示例:RMVB → MP4 轉碼

ffmpeg -i input.rmvb \
  -c:v mpeg4 -b:v 200k -r 15 \
  -an \
  output.mp4

參數解析:

  1. 封裝:rmvb → mp4
  2. 視頻編碼:rv40 → mpeg4
  3. 碼率:377k → 200k
  4. 幀率:23.98 → 15 fps
  5. -an:禁用音頻

流程:Demux(RMVB) → Decode(rv40/cook) → Encode(mpeg4) → Mux(MP4)

常用場景速查

# 無損切片
ffmpeg -ss 00:01:00 -t 00:00:30 -i input.mp4 -c copy output.mp4

# 視頻轉 GIF
ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1:flags=lanczos" output.gif

# 直播推流
ffmpeg -re -i input.mp4 -c copy -f flv rtmp://server/live/stream

# 多碼率自適應 (HLS)
ffmpeg -i input.mp4 -filter_complex "[v:0]split=3[v1][v2][v3]" \
  -map "[v1]" -b:v 1000k -map "[v2]" -b:v 2000k -map "[v3]" -b:v 4000k \
  -f hls -hls_time 10 -master_pl_name master.m3u8 out_%v.m3u8
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved