Skip to content

FFmpeg命令大全

完整的FFmpeg使用指南,包含各種常用命令、參數說明和實際應用場景示例

什麼是 FFmpeg?

了解最強大的多媒體處理框架

跨平台

支持 Linux、macOS、Windows 等系統

開源免費

採用 LGPL 或 GPL 許可證,免費使用

功能強大

支持幾乎所有音視頻格式

靈活高效

命令行界面,便於自動化處理

如何使用 FFmpeg

新手快速入門指南

1
安裝 FFmpeg
2
打開終端
3
複製命令
4
貼上執行

基礎操作

格式轉換

basic

將視頻從一種格式轉換為另一種格式

ffmpeg -i input.avi output.mp4
-i指定輸入文件

輸出格式由文件擴展名決定,FFmpeg會自動選擇合適的編碼器。

提取音頻

basic

從視頻文件中提取音頻軌道

ffmpeg -i video.mp4 -vn -c:a libmp3lame audio.mp3
-vn禁用視頻流
-c:a設置音頻編碼器

此命令從視頻中提取音頻並保存為MP3格式,保留原始音頻質量。

視頻截圖

basic

從視頻中捕獲指定時間的畫面

ffmpeg -i video.mp4 -ss 00:01:30 -vframes 1 screenshot.jpg
-ss定位到指定時間
-vframes設置捕獲幀數

在視頻的1分30秒處截取一張圖片,適合製作視頻縮略圖。

獲取媒體信息

basic

查看視頻或音頻文件的詳細信息

ffmpeg -i input.mp4
-i指定輸入文件

不指定輸出文件時,FFmpeg會顯示文件的詳細信息,包括編碼、時長、分辨率等。

視頻轉GIF

basic

將視頻轉換為GIF動畫

ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1:flags=lanczos" output.gif
-vf視頻過濾器
fps設置幀率
scale調整大小

將視頻轉換為10fps、寬度320像素的GIF動畫,適合製作表情包或短動畫。

批量格式轉換

basic

將文件夾中所有視頻轉換為指定格式

for %i in (*.mov) do ffmpeg -i "%i" -c:v libx264 -crf 23 -c:a aac "%~ni.mp4"
for循環批量處理文件
-c:v設置視頻編碼器

在Windows批處理中循環轉換所有MOV文件為MP4格式,適用於從相機導入的視頻處理。

提取視頻幀序列

basic

將視頻逐幀提取為圖片序列

ffmpeg -i video.mp4 frame_%04d.jpg
%04d四位數字序列號

將視頻逐幀提取為JPEG圖片,文件名格式為frame_0001.jpg、frame_0002.jpg等。

視頻剪輯

basic

從長視頻中提取指定時間段

ffmpeg -i input.mp4 -ss 00:10:00 -to 00:15:30 -c copy clip.mp4
-ss開始時間
-to結束時間
-c copy直接複製不重新編碼

使用流複製快速提取10分鐘到15分30秒的視頻片段,保持原始質量。

視頻合併

basic

將多個視頻文件合併為一個

ffmpeg -f concat -i filelist.txt -c copy output.mp4
-f concat使用連接協議
-i filelist.txt輸入文件列表

通過文件列表將多個視頻合併為一個,filelist.txt包含要合併的文件路徑。

調整視頻播放速度

basic

加快或減慢視頻播放速度

ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" -an output.mp4
-vf setpts設置顯示時間戳
-an禁用音頻

將視頻播放速度加快一倍(setpts=0.5*PTS),減慢為一半使用setpts=2*PTS。

視頻處理

調整視頻大小

video

改變視頻的分辨率

ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
-vf scale視頻過濾器縮放

將視頻分辨率調整為1280x720像素,保持原始寬高比。

壓縮視頻

video

減小視頻文件大小

ffmpeg -i input.mp4 -c:v libx264 -crf 23 compressed.mp4
-c:v設置視頻編碼器
-crf恆定質量因子(0-51)

使用H.264編碼壓縮視頻,CRF值越小質量越高(18-28是常用範圍)。

添加水印

video

在視頻上疊加圖片或文字水印

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
-filter_complex複雜過濾器圖
overlay疊加位置(左上角)

