FFmpeg參數詳解
- 一、基本命令結構
- 1.1、查詢參數
- 1.1.1、version
- 1.1.2、buildconf
- 1.1.3、devices
- 1.1.4、formats
- 1.1.5、muxers
- 1.1.6、demuxers
- 1.1.7、codecs
- 1.1.8、decoders
- 1.1.9、encoders
- 1.1.10、bsfs
- 1.1.11、protocols
- 1.1.12、filters
- 1.1.13、pix_fmts
- 1.1.14、layouts
- 1.1.15、sample_fmts
- 1.1.16、colors
一、基本命令結構
ffmpeg [全局選項] [輸入文件選項] -i 輸入文件 [輸出文件選項] 輸出文件
1.1、查詢參數
命令參數 | 內容 |
---|---|
-version | 顯示版本 |
-buildconf | 顯示編譯配置 |
-devices | 顯示ffmpeg支持的輸入/輸出設備(如攝像頭、屏幕捕獲、音頻設備等) |
-formats | 顯示可用格式(muxers+demuxers) |
-muxers | 顯示可用復用器 |
-demuxers | 顯示可用解復用器 |
-codecs | 顯示可用編解碼器 (decoders+encoders) |
-decoders | 顯示可用解碼器 |
-encoders | 顯示可用編碼器 |
-bsfs | 顯示可用比特流filter |
-protocols | 顯示可用的協議 |
-filters | 顯示可用的過濾器 |
-pix_fmts | 顯示可用的像素格式 |
-layouts | 顯示標準聲道名稱 |
-sample_fmts | 顯示可用的音頻采樣格式 |
-colors | 顯示可用的顏色名稱 |
1.1.1、version
- 第一段為版本信息
- 第二段為FFmpeg在編譯時使用的具體配置選項。FFmpeg是一個功能強大的多媒體框架,可以處理視頻和音頻數據。這段配置信息表明了FFmpeg在編譯時啟用或禁用了哪些特性、庫和硬件加速等
- 第三段為函數庫的版本信息
1.1.2、buildconf
實際就是將上文的第二段參數更加詳細的描述。
1.1.3、devices
ffmpeg -devices
僅顯示 FFmpeg 支持的設備類型,不顯示具體設備名稱。要查看具體設備(如攝像頭、麥克風),需使用特定平臺的命令(如 avfoundation、dshow)。
# 查看macOs
ffmpeg -f avfoundation -list_devices true -i ""
1.1.4、formats
關鍵說明:
D.
,Demuxing(解封裝支持,即可以讀取該格式).E
,Muxing(封裝支持,即可以寫入該格式)DE
,同時支持輸入和輸出(如mp4,mov,avi)..d
,device,硬件設備
常見格式:
格式 | 說明 |
---|---|
mp4 | MP4 容器(H.264/AAC 常用) |
mov | QuickTime 格式 |
avi | AVI 容器 |
mkv | Matroska 容器(支持多音軌/字幕) |
flv | Flash 視頻 |
webm | WebM(VP9/Opus) |
mpegts | MPEG-TS(流媒體常用) |
gif | 動畫 GIF |
wav | 無損 PCM 音頻 |
mp3 | MP3 音頻 |
aac | ADTS AAC 音頻 |
h264 | 裸 H.264 視頻流 |
yuv4mpegpipe | YUV 原始幀(用于濾鏡處理) |
如何檢查某個格式是否支持?
ffmpeg -formats | grep "格式名"#輸出D mov,mp4,m4a,3gp,3g2,mj2 QuickTime / MOVE mp4 MP4 (MPEG-4 Part 14)
總結:
ffmpeg -formats
列出所有支持的容器格式?(不包含編解碼器)。- 要查看支持的編解碼器,使用
ffmpeg -codecs
。 - 要查看支持的硬件加速,使用
ffmpeg -hwaccels
。
1.1.5、muxers
只查看復用器:
1.1.6、demuxers
只查看解復用器:
1.1.7、codecs
查看支持的編解碼器:
字段解釋:
符號 | 含義 |
---|---|
D | 支持解碼 |
?E | ? 支持編碼 |
?V? | 視頻編解碼器 |
?A | ? 音頻編解碼器 |
?S | ? 字幕編解碼器 |
?I | 僅支持幀內編碼(如 JPEG) |
?L ? | 有損壓縮 |
?S? | 無損壓縮 |
常見視頻編解碼器:
編解碼器 | 類型 | 說明 |
---|---|---|
h264 | 有損 | H.264/AVC(默認用 libx264) |
hevc | 有損 | H.265/HEVC(默認用 libx265) |
mpeg4 | 有損 | MPEG-4 Part 2(如 DivX/Xvid) |
vp9 | 有損 | Google VP9 |
av1 | 有損 | AOMedia AV1 |
prores | 無損 | Apple ProRes |
ffv1 | 無損 | FFmpeg 無損視頻 |
常見音頻編解碼器:
編解碼器 | 類型 | 說明 |
---|---|---|
aac | 有損 | AAC(高級音頻編碼) |
mp3 | 有損 | MPEG Audio Layer III |
opus | 有損 | 低延遲 Opus |
flac | 無損 | FLAC |
alac | 無損 | Apple Lossless |
常見字幕編解碼器:
編解碼器 | 說明 |
---|---|
ass | SSA/ASS 字幕 |
srt | SubRip 字幕 |
webvtt | WebVTT 字幕 |
常用查詢示例:
檢查H.264支持:
ffmpeg -codecs | grep h264# 輸出DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 libopenh264) (encoders: libx264 libx264rgb libopenh264 h264_videotoolbox)
查找所有無損音頻編解碼器:
ffmpeg -codecs | grep "A..S"# 輸出DEVIL. asv1 ASUS V1DEVIL. asv2 ASUS V2D.V.L. lscr LEAD Screen CaptureDEAI.S alac ALAC (Apple Lossless Audio Codec) (decoders: alac alac_at) (encoders: alac alac_at)D.AI.S apac Marian's A-pac audioD.AI.S ape Monkey's AudioD.AI.S atrac3al ATRAC3 AL (Adaptive TRansform Acoustic Coding 3 Advanced Lossless)D.AI.S atrac3pal ATRAC3+ AL (Adaptive TRansform Acoustic Coding 3+ Advanced Lossless) (decoders: atrac3plusal)D.AILS bonk Bonk audioD.AI.S dst DST (Direct Stream Transfer)DEAILS dts DCA (DTS Coherent Acoustics) (decoders: dca) (encoders: dca)DEAI.S flac FLAC (Free Lossless Audio Codec)DEA..S mlp MLP (Meridian Lossless Packing)D.AI.S mp4als MPEG-4 Audio Lossless Coding (ALS) (decoders: als)D.AI.S osq OSQ (Original Sound Quality)DEAI.S pcm_bluray PCM signed 16|20|24-bit big-endian for Blu-ray mediaDEAI.S pcm_dvd PCM signed 20|24-bit big-endianD.AI.S pcm_f16le PCM 16.8 floating point little-endianD.AI.S pcm_f24le PCM 24.0 floating point little-endianDEAI.S pcm_f32be PCM 32-bit floating point big-endian
...
查看可用的硬件加速編解碼器:
ffmpeg -hwaccels# 輸出
Hardware acceleration methods:
videotoolbox
總結:
- 編碼器/解碼器
- 若顯示 D 和 E(如 DEA.L. aac),表示支持解碼和編碼。
- 若只有 D(如 D.V.L. cinepak),則僅支持解碼(無法用此格式編碼)。
- 實際使用編解碼器:在命令中通過
-c:v
(視頻)或-c:a
(音頻)指定,例如:
ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4
1.1.8、decoders
列出 FFmpeg 支持的所有解碼器?(即可以解碼的編解碼器)
字段解釋:
符號 | 含義 |
---|---|
V? | 視頻解碼器 |
?A? | 音頻解碼器 |
?S? | 字幕解碼器 |
?F? | 支持幀級多線程 |
?S? | 支持切片級多線程 |
?X? | 實驗性解碼器(可能不穩定) |
?B? | 支持 draw_horiz_band(舊式多線程) |
?D? | 支持直接渲染方法 1 |
常見視頻解碼器:
解碼器 | 說明 |
---|---|
h264 | H.264/AVC |
hevc | H.265/HEVC |
mpeg4 | MPEG-4 Part 2(DivX/Xvid) |
vp9 | Google VP9 |
av1 | AOMedia AV1 |
prores | Apple ProRes |
mjpeg | Motion JPEG |
常見音頻解碼器:
解碼器 | 說明 |
---|---|
aac | AAC(高級音頻編碼) |
mp3 | MP3 |
opus | Opus |
flac | FLAC |
ac3 | Dolby Digital (AC-3) |
常見字幕解碼器:
解碼器 | 說明 |
---|---|
ass | SSA/ASS 字幕 |
srt | SubRip 字幕 |
webvtt | WebVTT 字幕 |
常用查詢示例:
# 檢查H.264解碼器支持:
ffmpeg -decoders | grep h264# 查找所有音頻解碼器
ffmpeg -decoders | grep "A"# 查看實驗性解碼器
ffmpeg -decoders | grep "X"
1.1.9、encoders
列出 FFmpeg 支持的所有編碼器?(即可用于編碼的編解碼器)
字段解釋:
符號 | 含義 |
---|---|
V? | 視頻編碼器 |
?A? | 音頻編碼器 |
?S? | 字幕編碼器 |
?F? | 支持幀級多線程 |
?S? | 支持切片級多線程 |
?X? | 實驗性編碼器(可能不穩定) |
?B? | 支持 draw_horiz_band(舊式多線程) |
?D? | 支持直接渲染方法 1 |
常見視頻編碼器:
編碼器 | 類型 | 說明 |
---|---|---|
libx264 | 有損 | H.264/AVC(最常用) |
libx265 | 有損 | H.265/HEVC(高效壓縮) |
libvpx-vp9 | 有損 | Google VP9(WebM/流媒體) |
libaom-av1 | 有損 | AOMedia AV1(新一代開源編碼) |
mpeg4 | 有損 | MPEG-4 Part 2(兼容舊設備) |
prores | 無損 | Apple ProRes(專業視頻編輯) |
ffv1 | 無損 | FFmpeg 無損視頻(歸檔用) |
常見音頻編碼器:
編碼器 | 類型 | 說明 |
---|---|---|
aac | 有損 | AAC(主流音頻格式) |
libmp3lame | 有損 | MP3(兼容性廣) |
libopus | 有損 | Opus(低延遲,適合語音/流媒體) |
flac | 無損 | FLAC(無損壓縮) |
alac | 無損 | Apple Lossless |
常見字幕編碼器:
編碼器 | 說明 |
---|---|
srt | SubRip 字幕 |
ass | SSA/ASS 字幕(支持樣式) |
webvtt | WebVTT 字幕 |
常用查詢示例:
# 檢查 H.264 編碼器?:
ffmpeg -encoders | grep libx264# 查找所有無損音頻編碼器?:
ffmpeg -encoders | grep "A.*S"# 查看實驗性編碼器?:
ffmpeg -encoders | grep "X"
1.1.10、bsfs
列出 FFmpeg 支持的所有比特流過濾器(Bitstream Filters,簡稱 BSFs)?。這些過濾器用于在解碼后、編碼前修改編碼的比特流,而無需完全解碼和重新編碼。
常見比特流過濾器及用途:
過濾器名稱 | 用途 |
---|---|
aac_adtstoasc | 將 AAC 數據從 ADTS 轉換為 ASC 格式(用于 MP4 封裝) |
h264_mp4toannexb | 將 H.264 比特流從 MP4 格式轉換為 Annex B 格式(用于 TS 流或裸流) |
hevc_mp4toannexb | 將 HEVC 比特流從 MP4 格式轉換為 Annex B 格式 |
extract_extradata | 從比特流中提取 extradata(如 SPS/PPS) |
dump_extra | 打印 extradata 信息(調試用) |
vp9_superframe | 合并 VP9 超級幀 |
vp9_superframe_split | 拆分 VP9 超級幀 |
h264_metadata | 修改 H.264 流的元數據(如 level、profile) |
hevc_metadata | 修改 HEVC 流的元數據 |
mpeg4_unpack_bframes | 解包 MPEG-4 B 幀 |
noise | 向比特流添加噪聲(測試用) |
null | 不做任何修改(用于測試或占位) |
使用場景:
# MP4 轉 TS 流時處理 H.264 數據
ffmpeg -i input.mp4 -c:v copy -bsf:v h264_mp4toannexb -f mpegts output.ts# 提取 H.264 的 SPS/PPS 信息?:
ffmpeg -i input.mp4 -c:v copy -bsf:v dump_extra -f null -# 修改 H.264 的 profile/level?:
ffmpeg -i input.mp4 -c:v copy -bsf:v h264_metadata=profile=high output.mp4# 處理 AAC 音頻流?:
ffmpeg -i input.mp4 -c:a copy -bsf:a aac_adtstoasc output.aac
總結:
- 作用階段?:比特流過濾器在解碼后、編碼前處理數據,適用于
-c copy
(流復制)場景。 - ?組合使用?:可通過逗號分隔多個過濾器(如
-bsf:v h264_mp4toannexb,noise
)。 - ?查看參數?:使用
ffmpeg -h bsf=<過濾器名>
查看具體選項(如ffmpeg -h bsf=h264_metadata
)。
1.1.11、protocols
列出 FFmpeg 支持的所有輸入/輸出協議?(如 file, http, rtmp 等)。這些協議定義了 FFmpeg 如何訪問輸入源或輸出到目標位置。
常見輸入協議:
協議名 | 用途 |
---|---|
file | 本地文件(默認協議,可省略) |
http/https | HTTP/HTTPS 流(如 MP4/M3U8) |
hls HLS | 直播/點播流(.m3u8) |
rtmp/rtmps | RTMP 直播流(帶/不帶 SSL) |
tcp/udp | 網絡流(如 RTP/RTSP) |
pipe | 從標準輸入(stdin)讀取數據 |
concat | 拼接多個文件(如分段視頻) |
srtp | 安全 RTP 流(加密傳輸) |
常見輸出協議:
協議名 | 用途 |
---|---|
file | 輸出到本地文件 |
http/https | 輸出到 HTTP 服務器 |
rtmp/rtmps | 推流到 RTMP 服務器 |
pipe | 輸出到標準輸出(stdout) |
icecast | 輸出到 Icecast 音頻服務器 |
udp | 輸出為 UDP 數據包 |
使用場景:
# 從HTTP下載視頻
ffmpeg -i http://example.com/video.mp4 -c copy output.mp4# 推流到 RTMP 服務器
ffmpeg -i input.mp4 -c:v libx264 -f flv rtmp://server/live/stream_key# 拼接分段視頻?(使用 concat 協議)
ffmpeg -f concat -i file_list.txt -c copy output.mp4# 從 UDP 接收流?:
ffmpeg -i udp://@239.1.1.1:1234 -c copy output.ts# 輸出到 stdout 并管道處理?:
ffmpeg -i input.mp4 -f mp4 pipe:1 | other_command
總結:
- 隱式協議?:若未指定協議(如 ffmpeg -i input.mp4),默認使用 file 協議。
- ?協議參數?:部分協議支持附加參數(如 http 的 user_agent,rtmp 的 flashver)。
?- 動態協議?:某些協議(如 hls、concat)需要指定 -f 格式。
1.1.12、filters
列出 FFmpeg 支持的所有濾鏡(Filters)?,包括視頻濾鏡(vf)、音頻濾鏡(af)和通用濾鏡。這些濾鏡可以對音視頻流進行各種處理,如裁剪、縮放、降噪、混音等。
字段說明:
符號 | 含義 |
---|---|
?T? | 支持時間軸(Timeline)操作(如 enable=‘between(t,10,20)’) |
?S? | 支持多線程切片處理(Slice threading) |
?C? | 支持動態命令(Command)控制(如運行時修改參數) |
?A? | 音頻濾鏡(輸入/輸出均為音頻) |
?V? | 視頻濾鏡(輸入/輸出均為視頻) |
?N? | 動態輸入/輸出(如 amix 可接受多個輸入) |
?`**? | **` |
常用視頻濾鏡:
濾鏡名 | 用途 | 示例 |
---|---|---|
scale | 調整分辨率 | scale=1280:720 |
crop | 裁剪視頻 | crop=640:480💯50 |
`hflip/vflip 水平/垂直翻轉 | hflip | |
rotate | 旋轉視頻 | rotate=90*PI/180 |
overlay | 疊加視頻 | overlay=10:10 |
trim | 剪切片段 | trim=start=10:end=20 |
eq | 調整亮度/對比度 | eq=brightness=0.2 |
drawtext | 添加文字 | drawtext=text=‘Hello’:x=10:y=10 |
fps | 修改幀率 | fps=30 |
yadif | 去隔行掃描 | yadif=1 |
常用音頻濾鏡:
濾鏡名 | 用途 | 示例 |
---|---|---|
volume | 調整音量 | volume=2.0 |
afade | 淡入淡出 | afade=t=in:ss=0:d=5 |
atempo | 變速不變調 | atempo=1.5 |
aresample | 重采樣 | aresample=44100 |
pan | 聲道調整 | `pan=stereo |
highpass/lowpass | 高通/低通濾波 | highpass=f=200 |
復雜濾鏡:
FFmpeg 支持多個濾鏡組合,使用 -filter_complex 處理復雜任務:
# 示例:水平翻轉 + 縮放 + 疊加
ffmpeg -i input.mp4 -filter_complex "[0:v]hflip,scale=640:360[flipped];[0:v][flipped]overlay=10:10" output.mp4
常見使用場景:
# 調整視頻分辨率?(保持寬高比:scale=1280:-1(自動計算高度))
ffmpeg -i input.mp4 -vf "scale=1280:720" output.mp4# 裁剪視頻? 640:480 = 輸出寬高,100:50 = 起始坐標(左上角)
ffmpeg -i input.mp4 -vf "crop=640:480:100:50" output.mp4# 添加水印?
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=10:10" output.mp4# 提取音頻片段?
ffmpeg -i input.mp3 -af "atrim=start=10:end=20" output.mp3# 合并多個音頻流
ffmpeg -i audio1.mp3 -i audio2.mp3 -filter_complex "amix=inputs=2" output.mp3
注意事項:
- 濾鏡鏈順序?:濾鏡按從左到右順序執行(如 hflip,scale 先翻轉再縮放)。
- ?GPU 加速?:部分濾鏡支持 GPU(如 scale_npp),需檢查 FFmpeg 編譯選項。
- 性能優化?:
- 使用 -vf 代替 -filter_complex 處理簡單任務。
- 啟用多線程(如 -threads 4)。
1.1.13、pix_fmts
列出 FFmpeg 支持的所有像素格式(Pixel Formats)?。像素格式定義了視頻幀中像素的存儲方式(如 RGB、YUV、色彩深度、平面/打包排列等),對視頻處理和編解碼性能有重要影響。
字段說明:
符號 | 含義 |
---|---|
?I? | 支持作為輸入格式(解碼器可輸出此格式) |
?O? | 支持作為輸出格式(編碼器可接受此格式) |
?H? | 硬件加速格式(如 vaapi_vld) |
?P? | 調色板格式(如 GIF) |
?B? | 比特流格式(如字幕) |
?NAME? | 像素格式名稱(如 yuv420p) |
?NB_COMPONENTS | ? 顏色分量數(如 YUV=3,NV12=2) |
?BITS_PER_PIXEL | ? 每像素總比特數(如 12=8+2+2) |
YUV格式(主流視頻編碼):
格式 | 說明 | 用途 |
---|---|---|
yuv420p | 標準 YUV 4:2:0 平面格式 | H.264/HEVC 默認 |
yuvj420p | 帶 JPEG 色彩范圍的 | YUV 4:2:0 舊式 MJPEG |
yuv422p | YUV 4:2:2 平面格式 | 專業視頻 |
yuv444p | YUV 4:4:4 平面格式 | 高保真 |
nv12/nv21 | YUV 4:2:0 半平面(Y+UV交錯) | 硬件加速常用 |
RGB格式:
格式 | 說明 | 用途 |
---|---|---|
rgb24 | 8-bit RGB 打包格式 | |
rgba | RGB + Alpha 通道 | |
bgr0 | BGR 打包(Windows 常用) |
硬件加速格式:
格式 | 說明 |
---|---|
vaapi_vld | Intel/AMD VAAPI 硬件解碼 |
dxva2_vld | Windows DXVA2 硬件解碼 |
cuda | NVIDIA CUDA 加速 |
特殊格式:
格式 | 說明 |
---|---|
gray | 8-bit 灰度圖像 |
pal8 | 8-bit 調色板(如 GIF) |
使用場景:
# 查看當前視頻的像素格式?
ffmpeg -i input.mp4
# 在輸出中查找 Stream #0:0(und): Video: h264 (yuv420p)。# 強制指定像素格式
# 輸出為 yuv420p(兼容性最佳)
ffmpeg -i input.mp4 -pix_fmt yuv420p output.mp4# 轉換為灰度視頻
ffmpeg -i input.mp4 -pix_fmt gray output.mp4# 硬件解碼時指定格式?
# 使用 VAAPI 解碼并轉換為 yuv420p
ffmpeg -hwaccel vaapi -i input.mp4 -pix_fmt yuv420p output.mp4# 檢查編碼器支持的格式
ffmpeg -h encoder=libx264 | grep pix_fmts
1.1.14、layouts
列出 FFmpeg 支持的所有音頻通道布局(Audio Channel Layouts)?,這些布局定義了音頻通道的數量和排列方式(如立體聲、5.1環繞聲等)。
字段說明:
字段 | 含義 |
---|---|
?NAME ? | 布局名稱(如 stereo, 5.1) |
?DESCRIPTION? | 通道縮寫組合(見下表) |
通道縮寫對照:
縮寫 | 全稱 | 說明 |
---|---|---|
FL | Front Left | 左前 |
FR | Front Right | 右前 |
FC | Front Center | 中置 |
LFE | Low Frequency | 低頻(低音炮) |
BL | Back Left | 左后 |
BR | Back Right | 右后 |
SL | Side Left | 左側環繞 |
SR | Side Right | 右側環繞 |
DL | Downmix Left | 下混左 |
DR | Downmix Right | 下混右 |
常見布局及用途:
布局名稱 | 通道數 | 典型用途 |
---|---|---|
mono | 1 | 單聲道(播客、電話語音) |
stereo | 2 | 立體聲(音樂、普通視頻) |
5.1 | 6 | 5.1環繞聲(影院、游戲) |
5.1(side) | 6 | 5.1(側環繞替代后環繞) |
7.1 | 8 | 7.1環繞聲(高端影音) |
7.1(wide) | 8 | 7.1(增加前中置) |
使用場景:
# 查看音頻文件的通道布局?
ffmpeg -i input.mp3
# 在輸出中查找 Stream #0:0: Audio: mp3 (stereo)。# 強制指定輸出通道布局?
# 將輸入轉為單聲道
ffmpeg -i input.mp3 -ac 1 -layout mono output_mono.mp3# 將5.1音頻轉為立體聲(自動下混)
ffmpeg -i input_5.1.mkv -ac 2 output_stereo.mp3# 自定義通道映射?
# 提取5.1音頻中的左前(FL)和右前(FR)通道
ffmpeg -i input_5.1.mkv -filter_complex "channelsplit=channel_layout=5.1:channels=FL+FR" output_stereo.mp3# 檢查編碼器支持的布局?
ffmpeg -h encoder=aac | grep channel_layouts
# 輸出示例
Supported channel layouts: mono stereo 5.1
關鍵點:
- 自動轉換?:若未指定 -layout,FFmpeg 會根據 -ac(通道數)自動選擇布局(如 -ac 2 → stereo)。
- 兼容性?:stereo 和 mono 是所有設備支持的基準布局。
- ?無損處理?:使用 -acodec copy 時需保持輸入輸出布局一致,否則會失敗。
1.1.15、sample_fmts
列出 FFmpeg 支持的所有音頻采樣格式(Sample Formats)?。這些格式定義了音頻樣本的位深度?(如 8-bit、16-bit、32-bit)和數據類型?(如整數 signed/unsigned 或浮點數 float),直接影響音頻質量和處理精度。
字段說明:
符號 | 含義 |
---|---|
?I? | 支持作為輸入格式(解碼器可輸出此格式) |
?O? | 支持作為輸出格式(編碼器可接受此格式) |
?H? | 硬件加速格式(如某些設備的 s16) |
?NAME | ? 采樣格式名稱(如 s16, flt) |
?DESCRIPTION? | 格式的詳細說明(位深度和類型) |
常見采樣格式:
格式名 | 位深度 | 數據類型 | 典型用途 |
---|---|---|---|
u8 | 8-bit | 無符號整數 | 低質量音頻(電話、舊游戲) |
s16 | 16-bit | 有符號整數 | CD音質(標準 PCM WAV/MP3) |
s32 | 32-bit | 有符號整數 | 專業音頻處理 |
flt | 32-bit | 浮點數 | 高動態范圍(錄音/混音) |
dbl | 64-bit | 浮點數 | 超高精度計算(科學分析) |
使用場景:
# 查看音頻文件的采樣格式
ffmpeg -i input.wav
# 在輸出中查找 Stream #0:0: Audio: pcm_s16le (s16le)。# 強制指定輸出采樣格式?
# 轉換音頻為 32-bit 浮點格式(保留高精度)
ffmpeg -i input.mp3 -sample_fmt flt output.wav# 使用 16-bit 整數(兼容性最佳)
ffmpeg -i input.flac -sample_fmt s16 output.mp3# 硬件加速時的格式限制?
# 某些硬件編碼器僅支持 s16(需檢查編碼器支持)
ffmpeg -hwaccel cuda -i input.wav -c:a aac -sample_fmt s16 output.m4a# 檢查編碼器支持的格式?
ffmpeg -h encoder=pcm_s16le | grep sample_fmts
關鍵點:
- 位深度與質量?:
- s16(16-bit)是標準 CD 音質(動態范圍 ~96dB)。
- flt(32-bit float)適合多次音效處理(避免截斷噪聲)。
- 兼容性?:
- MP3/AAC 等有損編碼通常內部使用 s16。
- WAV/FLAC 支持高精度格式(如 s32 或 flt)。?
- 性能?:
- 整數格式(s16)比浮點(flt)處理更快。
- 硬件加速可能限制格式(如僅支持 s16)。
1.1.16、colors
列出 FFmpeg 支持的所有顏色名稱和顏色空間標識符。這些顏色名稱可以在 FFmpeg 濾鏡(如 drawtext、color)或參數(如背景色)中直接使用,而顏色空間標識符(如 bt709、smpte170m)用于定義視頻的 YUV/RGB 色彩標準。
預定義顏色名稱:
FFmpeg 支持 CSS 風格的顏色名稱(如 red、blue)和十六進制值(如 #FF0000)。示例:
$ ffmpeg -colors
Colors:
name RGB hex
---- -------
white FFFFFF
red FF0000
green 00FF00
blue 0000FF
yellow FFFF00
...(其他顏色)
顏色空間標識符:
列出 FFmpeg 支持的顏色標準(用于 -colorspace、-color_primaries 等參數):
Color spaces:
bt709 BT.709
smpte170m SMPTE-170M
bt2020 BT.2020
...(其他標準)
常見顏色名稱:
顏色名 | 十六進制值 | 示例用途 |
---|---|---|
black | #000000 | 背景填充 |
white | #FFFFFF | 文字顏色 |
red | #FF0000 | 警告標記 |
green | #00FF00 | 成功提示 |
blue | #0000FF | 超鏈接 |
yellow | #FFFF00 | 高亮文本 |
transparen 特殊值 | 透明背景 |
常見色彩空間標識符:
標識符 | 標準 | 用途 |
---|---|---|
bt709 | BT.709 (Rec.709) | 高清電視(sRGB 相似) |
smpte170m | SMPTE-170M | (BT.601) 標清電視(NTSC/PAL) |
bt2020 | BT.2020 | 超高清/HDR |
rgb | 線性 RGB | 計算機圖形 |
使用場景:
在濾鏡中使用顏色名稱?:
# 添加紅色文字
ffmpeg -i input.mp4 -vf "drawtext=text='Error':fontcolor=red:x=10:y=10" output.mp4# 創建綠色背景視頻
ffmpeg -f lavfi -i "color=c=green:size=640x480" -t 5 green_screen.mp4
指定顏色空間參數?:
# 轉換視頻色彩標準為 BT.709
ffmpeg -i input.mp4 -colorspace bt709 output.mp4# 強制使用 sRGB 色彩原色
ffmpeg -i input.mp4 -color_primaries bt709 output.mp4
透明背景處理(PNG/GIF):
# 生成帶透明背景的文字
ffmpeg -f lavfi -i "color=c=black@0.0:size=640x480" -vf "drawtext=text='FFmpeg':fontcolor=white" -frames:v 1 transparent.png
關鍵點:
- ?顏色名稱兼容性?:
- 支持所有 CSS 顏色名稱。
- 十六進制格式支持 3/6/8 位(如 #RGB、#RRGGBB、#RRGGBBAA)。
- ?顏色空間轉換?:
- 錯誤的空間轉換會導致色彩失真(如 BT.601→BT.709)。
- 使用 -vf “colorspace=…” 濾鏡可精確控制轉換。
- 透明度?:
- 格式需支持 Alpha 通道(如 PNG、MOV with PNG codec)。
- 使用 color=black@0.0 表示完全透明。