FFmpeg高频常用操作指令大全,涵盖95%日常使用场景

通用基础规则(必看)

  1. 所有命令基础格式:ffmpeg -i 输入文件 【参数】 输出文件-i输入标识,必须放在输入文件前;
  2. 快速查看文件信息(编码、分辨率、码率等):ffmpeg -i input.mp4(核心排错/查看参数用);
  3. 静默执行(屏蔽冗余日志):命令末尾加 -hide_banner -loglevel error
  4. 保留原编码(无损快速处理):加 -c:v copy -c:a copy(视频/音频流直接复制,不重新编码);
  5. 跨平台:Windows/Mac/Linux命令完全一致,仅文件路径写法不同(Windows用D:\video\input.mp4,Mac/Linux用/Users/xxx/input.mp4)。

一、视频核心操作(最常用)

1. 格式转换(无损/编码,支持所有格式)

  • 无损转换(仅改封装,秒级完成,无画质损失):支持MP4/MOV/MKV/AVI/FLV互转

    1
    ffmpeg -i input.mp4 -c:v copy -c:a copy output.mkv  # MP4转MKV,其他格式同理
  • 通用编码转换(适配所有播放器,如FLV转MP4):

    1
    ffmpeg -i input.flv output.mp4  # 自动适配编码,默认画质

2. 视频压缩(控制画质/体积,核心参数-crf/-b:v

FFmpeg压缩核心靠CRF(恒定画质),优先用这个,值越小画质越好(范围18-28,23为默认,18接近无损),体积与画质成反比;适合所有视频格式。

1
2
ffmpeg -i input.mp4 -crf 25 -c:a copy output.mp4  # 中等压缩,保留音频原编码
ffmpeg -i input.mp4 -crf 18 -c:a aac -b:a 128k output.mp4 # 高画质压缩,音频也压缩
  • 备选:固定码率压缩-b:v视频码率,-b:a音频码率),适合精准控制体积

    1
    ffmpeg -i input.mp4 -b:v 2000k -b:a 128k output.mp4  # 视频码率2000kbps,音频128kbps

3. 视频剪辑(精准裁剪,无损/编码)

关键参数-ss 开始时间(时分秒格式00:01:20或秒数80)、-to 结束时间(到某时间)/-t 持续时间(剪多久);

  • 无损剪辑(必须是关键帧位置,否则会自动调整,秒级完成):

    1
    2
    ffmpeg -ss 00:00:30 -i input.mp4 -to 00:01:50 -c:v copy -c:a copy output.mp4  # 30秒到1分50秒
    ffmpeg -ss 20 -i input.mp4 -t 60 -c:v copy -c:a copy output.mp4 # 从20秒开始,剪60秒
  • 通用剪辑(任意位置,重新编码,适配所有场景):把-ss放在-i后即可

    1
    ffmpeg -i input.mp4 -ss 00:00:30 -to 00:01:50 -c:a copy output.mp4

4. 旋转视频(补全之前的内容,极简版)

  • 无损旋转(改元数据,秒级):-metadata:s:v rotate=0(重置90°旋转为正常)

    1
    ffmpeg -i input.mp4 -metadata:s:v rotate=0 -c:v copy -c:a copy output.mp4
  • 编码旋转(画面真正旋转,适配所有播放器):-vf transpose=值

    1
    2
    ffmpeg -i input.mp4 -vf "transpose=1" -c:a copy output.mp4  # 顺时针90°(最常用)
    ffmpeg -i input.mp4 -vf "rotate=PI" -c:a copy output.mp4 # 旋转180°

5. 调整视频分辨率/缩放(适配手机/投屏/上传)

关键参数-vf scale=宽:高,宽高支持固定值按比例(用-1表示自动适配,必须为偶数);

1
2
3
ffmpeg -i input.mp4 -vf scale=1920:1080 -c:a copy output.mp4  # 固定1080P
ffmpeg -i input.mp4 -vf scale=1280:-1 -c:a copy output.mp4 # 宽1280,高自动按比例
ffmpeg -i input.mp4 -vf scale=-1:720 -c:a copy output.mp4 # 高720,宽自动按比例
  • 进阶:强制比例(如16:9),自动裁剪黑边

    1
    ffmpeg -i input.mp4 -vf "scale=1920:1080:force_original_aspect_ratio=crop" -c:a copy output.mp4

6. 提取视频中的纯画面(去掉音频,无损/编码)

1
2
ffmpeg -i input.mp4 -c:v copy -an output.mp4  # 无损去音频(-an=audio none)
ffmpeg -i input.mp4 -an output.mp4 # 编码去音频,适配老旧播放器