在視頻的左上角(10,10)位置添加PNG水印圖片。

視頻裁剪

video

裁剪視頻的特定區域

ffmpeg -i input.mp4 -vf "crop=640:360:100:100" output.mp4
-vf crop視頻裁剪過濾器

從視頻的(100,100)位置開始,裁剪640x360像素的區域。

視頻旋轉

video

將視頻旋轉90度、180度或270度

ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
-vf transpose視頻旋轉過濾器

transpose參數:0=逆時針旋轉90度並垂直翻轉,1=順時針旋轉90度,2=逆時針旋轉90度,3=順時針旋轉90度並垂直翻轉。

視頻穩定處理

video

使用vid.stab插件穩定抖動視頻

ffmpeg -i shaky.mp4 -vf vidstabdetect=shakiness=5:accuracy=15:result="transform_vectors.trf" -f null -
-vf vidstabdetect視頻穩定檢測

第一步:分析視頻抖動並生成變換向量文件。

視頻穩定應用

video

應用視頻穩定效果

ffmpeg -i shaky.mp4 -vf vidstabtransform=smoothing=10:input="transform_vectors.trf" stable.mp4
-vf vidstabtransform視頻穩定變換

第二步:應用穩定效果,smoothing參數控制平滑程度。

視頻反交錯

video

去除視頻的交錯掃描線

ffmpeg -i input.mp4 -vf yadif output.mp4
-vf yadif反交錯過濾器

去除隔行掃描視頻的交錯線,使視頻更適合在逐行掃描設備上播放。

視頻去隔行

video

將隔行掃描視頻轉換為逐行掃描

ffmpeg -i interlaced.mp4 -vf bwdif=0:-1:0 deinterlaced.mp4
-vf bwdif去隔行過濾器

使用bwdif過濾器將隔行掃描視頻轉換為逐行掃描,提高觀看體驗。

視頻降噪

video

減少視頻中的噪點

ffmpeg -i noisy.mp4 -vf hqdn3d denoised.mp4
-vf hqdn3d高質量降噪過濾器

使用hqdn3d過濾器減少視頻中的噪點,提高畫面質量。

音頻處理

調整音頻音量

audio

增加或減少音頻音量

ffmpeg -i input.mp3 -af "volume=1.5" output.mp3
-af音頻過濾器
volume=1.5表示增加50%音量

此命令將音頻音量提高50%,可以設置為小於1的值來降低音量。

音頻格式轉換

audio

將音頻從一種格式轉換為另一種格式

ffmpeg -i input.wav -c:a libmp3lame -b:a 192k output.mp3
-c:a設置音頻編碼器
-b:a設置音頻比特率

將WAV格式音頻轉換為192kbps的MP3格式,適合網絡傳輸。

音頻剪輯

audio

從音頻中提取指定時間段

ffmpeg -i input.mp3 -ss 00:01:30 -to 00:03:45 -c copy clip.mp3
-ss開始時間
-to結束時間
-c copy直接複製不重新編碼

提取音頻從1分30秒到3分45秒的片段,不重新編碼,保持原始質量。

音頻淡入淡出

audio

為音頻添加淡入淡出效果

ffmpeg -i input.mp3 -af "afade=t=in:st=0:d=3,afade=t=out:st=10:d=3" output.mp3
-af afade音頻淡入淡出過濾器

為音頻添加3秒淡入效果(從0秒開始)和3秒淡出效果(從10秒開始)。

音頻降噪

audio

減少音頻中的背景噪音

ffmpeg -i input.wav -af "afftdn=nf=-20" output.wav
-af afftdnFFT降噪過濾器

使用FFT降噪算法減少音頻中的背景噪音,nf參數控制降噪強度。

音頻合併

audio

將多個音頻文件合併為一個

ffmpeg -i "concat:input1.mp3|input2.mp3" -c copy output.mp3
concat:連接多個輸入文件

將多個音頻文件按順序合併為一個文件,不重新編碼,保持原始質量。

改變音頻採樣率

audio

調整音頻的採樣率

ffmpeg -i input.wav -ar 44100 output.wav
-ar設置音頻採樣率

