FFmpeg
下载安装
1. 下载 FFmpeg 安装包
1.打开 Dpwnload FFmpeg 官网,选择安装包Windows builds from gyan.dev
2.下滑找到release bulids
部分,选择ffmpeg-git-full.7z
或者直接访问ffmpeg-git-full
3.下载完成后,解压缩得到 FFmpeg 文件夹。
2. 配置环境变量
为了方便在命令行中直接调用 FFmpeg,需要将其添加到系统的环境变量中。
解压完毕后,找到解压目录下的 bin 文件夹,复制其完整路径。接着,右键点击 “此电脑”,选择 “属性”,在弹出窗口左侧点击 “高级系统设置”,进入 “系统属性” 窗口后点击下方的 “环境变量” 按钮。在 “系统变量” 区域找到名为 “Path” 的变量,点击 “编辑”,于弹出的编辑窗口点击 “新建”,把之前复制的 bin 文件夹路径粘贴进去,一路点击 “确定” 保存设置。
注意:确保路径准确,以便系统能正确找到 FFmpeg 文件。
3. 测试安装是否成功
1.按 Win + R
键,输入 cmd
打开命令行窗口。
2.在命令行中输入以下命令查看 FFmpeg 版本:ffmpeg -version
3.如果正确显示 FFmpeg 版本号和相关信息,说明安装成功。
FFmpeg 常用参数汇总
命令行结构
一个完整的 FFmpeg 命令行大致分为以下几个部分:
` ffmpeg [全局选项] -i <输入文件/流> [针对输入的过滤与参数] [输出选项] <输出文件/流>`
ffmpeg
:可执行程序,直接调用。[全局选项]
:影响整个 FFmpeg 进程的参数,如日志级别(-loglevel
)、线程数(-threads
)等。-i <输入>
:指定输入文件、URL 或设备。 如果需要多个输入,可多次使用-i
。[针对输入的过滤与参数]
:可以对输入进行一些局部参数调整,比如输入裁剪、开始偏移、抓取帧率等。[输出选项]
:包括输出文件格式、编解码器、码率、分辨率、帧率等设置。<输出>
:输出到本地文件、管道、网络推流地址等。
1. 输入输出基础控制
用于指定输入源、输出规则及格式,是所有 FFmpeg 命令的基础。
参数 | 功能说明 | 示例命令 |
---|---|---|
-i <input> | 指定输入文件(支持单个/多个输入,如视频、音频、图片序列) | ffmpeg -i input.mp4 -i bgm.mp3 output.mkv (双输入:视频+背景音乐) |
-f <format> | 强制指定输入/输出格式(解决无扩展名或格式识别错误问题) | ffmpeg -f rawvideo -i input.yuv -f mp4 output.mp4 (强制输入为 raw 视频) |
-y | 强制覆盖输出文件(无需手动确认,适合批量处理) | ffmpeg -i input.mp4 -y output_compressed.mp4 |
-t <time> | 指定输出文件时长(支持秒数或 hh:mm:ss 格式,如 01:23:45 ) | ffmpeg -i input.mp4 -t 120 output_2min.mp4 (截取前 2 分钟) |
-ss <time> | 指定音视频处理的起始时间点(结合 -t 可实现精准截取) | ffmpeg -i input.mp4 -ss 00:01:30 -t 60 output_1.5min_start.mp4 (从1分30秒开始截取1分钟) |
2. 编解码器与比特率设置
控制音视频的编码格式及质量/体积平衡,-b:v
/-b:a
是核心比特率参数。
参数 | 功能说明 | 示例命令 |
---|---|---|
-c:v <codec> | 指定视频编码器(copy 表示直接复制流,不重新编码,速度最快) | ffmpeg -i input.mkv -c:v libx264 output.mp4 (用 H.264 编码视频) |
-c:a <codec> | 指定音频编码器(copy 同理,避免重复编码损耗) | ffmpeg -i input.mp4 -c:a aac output.m4a (用 AAC 编码音频) |
-b:v <bitrate> | 设置视频目标比特率(单位:k =kbps,m =Mbps,平衡质量与体积) | ffmpeg -i input.mp4 -c:v libx264 -b:v 2500k output.mp4 (视频2500kbps) |
-b:a <bitrate> | 设置音频目标比特率(常见范围:MP3 128-320k,AAC 96-192k) | ffmpeg -i input.wav -c:a libmp3lame -b:a 192k output.mp3 (音频192kbps) |
-crf <value> | 恒定速率因子(仅适用于 x264/x265 编码器,0-51,值越小质量越高,默认23) | ffmpeg -i input.mp4 -c:v libx265 -crf 28 output_4k.mp4 (4K视频低码率高质量) |
-q:a <value> | 音频质量参数(适用于 MP3/OGG 等,0-9,值越小质量越高,推荐2-5) | ffmpeg -i input.flac -c:a libmp3lame -q:a 2 output_highq.mp3 (高质量MP3) |
3. 视频尺寸与帧率调整
控制输出视频的分辨率、帧率等画面基础属性。
参数 | 功能说明 | 示例命令 |
---|---|---|
-s <width>x<height> | 直接指定视频分辨率(如 1280x720 =720p,1920x1080 =1080p) | ffmpeg -i input.mp4 -s 1280x720 output_720p.mp4 (转为720p) |
-vf <filter> | 视频滤镜(功能强大,支持缩放、裁剪、旋转、水印等,替代 -s 更灵活) | ffmpeg -i input.mp4 -vf "scale=1920:1080,crop=1600:900:160:90" output_cropped.mp4 (先缩放至1080p,再裁剪画面) |
-r <fps> | 指定输出视频帧率(常见值:24fps 电影、30fps 短视频、60fps 高流畅度视频) | ffmpeg -i input_60fps.mp4 -r 30 output_30fps.mp4 (60fps 降为 30fps) |
4. 音频精细控制
调整音频的采样率、声道数、音量等属性。
参数 | 功能说明 | 示例命令 |
---|---|---|
-ar <rate> | 指定音频采样率(常见值:44100Hz 标准音频、48000Hz 专业音频) | ffmpeg -i input.mp3 -ar 44100 output_std.wav (转为标准采样率) |
-ac <num> | 指定音频声道数(1=单声道,2=立体声,6=5.1声道) | ffmpeg -i input_stereo.mp4 -ac 1 output_mono.mp3 (立体声转单声道) |
-vol <value> | 调整音频音量(百分比,如 200 =音量加倍,50 =音量减半,默认 100 ) | ffmpeg -i input_quiet.mp4 -vol 180 output_louder.mp4 (音量提升80%) |
5. 音视频流分离/合并
单独提取音频/视频,或禁用某一流(如静音视频、无画面音频)。
参数 | 功能说明 | 示例命令 |
---|---|---|
-vn | 禁用视频流(仅保留音频,用于提取音频) | ffmpeg -i input.mp4 -vn -c:a aac -b:a 128k output_audio.m4a (提取音频并设128kbps) |
-an | 禁用音频流(仅保留视频,用于提取静音视频) | ffmpeg -i input.mp4 -an -c:v copy -b:v 3000k output_video_only.mp4 (提取视频并设3000kbps) |
6. 其他实用参数
提升命令执行效率或输出可读性的辅助参数。
参数 | 功能说明 | 示例命令 |
---|---|---|
-hide_banner | 隐藏 FFmpeg 启动时的版本信息、版权声明(使输出日志更简洁) | ffmpeg -hide_banner -i input.mp4 output.mp4 |
-stats | 显示编码过程中的实时统计(如进度、比特率、剩余时间,默认关闭) | ffmpeg -i input.mp4 -stats output.mp4 |
-threads <num> | 指定编码使用的线程数(通常设为 CPU 核心数,提升编码速度) | ffmpeg -i input.mp4 -c:v libx264 -threads 8 output_fast.mp4 (8线程编码) |
常用组合命令示例
视频压缩(平衡质量与体积)
ffmpeg -i input_4k.mp4 -hide_banner -c:v libx264 -b:v 5000k -c:a aac -b:a 192k -s 1920x1080 -r 30 output_1080p.mp4
(4K 转 1080p,视频5000kbps,音频192kbps,30fps)批量提取音频
for file in *.mp4; do ffmpeg -i "$file" -vn -c:a libmp3lame -b:a 128k "${file%.mp4}.mp3"; done
(遍历当前目录所有 MP4,提取为 128kbps 的 MP3)视频裁剪+加水印
ffmpeg -i input.mp4 -ss 00:00:30 -t 180 -vf "scale=1280:720,drawtext=fontfile=simhei.ttf:text='我的水印':fontcolor=white:fontsize=24:x=10:y=10" -c:v libx264 -b:v 2000k -c:a aac -b:a 128k output_watermark.mp4
(从30秒开始裁剪3分钟,缩为720p,添加白色文字水印)
常见使用场景示例
本节通过实际案例逐步演示常见操作,方便初学者上手。
一、基础格式转换与提取
1. 视频格式转换(通用)
1
2
3
4
5
# MP4 转 MKV(快速复制流,不重新编码)
ffmpeg -i input.mp4 -c:v copy -c:a copy output.mkv
# 任意格式转 MP4(H.264+AAC 标准编码,兼容性好)
ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4
2. 提取音频/视频
1
2
3
4
5
6
7
8
# 提取音频(不重新编码,速度最快,如 MP4 中的 AAC 音频)
ffmpeg -i input.mp4 -vn -c:a copy output.aac
# 从视频中提取音频(转 MP3)
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k output.mp3
# 提取纯视频(无音频)
ffmpeg -i input.mp4 -an -c:v copy output_no_audio.mp4
3. 音频格式转换
1
2
3
4
5
# WAV 转 MP3
ffmpeg -i input.wav -c:a libmp3lame -q:a 2 output.mp3
# FLAC 转 AAC
ffmpeg -i input.flac -c:a aac -b:a 128k output.m4a
二、视频剪辑与裁剪
1. 截取片段(按时间)
1
2
3
4
5
# 从第30秒开始,截取60秒(1分钟)
ffmpeg -i input.mp4 -ss 30 -t 60 -c copy output_clip.mp4
# 截取到指定时间点(如截取前5分钟)
ffmpeg -i input.mp4 -to 00:05:00 -c copy output_short.mp4
2. 裁剪画面(按区域)
1
2
# 裁剪视频(宽640x高480,从左上角(100,50)开始)
ffmpeg -i input.mp4 -vf "crop=640:480:100:50" -c:v libx264 output_cropped.mp4
三、视频压缩与质量调整
1. 按比特率压缩
1
2
# 压缩视频(视频2000kbps,音频128kbps)
ffmpeg -i input.mp4 -b:v 2000k -b:a 128k -c:v libx264 -c:a aac output_small.mp4
2. 按质量压缩(CRF 模式)
1
2
# H.264 编码(CRF 0-51,值越小质量越高,默认23)
ffmpeg -i input.mp4 -c:v libx264 -crf 28 -c:a copy output_compressed.mp4
3. 调整分辨率(缩小尺寸)
1
2
3
4
5
# 转为720p(1280x720)
ffmpeg -i input_1080p.mp4 -s 1280x720 -c:v libx264 output_720p.mp4
# 按比例缩小(宽度缩为原50%,高度自动计算)
ffmpeg -i input.mp4 -vf "scale=iw*0.5:-1" output_half.mp4
四、音频处理
1. 调整音量
1
2
3
4
5
# 音量放大1.5倍(150%)
ffmpeg -i input.mp4 -vol 150 output_louder.mp4
# 音量降低一半(50%)
ffmpeg -i input.mp3 -vol 50 output_quieter.mp3
2. 音频拼接
1
2
# 合并两个音频文件(按顺序)
ffmpeg -i "concat:input1.mp3|input2.mp3" -c:a copy output_combined.mp3
3. 去除音频杂音(简单降噪)
1
2
3
# 先提取噪音样本(前1秒静音部分),再降噪
ffmpeg -i input.mp3 -t 1 -af "arnndn=noise_profile=noise.prof" -y /dev/null
ffmpeg -i input.mp3 -af "arnndn=noise_profile=noise.prof" output_denoise.mp3
五、特殊功能
1. 视频转 GIF
1
2
# 截取10-15秒,转为640x360的GIF(10fps)
ffmpeg -i input.mp4 -ss 10 -t 5 -s 640x360 -r 10 output.gif
2. 图片转视频
1
2
# 多张图片(img001.jpg 到 img999.jpg)转视频(24fps)
ffmpeg -framerate 24 -i img%03d.jpg -c:v libx264 -pix_fmt yuv420p output.mp4
3. 视频添加水印
1
2
3
4
# 在右上角添加水印图片(水印占视频宽度的10%)
ffmpeg -i input.mp4 -i watermark.png -filter_complex \
"[1:v]scale=iw*0.1:-1 [wm]; [0:v][wm]overlay=W-w-10:H-h-10" \
output_watermark.mp4
六、批量处理
1
2
3
4
5
6
7
8
9
# 批量将当前目录的 MP4 转为 MKV
for file in *.mp4; do
ffmpeg -i "$file" -c copy "${file%.mp4}.mkv"
done
# 批量压缩图片(JPG 转为 80% 质量)
for img in *.jpg; do
ffmpeg -i "$img" -q:v 2 "${img%.jpg}_compressed.jpg"
done
这些命令可根据实际需求组合参数(如同时设置比特率+分辨率+裁剪),核心是通过 -i
指定输入, -c:v
/-c:a
控制编解码器,辅以各种滤镜(-vf
/-af
)实现复杂处理。