7. 视频合并(无损,仅支持同编码/同分辨率)

分两步,先创建文件列表txt,再执行合并命令,支持MP4/MKV/FLV等;

  • 步骤1:创建filelist.txt,内容如下(路径不能有中文/空格,或用引号包裹):

    1
    2
    3
    file 'input1.mp4'
    file 'input2.mp4'
    file 'input3.mp4'
  • 步骤2:执行无损合并命令:

    1
    ffmpeg -f concat -i filelist.txt -c:v copy -c:a copy output.mp4

8. 给视频添加封面/替换封面

1
ffmpeg -loop 1 -i cover.jpg -i input.mp4 -c:v libx264 -c:a copy -shortest output.mp4
  • 说明:-loop 1表示循环播放封面,-shortest表示封面时长与视频一致,cover.jpg建议与视频同分辨率。

二、音频核心操作(独立音频/视频提取音频)

1. 从视频中提取纯音频(无损/编码,支持MP3/AAC/WAV/FLAC)

  • 无损提取(提取视频原音频流,如MP4中的AAC):

    1
    ffmpeg -i input.mp4 -c:a copy -vn output.aac  # -vn=video none,去掉视频
  • 提取并转换为MP3(最常用,适配所有设备):

    1
    2
    ffmpeg -i input.mp4 -vn output.mp3  # 默认品质
    ffmpeg -i input.mp4 -vn -q:a 0 output.mp3 # 最高品质MP3(-q:a 0为最优)
  • 提取为无损WAV/FLAC

    1
    2
    ffmpeg -i input.mp4 -vn output.wav
    ffmpeg -i input.mp4 -vn output.flac

2. 音频格式转换(MP3/AAC/WAV/FLAC/OGG互转)

1
2
3
ffmpeg -i input.mp3 output.aac
ffmpeg -i input.wav -q:a 0 output.mp3 # WAV转最高品质MP3
ffmpeg -i input.aac output.flac # 有损转无损(仅封装,音质不提升)

3. 音频压缩/调整码率(减小体积)

MP3/AAC常用码率:128k(日常)、192k(高品质)、320k(无损级);

1
2
ffmpeg -i input.mp3 -b:a 128k output.mp3  # MP3压缩为128kbps
ffmpeg -i input.aac -b:a 96k output.aac # AAC压缩为96kbps

4. 音频剪辑/裁剪(与视频剪辑语法一致)

1
2
ffmpeg -ss 10 -i input.mp3 -to 50 -c:a copy output.mp3  # 无损剪辑10-50秒
ffmpeg -i input.mp3 -ss 00:01:00 -t 30 output.mp3 # 编码剪辑,任意位置

5. 给视频添加音频/替换视频音频

1
ffmpeg -i input.mp4 -i audio.mp3 -c:v copy -c:a aac -shortest output.mp4
  • 说明:-c:v copy保留视频原画质,-shortest让输出时长与较短的文件一致(避免音频/视频过长)。

6. 调整音频音量(放大/降低,解决视频音量小/大问题)

关键参数-filter:a "volume=倍数",倍数支持数字(2=放大2倍,0.5=降低一半)或分贝(如+10dB=放大10分贝);

1
2
3
ffmpeg -i input.mp4 -filter:a "volume=2" -c:v copy output.mp4  # 视频音量放大2倍,保留视频
ffmpeg -i input.mp3 -filter:a "volume=0.5" output.mp3 # 音频音量降低一半
ffmpeg -i input.mp4 -filter:a "volume=+10dB" -c:v copy output.mp4 # 放大10分贝

三、视频/音频批量操作(高效处理多个文件)

适合需要处理大量视频/音频的场景,Mac/Linux用Shell脚本Windows用批处理脚本(.bat),以下为极简版,直接保存为脚本文件执行即可。

1. Windows批量处理(.bat文件)

例:批量将文件夹下所有FLV转MP4,保存到output文件夹(先新建output文件夹);
新建flv2mp4.bat,内容如下,放在视频文件夹中,双击执行:

1
2
3
4
5
@echo off
for %%i in (*.flv) do (
ffmpeg -i "%%i" -c:v copy -c:a copy "output\%%~ni.mp4"
)
pause
  • 修改后缀可适配其他批量操作:如*.mp4*.mkv*.avi*.mp4,修改-i "%%i"后的参数可批量压缩/剪辑/缩放。

2. Mac/Linux批量处理(Shell脚本)