將音頻採樣率調整為44.1kHz,這是CD質量的採樣率。

音頻聲道處理

audio

轉換立體聲為單聲道或反之

ffmpeg -i input.wav -ac 1 output.wav
-ac設置音頻聲道數

將立體聲音頻轉換為單聲道,設置為2可將單聲道轉換為立體聲。

音頻均衡器

audio

調整音頻的頻率響應

ffmpeg -i input.wav -af "equalizer=f=1000:width_type=o:width=2:g=5" output.wav
-af equalizer音頻均衡器過濾器

在1000Hz頻率處增加5dB增益,調整音頻的頻率平衡。

音頻壓縮

audio

動態範圍壓縮

ffmpeg -i input.wav -af "acompressor=threshold=0.1:ratio=9:attack=200:release=1000" output.wav
-af acompressor音頻壓縮器

應用動態範圍壓縮,減少音頻的動態範圍,使安靜部分更響亮。

濾鏡效果

添加文字水印

filter

在視頻上添加文字水印

ffmpeg -i input.mp4 -vf "drawtext=text='Sample Text':x=10:y=10:fontsize=24:fontcolor=white" output.mp4
-vf drawtext文字繪製過濾器

在視頻的(10,10)位置添加白色文字水印,字體大小為24。

視頻模糊效果

filter

為視頻添加模糊效果

ffmpeg -i input.mp4 -vf "boxblur=5:1" output.mp4
-vf boxblur方框模糊過濾器

為視頻添加模糊效果,第一個參數控制模糊強度,第二個參數控制模糊算法質量。

視頻顏色調整

filter

調整視頻的亮度、對比度和飽和度

ffmpeg -i input.mp4 -vf "eq=brightness=0.1:contrast=1.2:saturation=1.5" output.mp4
-vf eq均衡器過濾器

調整視頻的亮度(+0.1)、對比度(1.2倍)和飽和度(1.5倍)。

視頻鏡像效果

filter

創建視頻的鏡像效果

ffmpeg -i input.mp4 -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" output.mp4
-vf split分割視頻流
vflip垂直翻轉

創建視頻的垂直鏡像效果,下半部分是上半部分的鏡像。

視頻老電影效果

filter

為視頻添加老電影效果

ffmpeg -i input.mp4 -vf "noise=alls=20:allf=t+u, curves=vintage" output.mp4
-vf noise添加噪點
curves調整顏色曲線

為視頻添加噪點和復古顏色曲線,模擬老電影效果。

視頻銳化

filter

增強視頻的細節和清晰度

ffmpeg -i input.mp4 -vf "unsharp=5:5:1.0" output.mp4
-vf unsharp銳化過濾器

使用unsharp mask算法銳化視頻,增強細節和清晰度。

視頻邊緣檢測

filter

檢測並突出顯示視頻中的邊緣

ffmpeg -i input.mp4 -vf "edgedetect=low=0.1:high=0.4" output.mp4
-vf edgedetect邊緣檢測過濾器

檢測視頻中的邊緣並突出顯示,適用於計算機視覺應用。

視頻色彩空間轉換

filter

轉換視頻的色彩空間

ffmpeg -i input.mp4 -vf "colorspace=bt709:iall=bt601-6-625:fast=1" output.mp4
-vf colorspace色彩空間轉換過濾器

將視頻從BT.601色彩空間轉換為BT.709色彩空間。

視頻灰度化

filter

將彩色視頻轉換為灰度視頻

ffmpeg -i input.mp4 -vf "hue=s=0" output.mp4
-vf hue色調飽和度過濾器

將彩色視頻轉換為灰度視頻,通過將飽和度設置為0實現。

視頻反色效果

filter

創建視頻的反色效果

ffmpeg -i input.mp4 -vf "negate" output.mp4
-vf negate反色過濾器

創建視頻的反色效果,將所有顏色值取反。

流媒體

RTMP流錄製

stream

錄製RTMP直播流並保存為本地文件

ffmpeg -i rtmp://server/live/stream -c copy -f flv recording.flv
-c copy直接複製不重新編碼
-f flv指定輸出格式為FLV

