FFmpeg 全面教程:从安装到高级应用

文章目录

  • 一、下载与安装(Windows)
    • 二、基础命令详解
      • [2.1 视频调整大小](#2.1 视频调整大小)
      • [2.2 vob视频转MP4(重新编码)](#2.2 vob视频转MP4(重新编码))
      • [2.3 提取音频部分(MP3格式)](#2.3 提取音频部分(MP3格式))
      • [2.4 视频切割](#2.4 视频切割)
      • [2.5 视频转GIF](#2.5 视频转GIF)
    • 三、高级应用
      • [3.1 视频拼接](#3.1 视频拼接)
      • [3.2 添加水印](#3.2 添加水印)
      • [3.3 提取关键帧](#3.3 提取关键帧)
      • [4. 屏幕录制](#4. 屏幕录制)
    • 四、实用技巧

一、下载与安装(Windows)

FFmpeg 是一个开源的音视频处理框架,可以录制、转换和流式传输音视频。它支持几乎所有类型的媒体格式,提供强大的命令行工具和库,被广泛应用于视频处理、直播、转码等领域。点击官网下载基础版本或者完整版本:

下载后解压,将bin文件夹路径加入系统环境变量中:

输入ffmpeg -version可以看到版本信息表示安装完成:

二、基础命令详解

2.1 视频调整大小

bash 复制代码
ffmpeg -i input.mp4 -vf "scale=960:540" output.mp4
  • -vf "scale=960:540":视频滤镜设置分辨率
  • 保持宽高比:scale=960:-1(高度自动计算)

2.2 vob视频转MP4(重新编码)

bash 复制代码
ffmpeg -i input.vob -c:v libx264 -c:a aac -strict experimental output.mp4
  • -c:v libx264:使用H.264视频编码
  • -c:a aac:使用AAC音频编码

2.3 提取音频部分(MP3格式)

bash 复制代码
ffmpeg -i 机甲1.mp4 -vn -acodec libmp3lame -ab 320k 机甲1.mp3
  • -vn:禁用视频流
  • -acodec libmp3lame:指定MP3编码器
  • -ab 320k:设置音频比特率

2.4 视频切割

bash 复制代码
# 切割时间段 (00:00:00 - 00:30:00)
ffmpeg -i input.mp4 -ss 00:00:00 -to 00:30:00 -c copy part1.mp4

# 使用-t指定时长 (30分钟)
ffmpeg -i input.mp4 -ss 00:00:00 -t 1800 -c copy part1.mp4

-c copy:​​不重新编码​​,直接复制原始视频和音频流(速度快,无损,但无法剪切精确到帧)。

bash 复制代码
ffmpeg -i input.mp4 -ss 00:15:30 -t 00:05:00 -c:v libx264 -c:a aac segment.mp4
  • 适用于非关键帧位置切割
  • 会重新编码,质量略有损失

2.5 视频转GIF

bash 复制代码
ffmpeg -i 密室6.mp4 -ss 431 -to 442 -vf "fps=10,scale=640:-1" -c:v gif video1.gif
  • -ss 431:从431秒开始
  • -to 442:到442秒结束
  • fps=10:帧率10帧/秒
  • scale=640:-1:宽度640px,高度自动计算
bash 复制代码
#  `-loop 0`:无限循环
ffmpeg -i "水果缤纷.mp4" -ss 00:00:20 -to 00:00:28 -vf "fps=10,scale=640:-1" -loop 0 output.gif

如果要优化GIF大小,可以写作:

bash 复制代码
ffmpeg -i input.mp4 -ss 00:01:00 -t 10 -vf "fps=15,scale=500:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif

-vf : 视频过滤器链参数,由多个滤镜组成,用逗号 , 分隔,主要完成以下操作:

  1. 降低帧率 (fps=15)**:将视频帧率从原始值(如 30 FPS)降低到 15 FPS,减少 GIF 的帧数,降低文件体积,同时避免动画过快。

  2. 调整分辨率 (scale=500:-1)**:将视频宽度缩放到 500 像素 ,高度按原比例自动计算(-1 表示保持宽高比),画面避免过大。

  3. 高质量缩放算法 (flags=lanczos)**:使用 Lanczos 重采样算法 进行缩放。相比默认的缩放算法(如双线性插值),Lanczos 能更好地保留细节,减少图像模糊。

  4. 生成调色板 (split[s0][s1];[s0]palettegen[p])**:将视频流分成两个副本 [s0][s1],然后用 [s0] 生成颜色调色板 [p]

    通过分析视频颜色分布,创建一个最优的颜色索引表,减少 GIF 的颜色数量(默认 256 色),同时尽量保留色彩丰富度。

  5. 应用调色板 ([s1][p]paletteuse)**:将调色板 [p] 应用到视频流 [s1] 上。确保生成的 GIF 使用有限的色彩(256 色)但尽可能接近原视频的视觉效果。

最后,推荐一个GIF文件处理网站ezgif,可以对视频进行转GIF进行各种处理,甚至是一帧帧选择要转为GIF的所有帧:

三、高级应用

3.1 视频拼接

bash 复制代码
# 创建文件列表
echo "file 'clip1.mp4'" > list.txt
echo "file 'clip2.mp4'" >> list.txt

# 拼接视频
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4

3.2 添加水印

bash 复制代码
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=W-w-10:H-h-10" output.mp4
  • 在右下角添加水印(距离边缘10px)

3.3 提取关键帧

bash 复制代码
ffmpeg -i input.mp4 -vf "select='eq(pict_type,I)'" -vsync vfr thumbnails_%03d.jpg

4. 屏幕录制

bash 复制代码
ffmpeg -f gdigrab -framerate 30 -i desktop -c:v libx264 -preset ultrafast -crf 0 output.mp4

四、实用技巧

  1. 快速切割 :使用 -c copy 避免重新编码,速度极快
  2. 批量处理:结合批处理脚本或PowerShell自动化任务
  3. 硬件加速 :使用 -hwaccel cuda-hwaccel dxva2 加速处理
  4. 格式探测 :使用 ffprobe input.mp4 查看媒体详细信息
  5. 性能监控 :添加 -report 参数生成处理日志

常见问题解决:

  1. 编码问题 :使用 -c:v libx264 -pix_fmt yuv420p 确保兼容性
  2. 音频同步 :尝试 -async 1 参数
  3. 大文件处理:使用分段处理或流式处理
  4. 质量优化:调整CRF值(18-28范围,值越小质量越高)

提示 :使用 ffmpeg -h full 查看完整帮助文档,或访问 https://ffmpeg.org/ffmpeg.html 获取更多高级用法。

相关推荐
筏.k18 小时前
FFmpeg 核心 API 系列:avcodec_find_decoder / avcodec_alloc_context3 / avcodec_open2
ffmpeg
Everbrilliant8920 小时前
Xcode上编译调试ffmpeg
macos·ffmpeg·xcode·ffmpeg源码编译工具·xcode调试ffmpeg源码·ffmpeg工具环境变量配置
molihuan1 天前
开源 全平台 哔哩哔哩缓存视频合并 Github地址:https://github.com/molihuan/hlbmerge_flutter
android·flutter·缓存·ffmpeg·开源·github·音视频
爱吃牛肉的大老虎2 天前
FFmpeg和ZLMediaKit 实现本地视频推流
ffmpeg·音视频
liliangcsdn2 天前
基于ollama运行27b gemma3解决ffmpeg命令生成问题
人工智能·ffmpeg
Everbrilliant893 天前
音视频编解码全流程之用Extractor后Decodec
ffmpeg·视频编解码·mediacodec·音视频解码·ffmpeg编解码·decodec·ndkmediacodec
Industio_触觉智能4 天前
瑞芯微RK35XX系列FFmpeg硬件编解码实测,详细性能对比!
ffmpeg·rk3588·rk3568·编解码·rk3562·rk3576
小狮子安度因4 天前
FFmpeg暂停、逐帧和音量
ffmpeg
小狮子安度因4 天前
FFmpeg过滤器实战:水印处理
ffmpeg·myeclipse