当前位置: 首页 > news >正文

FFmpeg安装和使用

1. 安装与环境配置

Windows
# 方法1:官网下载预编译二进制包
https://ffmpeg.org/download.html#build-windows
解压后添加bin目录到系统PATH

# 方法2:通过Chocolatey安装
choco install ffmpeg
macOS
# 使用Homebrew安装
brew install ffmpeg
Linux
# Debian/Ubuntu
sudo apt install ffmpeg

# CentOS/RHEL
sudo yum install epel-release
sudo yum install ffmpeg
验证安装
ffmpeg -version  # 输出版本信息
ffmpeg -i input.mp4 -c:v libx264 output.mp4  # 简单转码测试

2. 基本命令与功能

命令结构
ffmpeg [全局选项] -i 输入文件 [操作选项] 输出文件
常用参数
参数作用
-i指定输入文件
-c:v视频编解码器(如libx264
-c:a音频编解码器(如aac
-b:v视频比特率(如2000k
-ss跳转到指定时间(如00:01:23
-t持续时间(如60秒)
基础示例
# 转换视频格式(MP4 → MKV)
ffmpeg -i input.mp4 -c:v copy -c:a copy output.mkv

3. 音视频转换

格式转换
# MP4转MKV(直接复制流)
ffmpeg -i input.mp4 -c:v copy -c:a copy output.mkv

# FLAC转MP3(音频编码)
ffmpeg -i audio.flac -c:a libmp3lame -b:a 320k output.mp3
视频转音频
ffmpeg -i video.mp4 -vn -c:a libmp3lame audio.mp3
# -vn : 禁用视频流
调整参数
# 修改分辨率(缩放到640x480)
ffmpeg -i input.mp4 -vf scale=640:480 output.mp4

# 调整帧率为30fps
ffmpeg -i input.mp4 -r 30 output.mp4

# 设置视频比特率为2Mbps
ffmpeg -i input.mp4 -b:v 2000k output.mp4
提取与合并流
# 提取音频流
ffmpeg -i video.mp4 -map 0:a -c:a copy audio.aac

# 合并音视频
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac output.mp4

4. 视频切割与拼接

精确切割
# 从第10秒开始截取30秒
ffmpeg -ss 00:00:10 -i input.mp4 -t 30 -c:v copy -c:a copy cut.mp4
文件拼接
# 创建待拼接文件列表(filelist.txt)
file 'part1.mp4'
file 'part2.mp4'

# 执行拼接(相同编码格式)
ffmpeg -f concat -i filelist.txt -c copy output.mp4

5. 信息提取与分析

查看详细信息
ffprobe -v error -show_format -show_streams input.mp4
# 生成JSON格式报告
ffprobe -v quiet -print_format json -show_streams input.mp4
提取关键帧与缩略图
# 提取所有关键帧
ffmpeg -i input.mp4 -vf "select=eq(pict_type\,I)" -vsync vfr keyframes_%03d.jpg

# 生成缩略图(每秒1张)
ffmpeg -i input.mp4 -vf fps=1 thumbnails_%03d.jpg

6. 高级功能与优化

视频压缩
# H.265编码(CRF值越小质量越高,推荐18-28)
ffmpeg -i input.mp4 -c:v libx265 -crf 23 -c:a aac output.mp4
添加水印与字幕
# 添加图片水印(右上角)
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=W-w-10:10" output.mp4

# 嵌入字幕
ffmpeg -i video.mp4 -i subtitles.srt -c copy -c:s mov_text output.mp4
多音轨处理
# 保留所有音轨和字幕
ffmpeg -i input.mkv -map 0 -c copy output.mp4

# 选择特定音轨(例如第2条)
ffmpeg -i input.mkv -map 0:v -map 0:a:1 -c copy output.mp4

7. 常见问题与优化

常见错误解决
  1. “Unrecognized option”
    检查参数拼写,确保FFmpeg版本支持该选项。
  2. “Codec not supported”
    安装对应编码器(如libx264)或使用-c:v copy跳过转码。
性能优化
  • 启用硬件加速(例如NVIDIA显卡):
    ffmpeg -hwaccel cuda -i input.mp4 -c:v h264_nvenc output.mp4
    
  • 限制线程数:-threads 4
  • 降低处理分辨率:-vf scale=1280:-1

推荐学习资源

  1. 官方文档:https://ffmpeg.org/documentation.html
  2. FFmpeg Wiki:https://trac.ffmpeg.org/wiki
  3. 实用命令大全:https://gist.github.com/steven2358/ba153c642fe2bb1e47485962df07c730
  4. 视频教程:B站搜索“FFmpeg实战教程”
http://www.dtcms.com/a/122104.html

相关文章:

  • # 基于BERT的文本分类
  • 龙蜥社区荣获 OS2ATC 2025 “最具影响力开源创新贡献奖”
  • spark数据清洗案例:流量统计
  • 力扣刷题-热题100题-第34题(c++、python)
  • 机器学习代码基础——ML2 使用梯度下降的线性回归
  • 暑假实习面试复盘
  • Vue框架的Diff算法
  • 使用Ollama通过预训练模型获取句子向量(rest api方式)
  • GDB调试程序的基本命令和用法(Qt程序为例)
  • 三月份面试感触
  • OpenCV链接库失败,报错 无法解析的外部符号
  • SCI科学论文的重要组成部分
  • 达梦数据库迁移问题总结
  • 如何进行数据安全风险评估总结
  • Frida 调用 kill 命令挂起恢复 Android 线程
  • spring之JdbcTemplate、GoF之代理模式、面向切面编程AOP
  • 在Ubuntu 22.04上配置【C/C++编译环境】
  • 【码农日常】vscode编码clang-format格式化简易教程
  • (PTA) L2-011-L2-015
  • TDengine 窗口预聚集
  • 面试如何应用大模型
  • 算法刷题记录——LeetCode篇(1.6) [第51~60题](持续更新)
  • JAVA基础八股复习
  • 服务器DNS失效
  • DataGear结合AI工具制作多端适配的数据看板
  • Markdown标题序号处理工具——用 C 语言实现
  • 最新Web系统全面测试指南
  • lab-foundation开源程序AI/数据科学的瑞士军刀,开箱即用的数据科学/AI 平台 |AI/数据科学的瑞士军刀
  • java设计模式-代理模式
  • C语言操作符详解:从基础到进阶