錄製RTMP直播流並保存為FLV格式,-c copy參數避免重新編碼,節省CPU資源。

HLS流生成

stream

將視頻文件轉換為HLS流格式

ffmpeg -i input.mp4 -c:v libx264 -c:a aac -f hls -hls_time 10 -hls_list_size 0 output.m3u8
-f hls指定輸出格式為HLS
-hls_time設置每個分片的時長

將MP4視頻轉換為HLS流,每個分片10秒,適合網頁視頻播放。

RTMP推流

stream

將本地視頻推送到RTMP服務器

ffmpeg -re -i input.mp4 -c copy -f flv rtmp://server/live/stream
-re以原始幀率讀取輸入
-f flv指定輸出格式為FLV

將本地視頻文件以直播流的形式推送到RTMP服務器,適合直播場景。

屏幕錄製

stream

錄製電腦屏幕並保存為視頻

ffmpeg -f gdigrab -i desktop output.mp4
-f gdigrab使用GDI抓取屏幕(Windows)

在Windows系統上錄製整個屏幕,Linux系統可使用x11grab。

攝像頭錄製

stream

錄製攝像頭視頻流

ffmpeg -f dshow -i video="Integrated Camera" output.mp4
-f dshow使用DirectShow輸入(Windows)

在Windows系統上錄製攝像頭視頻,需要指定正確的設備名稱。

音頻流錄製

stream

錄製音頻輸入設備

ffmpeg -f alsa -i default output.wav
-f alsa使用ALSA輸入(Linux)

在Linux系統上錄製默認音頻輸入設備,保存為WAV格式。

多分辨率HLS流

stream

生成適應不同帶寬的多分辨率HLS流

ffmpeg -i input.mp4 -map 0 -c:v libx264 -b:v:0 800k -s:v:0 640x360 -c:v:1 libx264 -b:v:1 1500k -s:v:1 854x480 -c:a aac -f hls -var_stream_map "v:0,a:0 v:1,a:0" -hls_segment_filename stream_%v/data%02d.ts -master_pl_name master.m3u8 stream_%v.m3u8
-map選擇流映射
-var_stream_map變量流映射

生成兩種分辨率(640x360和854x480)的HLS流,適應不同網絡條件。

DASH流生成

stream

將視頻文件轉換為DASH流格式

ffmpeg -i input.mp4 -c:v libx264 -c:a aac -f dash -window_size 5 -extra_window_size 5 -remove_at_exit 1 output.mpd
-f dash指定輸出格式為DASH
-window_size設置窗口大小

將MP4視頻轉換為DASH流,適合自適應比特率流媒體播放。

RTSP流錄製

stream

錄製RTSP視頻流

ffmpeg -i rtsp://server/stream -c copy output.mp4
-i輸入RTSP流地址

錄製RTSP視頻流並保存為MP4格式,適用於監控攝像頭等場景。

HTTP流推送

stream

將視頻推送到HTTP服務器

ffmpeg -i input.mp4 -c copy -f mp4 http://server/upload
-f mp4指定輸出格式為MP4

將視頻文件通過HTTP POST請求推送到服務器,適合文件上傳場景。

高級功能

畫中畫效果

advanced

創建畫中畫效果,將小視頻疊加到大視頻上

ffmpeg -i main.mp4 -i pip.mp4 -filter_complex "[1:v]scale=iw/4:ih/4 [pip]; [0:v][pip] overlay=W-w-10:10" output.mp4
-filter_complex複雜過濾器圖
overlay疊加過濾器

創建畫中畫效果,將小視頻縮放為1/4大小並放置在主視頻右上角。

硬件加速轉碼

advanced

使用GPU加速視頻轉碼過程

ffmpeg -hwaccel cuda -i input.mp4 -c:v h264_nvenc output.mp4
-hwaccel啟用硬件加速
-c:v h264_nvenc使用NVIDIA硬件編碼器

使用NVIDIA GPU加速H.264編碼,大幅提高轉碼速度。

多路流處理

advanced

同時處理多個視頻流

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v][1:v]hstack=inputs=2" output.mp4
-filter_complex hstack水平堆疊多個視頻流

