FFmpeg 安装与使用
文章目录
- 1. 环境部署(Windows)
- 1.1. 安装包下载
- 1.2. 配置环境变量
- 1.3. 验证安装
- 2. FFmpeg 基础使用教程
- 2.1. 常用命令格式
- 2.2. 基础功能示例
- 2.2.1. 视频转码(MP4 → MKV)
- 2.2.2. 调整分辨率(1080p → 480p)
- 2.2.3. 提取音频
- 2.2.4. 剪切视频片段(截取 00:01:00 到 00:02:30)
- 2.2.5. 去除水印
- 2.3. 视频转封装
- 2.3.1. HLS 转 MP4
1. 环境部署(Windows)
1.1. 安装包下载
访问 FFmpeg 官网,点击 Windows builds from gyan.dev。
在 Release Builds 区域选择最新版本(如 ffmpeg-7.0.2-essentials_build.zip):
- Essentials:基础功能版(推荐)。
- Full:完整功能版(需更多存储空间)。
GitHub 下载地址
版本任选
这里我选择 full 版本,解压后复制 bin 目录路径:
├── bin # 核心可执行文件(ffmpeg.exe、ffplay.exe、ffprobe.exe)├── ffmpeg.exe├── ffplay.exe└── ffprobe.exe
├── doc # 文档
└── presets # 预设编码方案
1.2. 配置环境变量
- 右键【此电脑】→【属性】→【高级系统设置】 →【环境变量】。
- 在【系统变量】中找到【Path】→点击【编辑】→【新建】→ 输入 D:\Programs\ffmpeg\bin(替换为实际路径)。
- 连续点击【确定】保存设置。
1.3. 验证安装
打开命令行窗口(Win+R → 输入 cmd),执行:
ffmpeg -version
若显示版本信息(如 ffmpeg version 7.0.2),则安装成功
2. FFmpeg 基础使用教程
2.1. 常用命令格式
ffmpeg [全局参数] -i [输入文件] [输出参数] [输出文件]
2.2. 基础功能示例
2.2.1. 视频转码(MP4 → MKV)
ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mkv
-c:v:视频编码器(如 libx265 为 H.265)。
-c:a:音频编码器(如 mp3)。
2.2.2. 调整分辨率(1080p → 480p)
ffmpeg -i input.mp4 -vf scale=854:480 output.mp4
2.2.3. 提取音频
ffmpeg -i input.mp4 -vn -c:a copy output.aac
-vn:忽略视频流。
2.2.4. 剪切视频片段(截取 00:01:00 到 00:02:30)
ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:30 -c:v copy -c:a copy output.mp4
2.2.5. 去除水印
https://www.zhihu.com/people/lp-uber/posts
2.3. 视频转封装
2.3.1. HLS 转 MP4
- 转换单个 TS 文件到 MP4
ffmpeg -i input.ts -c copy output.mp4
-c copy 选项告诉 FFmpeg 直接复制视频和音频流,不进行重新编码,这样可以保持原始质量并快速完成转换。
如果 TS 文件包含特定的编码或封装格式需要被转换(例如从 MPEG-TS 封装转换为 MP4 封装),可以省略 -c copy 选项,让 FFmpeg 自动选择合适的编解码器进行转换。
- 转换 HLS 流中的 TS 片段到 MP4
处理 HLS 流中的多个 TS 片段(例如,一个 .m3u8 播放列表中的所有 TS 文件):
首先,下载所有 TS 文件(如果存在可跳过该步):
wget -i playlist.m3u8 -P videoss/
然后,合并这些 TS 文件到一个单一的 MP4 文件:
ffmpeg -f concat -safe 0 -i playlist.txt -c copy output.mp4
-f concat 是 FFmpeg 中用于拼接多个媒体文件的输入格式选项,将多个视频或音频文件无缝连接成一个文件。
-safe 参数是 FFmpeg 中用于控制文件路径安全检查的选项,主要在使用 -f concat 进行文件拼接时使用。
1 (默认值): 启用安全检查,只允许相对路径且不包含特殊字符;禁用绝对路径、包含父目录的引用路径、某些特殊字符和符号链接;
0: 禁用安全检查,允许使用绝对路径和特殊路径。
-i playlist.txt 是一个文本文件,包含所有 TS 文件的路径,每一行一个文件路径。例如:
file 'videss/segment_0.ts'
file 'videss/segment_1.ts'
...
最后,文件结构:
├── videoss├── segment_0.ts├── segment_1.ts└── segment_10.ts
├── output.mp4 # 输出文件
└── playlist.txt # 输入文件列表