FFMpeg
FFmpeg 是一个强大的多媒体处理工具,支持音视频格式转换、编辑、录制和流媒体处理
Download
https://ffmpeg.org/download.html,下载 “Full” 版本的 ZIP 文件
cd C:/user/caiyizhang/Downloads/ffmpeg/bin/
ffmpeg -version
Command
ffmpeg [输入选项] -i [输入文件] [输出选项] [输出文件]
Example
// 将 MP4 转换为 AVI
ffmpeg -i input.mp4 output.avi
// 将 MKV 转换为 MP4
ffmpeg -i input.mkv output.mp4
// 改变帧率
ffmpeg -i input.mp4 -r 30 output.mp4
// 无损转换
// 如果不指定编解码器,FFmpeg 会默认重新编码,可能会损失质量
ffmpeg -i input.mkv -c copy output.mp4
// 压缩视频
// libx265 使用 H.265 编码,-crf 28 控制质量
ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4
// 调整分辨率到 1280x720
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
// 裁剪 640x480 居中
ffmpeg -i input.mp4 -vf "crop=640:480:100:50" output.mp4
// 顺时针旋转 90 度
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
// 剪辑视频
// -ss 开始时间,-to 结束时间,-c copy 直接剪辑不重新编码
ffmpeg -i input.mp4 -ss 00:00:30 -to 00:01:00 -c copy output.mp4
Parameter
FFmpeg 中的 output 参数非常多,但常用的主要涉及 编码器、比特率、分辨率、帧率、音视频流 等方面。以下是常见的 output 选项
类别 | 参数 | 用途 | 示例 |
---|---|---|---|
帧率 | -r 30 |
设置帧率为 30 FPS | ffmpeg -i input.mp4 -r 30 output.mp4 |
-r 60 |
设置帧率为 60 FPS | ffmpeg -i input.mp4 -r 60 output.mp4 |
|
比特率 | -b:v 2M |
视频比特率 2 Mbps | ffmpeg -i input.mp4 -b:v 2M output.mp4 |
-b:a 192k |
音频比特率 192 kbps | ffmpeg -i input.mp4 -b:a 192k output.mp4 |
|
分辨率 | -vf scale=1280:720 |
调整视频分辨率到 720p | ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4 |
-vf scale=-1:1080 |
宽度自适应,高度固定 1080p | ffmpeg -i input.mp4 -vf scale=-1:1080 output.mp4 |
|
视频编码 | -c:v libx264 |
使用 H.264 编码(常见) | ffmpeg -i input.mp4 -c:v libx264 output.mp4 |
-c:v libx265 |
使用 H.265 编码(更高压缩比) | ffmpeg -i input.mp4 -c:v libx265 output.mp4 |
|
-c:v vp9 |
使用 VP9 编码(适用于 WebM) | ffmpeg -i input.mp4 -c:v vp9 output.webm |
|
-c:v copy |
不重新编码(最快、无损) | ffmpeg -i input.mp4 -c:v copy output.mp4 |
|
硬件加速 | -c:v h264_nvenc |
使用 NVIDIA GPU 硬件加速(H.264) | ffmpeg -i input.mp4 -c:v h264_nvenc output.mp4 |
-c:v h264_qsv |
使用 Intel Quick Sync 硬件加速 | ffmpeg -i input.mp4 -c:v h264_qsv output.mp4 |
|
-c:v h264_amf |
使用 AMD GPU 硬件加速 | ffmpeg -i input.mp4 -c:v h264_amf output.mp4 |
|
音频编码 | -c:a aac |
使用 AAC 音频编码(MP4 常见) | ffmpeg -i input.mp4 -c:a aac output.mp4 |
-c:a mp3 |
使用 MP3 编码 | ffmpeg -i input.mp4 -c:a mp3 output.mp3 |
|
-c:a copy |
不重新编码(最快、无损) | ffmpeg -i input.mp4 -c:a copy output.mp4 |
|
恒定质量因子 | -crf 23 |
控制 H.264 质量(0-51,值越小质量越高) | ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4 |
-crf 28 |
控制 H.265 质量(推荐 22-30) | ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4 |
|
音视频流 | -an |
去掉音频,仅保留视频 | ffmpeg -i input.mp4 -an output.mp4 |
-vn |
去掉视频,仅保留音频 | ffmpeg -i input.mp4 -vn output.mp3 |
|
剪辑 | -ss 00:00:30 -to 00:01:00 |
截取 00:30-01:00 片段 | ffmpeg -i input.mp4 -ss 00:00:30 -to 00:01:00 -c copy output.mp4 |
旋转 | -vf "transpose=1" |
顺时针旋转 90° | ffmpeg -i input.mp4 -vf "transpose=1" output.mp4 |
-vf "transpose=2" |
逆时针旋转 90° | ffmpeg -i input.mp4 -vf "transpose=2" output.mp4 |
|
-vf "transpose=1,transpose=1" |
旋转 180° | ffmpeg -i input.mp4 -vf "transpose=1,transpose=1" output.mp4 |
|
裁剪 | -vf "crop=640:480:100:50" |
裁剪 640x480,起点 (100,50) | ffmpeg -i input.mp4 -vf "crop=640:480:100:50" output.mp4 |
合并 | -f concat -safe 0 -i file_list.txt -c copy |
合并多个相同编码的视频 | ffmpeg -f concat -safe 0 -i file_list.txt -c copy output.mp4 |