將兩個視頻水平並排合併為一個視頻,vstack可垂直堆疊。

視頻時間碼疊加

advanced

在視頻上疊加時間碼信息

ffmpeg -i input.mp4 -vf "drawtext=fontfile=/path/to/font.ttf:text='%{pts\:hms}':x=10:y=10:fontsize=24:fontcolor=white" output.mp4
-vf drawtext文字繪製過濾器
%{pts\:hms}時間碼表達式

在視頻左上角疊加時間碼信息,顯示小時:分鐘:秒格式。

視頻元數據編輯

advanced

修改視頻的元數據信息

ffmpeg -i input.mp4 -metadata title="My Video" -metadata year="2023" output.mp4
-metadata設置元數據字段

修改視頻的元數據信息,如標題、年份、作者等。

視頻質量評估

advanced

使用PSNR評估視頻質量

ffmpeg -i compressed.mp4 -i original.mp4 -lavfi psnr -f null -
-lavfi psnr使用PSNR過濾器

比較壓縮視頻與原始視頻的質量,輸出PSNR值評估質量損失。

視頻碼率控制

advanced

使用CRF模式控制視頻碼率

ffmpeg -i input.mp4 -c:v libx264 -crf 23 -maxrate 2M -bufsize 4M output.mp4
-crf恆定質量因子
-maxrate最大碼率

使用CRF模式控制視頻質量,同時限制最大碼率防止文件過大。

視頻隔行掃描

advanced

將逐行掃描視頻轉換為隔行掃描

ffmpeg -i progressive.mp4 -vf "fieldorder=tff" interlaced.mp4
-vf fieldorder場序過濾器

將逐行掃描視頻轉換為頂場先行的隔行掃描視頻,適用於廣播電視。

視頻幀率轉換

advanced

改變視頻的幀率

ffmpeg -i input.mp4 -vf "fps=30" output.mp4
-vf fps幀率過濾器

將視頻幀率轉換為30fps,使用幀插值或丟幀方法適應新幀率。

視頻去塊效應

advanced

減少視頻壓縮產生的塊效應

ffmpeg -i blocky.mp4 -vf "deblock" debocked.mp4
-vf deblock去塊效應過濾器

減少因高壓縮率產生的塊效應,提高視頻視覺質量。

實用工具

批量添加水印

utility

為文件夾中的所有視頻添加相同水印

for %i in (*.mp4) do ffmpeg -i "%i" -i watermark.png -filter_complex "overlay=10:10" "watermarked_%~ni.mp4"
for循環批量處理文件

批量處理文件夾中的所有MP4文件,在左上角添加水印。

批量調整視頻分辨率

utility

將文件夾中所有視頻調整為統一分辨率

for %i in (*.mp4) do ffmpeg -i "%i" -vf scale=1280:720 "resized_%~ni.mp4"
for循環批量處理文件

批量調整所有MP4文件為1280x720分辨率,適合統一視頻規格。

批量提取視頻音頻

utility

從文件夾中所有視頻提取音頻

for %i in (*.mp4) do ffmpeg -i "%i" -vn -c:a libmp3lame "%~ni.mp3"
for循環批量處理文件

批量提取所有MP4文件的音頻並保存為MP3格式。

批量生成視頻縮略圖

utility

為文件夾中所有視頻生成縮略圖

for %i in (*.mp4) do ffmpeg -i "%i" -ss 00:00:05 -vframes 1 "%~ni_thumb.jpg"
for循環批量處理文件

為每個視頻在第5秒處生成一張縮略圖。

批量視頻壓縮

utility

壓縮文件夾中所有視頻以減少文件大小

for %i in (*.mp4) do ffmpeg -i "%i" -c:v libx264 -crf 23 -c:a aac -b:a 128k "compressed_%~ni.mp4"
for循環批量處理文件

批量壓縮所有MP4文件,使用CRF 23和128kbps音頻,平衡質量與文件大小。

視頻時長統計

utility

統計文件夾中所有視頻的總時長

for %i in (*.mp4) do ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "%i"
ffprobeFFmpeg的媒體分析工具