例:批量将文件夹下所有MP4压缩为CRF25,保存到output文件夹;
新建compress.sh,内容如下,执行chmod +x compress.sh && ./compress.sh

1
2
3
4
5
#!/bin/bash
mkdir -p output
for file in *.mp4; do
ffmpeg -i "$file" -crf 25 -c:a copy "output/${file%.mp4}_compressed.mp4" -hide_banner -loglevel error
done

四、进阶实用操作(解决实际问题)

1. 去除视频水印/模糊水印(简单处理)

关键参数-vf delogo=x:y:w:hx,y是水印左上角坐标,w,h是水印宽高(需自己调试);

1
ffmpeg -i input.mp4 -vf "delogo=100:50:200:80" -c:a copy output.mp4
  • 模糊水印:加blur参数,delogo=100:50:200:80:10(10为模糊度)。

2. 视频添加文字水印(固定位置/自定义样式)

1
2
3
4
# 基础:添加文字“我的视频”,位置(10,10),白色字体
ffmpeg -i input.mp4 -vf "drawtext=text='我的视频':x=10:y=10:fontcolor=white" -c:a copy output.mp4
# 进阶:指定字体/大小,位置右下角(x=iw-200,y=ih-50,iw=视频宽,ih=视频高)
ffmpeg -i input.mp4 -vf "drawtext=text='我的视频':x=iw-200:y=ih-50:fontcolor=white:fontsize=24:fontfile=/usr/share/fonts/msyh.ttc" -c:a copy output.mp4
  • 说明:Windows字体路径如C:\Windows\Fonts\msyh.ttc,Mac如/Library/Fonts/Microsoft YaHei.ttc

3. 视频转GIF动图(高清/压缩)

1
2
3
4
# 高清GIF:裁剪10秒,分辨率640*360
ffmpeg -ss 0 -i input.mp4 -t 10 -vf "scale=640:-1" -f gif output.gif
# 压缩GIF(更小体积,更流畅)
ffmpeg -ss 0 -i input.mp4 -t 10 -vf "scale=640:-1,fps=10" -f gif output.gif

4. 提取视频中的帧(保存为图片,截图/逐帧)

1
2
3
4
5
6
# 提取指定时间的单帧截图(00:01:00位置,保存为jpg)
ffmpeg -ss 00:01:00 -i input.mp4 -vframes 1 -q:v 2 output.jpg
# 逐帧提取(每秒1帧,保存为img_001.jpg、img_002.jpg...)
ffmpeg -i input.mp4 -vf "fps=1" -q:v 2 img_%03d.jpg
# 提取关键帧(无损,更少图片)
ffmpeg -i input.mp4 -vf "select=eq(pict_type\,I)" -vsync vfr -q:v 2 keyframe_%03d.jpg
  • 说明:-q:v 2是图片最高品质(1-31,值越小画质越好)。

五、关键参数速查(新手必备)

参数 含义 常用场景
-i 输入文件标识 所有命令基础
-c:v copy 无损复制视频流 格式转换、剪辑、去音频
-c:a copy 无损复制音频流 格式转换、剪辑、加音频
-an 去掉音频(audio none) 提取纯视频
-vn 去掉视频(video none) 提取纯音频
-ss 开始时间 剪辑、截图
-to 结束时间 剪辑
-t 持续时间 剪辑、转GIF
-vf 视频滤镜(旋转/缩放/裁剪) 旋转、分辨率、水印
-filter:a 音频滤镜(音量/混音) 调整音量
-crf 视频恒定画质压缩 视频压缩(优先用)
-b:v/-b:a 视频/音频固定码率 精准控制体积
-shortest 输出时长与最短输入一致 加封面、加音频

总结

  1. FFmpeg核心分无损操作(加-c:v copy -c:a copy,秒级、无损失)和编码操作(无上述参数,适配所有场景,耗时),优先用无损;
  2. 视频压缩/调整画质优先用-crf参数(18-28),分辨率调整用-vf scale=宽:-1按比例适配;
  3. 剪辑的关键是-ss位置:放-i前是无损(关键帧),放-i后是通用(任意位置);
  4. 批量操作Windows用.bat批处理,Mac/Linux用Shell脚本,仅需修改源/目标格式和处理参数;
  5. 所有命令均可通过加-hide_banner -loglevel error屏蔽冗余日志,让执行更简洁。

以上是FFmpeg95%的日常使用场景,覆盖视频/音频的所有基础和进阶操作,直接复制命令并替换输入/输出文件即可使用,复杂场景可组合多个参数(如旋转+裁剪+压缩)。