使用ffprobe統計每個視頻的時長,可用於計算總時長。

視頻信息導出

utility

將視頻信息導出為文本文件

ffprobe -v quiet -print_format json -show_format -show_streams input.mp4 > video_info.json
-print_format json以JSON格式輸出

將視頻的詳細格式和流信息導出為JSON文件,便於分析。

視頻幀信息分析

utility

分析視頻的幀類型和時間戳

ffprobe -show_frames input.mp4
-show_frames顯示幀信息

顯示視頻的每一幀信息,包括幀類型(I/P/B)、時間戳等。

視頻碼率分析

utility

分析視頻的碼率變化

ffmpeg -i input.mp4 -vf "showinfo" -f null -
-vf showinfo顯示流信息

分析視頻的碼率變化,顯示每一幀的詳細信息。

視頻格式驗證

utility

驗證視頻文件的完整性和兼容性

ffmpeg -v error -i input.mp4 -f null -
-v error只顯示錯誤信息

驗證視頻文件的完整性和兼容性,只輸出錯誤信息。

常用場景與應用示例

探索 FFmpeg 在實際場景中的強大應用

視頻格式批量轉換

將文件夾中的所有MOV文件轉換為MP4格式,保持原始質量

for %i in (*.mov) do ffmpeg -i "%i" -c:v libx264 -crf 18 -c:a aac "%~ni.mp4"

在Windows批處理中使用循環轉換所有MOV文件,適用於從相機導入的視頻處理。

生成視頻縮略圖集

從視頻中每隔一段時間提取一幀,創建縮略圖集合

ffmpeg -i video.mp4 -vf "fps=1/60,scale=320:-1" thumbnails/thumb%03d.jpg

每分鐘提取一幀,縮放寬度為320像素(高度按比例自動計算),保存為序列圖片。

視頻剪輯與合併

從長視頻中提取片段或合併多個視頻

ffmpeg -i input.mp4 -ss 00:10:00 -to 00:15:30 -c copy clip.mp4

使用流複製(不重新編碼)快速提取10分鐘到15分30秒的視頻片段,保持原始質量。

視頻旋轉

將視頻旋轉90度、180度或270度

ffmpeg -i input.mp4 -vf "transpose=1" output.mp4

transpose參數:0=逆時針旋轉90度並垂直翻轉,1=順時針旋轉90度,2=逆時針旋轉90度,3=順時針旋轉90度並垂直翻轉。

視頻壓縮優化

優化視頻壓縮參數以獲得最佳質量體積比

ffmpeg -i input.mp4 -c:v libx264 -preset slower -crf 18 -c:a aac -b:a 128k output.mp4

使用slower預設獲得更好的壓縮效率,CRF 18提供高質量,音頻比特率128kbps。

?
?

常見問題

關於 FFmpeg 使用的常見疑問

Q

如何使用 FFmpeg 快速轉換影片格式?

A

使用指令 ffmpeg -i input.mp4 output.avi。FFmpeg 會根據輸出檔案的副檔名自動判斷格式。此方式支援 MP4、AVI、MKV、MOV 等多種主流影片格式互轉,不需安裝第三方軟體。

Q

FFmpeg 如何壓縮影片大小並保留畫質?

A

建議使用 CRF (Constant Rate Factor) 模式:ffmpeg -i input.mp4 -crf 23 output.mp4。CRF 值範圍為 0–51:數值越大,壓縮率越高,檔案越小。一般設定在 18–28 之間,可在檔案大小與畫質之間取得良好平衡。

Q

如何從 MP4 影片中無損擷取音訊 (MP3/AAC)?

A

執行 ffmpeg -i video.mp4 -vn -acodec copy audio.aac。參數 -vn 用來停用影片串流,-acodec copy 則直接複製音訊軌道而不重新編碼,確保處理速度最快且音質零損失。

Q

如何使用 FFmpeg 合併多個影片檔而不降低畫質?

A

1. 先建立一個 filelist.txt,內容格式為 file 'part1.mp4'。 2. 執行 ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4。使用 -c copy 參數可達到秒級無損合併,避免重新編碼導致畫質下降。