ffmpeg的安装和使用教程

ffmpeg的安装和使用教程

      • [一、FFmpeg 的安装](#一、FFmpeg 的安装)
        • [1.1. 在 Ubuntu 上安装](#1.1. 在 Ubuntu 上安装)
        • [1.2. 在 CentOS/RHEL 上安装](#1.2. 在 CentOS/RHEL 上安装)
        • [1.3. 在 Mac 上安装](#1.3. 在 Mac 上安装)
        • [1.4. 在 Windows 上安装](#1.4. 在 Windows 上安装)
      • [二、FFmpeg 基本使用](#二、FFmpeg 基本使用)
        • [2.1. 转换视频格式](#2.1. 转换视频格式)
        • [2.2. 提取音频](#2.2. 提取音频)
        • [2.3. 视频剪切](#2.3. 视频剪切)
        • [2.4. 压缩视频](#2.4. 压缩视频)
        • [2.5. 调整视频分辨率](#2.5. 调整视频分辨率)
        • [2.6. 合并音频和视频](#2.6. 合并音频和视频)
        • [2.7. 旋转视频](#2.7. 旋转视频)
        • [2.8. 添加水印](#2.8. 添加水印)
        • [2.9. 视频帧率转换](#2.9. 视频帧率转换)
        • [2.10. 查看媒体信息](#2.10. 查看媒体信息)
        • [2.11. 视频截图](#2.11. 视频截图)
      • [三、FFmpeg 高级用法](#三、FFmpeg 高级用法)
        • [3.1. 批量转换文件格式](#3.1. 批量转换文件格式)
        • [3.2. 多文件合并](#3.2. 多文件合并)
        • [3.3. 添加字幕](#3.3. 添加字幕)
        • [3.4. 音频与视频同步](#3.4. 音频与视频同步)
      • [四、FFmpeg 常见问题](#四、FFmpeg 常见问题)
        • [4.1. 视频格式不支持](#4.1. 视频格式不支持)
        • [4.2. 视频转换速度慢](#4.2. 视频转换速度慢)

FFmpeg 是一个强大的多媒体处理工具,用于视频和音频的处理、转换、录制、编辑和流传输。以下是如何在不同平台上安装 FFmpeg 及其一些常见用法的教程。

一、FFmpeg 的安装

1.1. 在 Ubuntu 上安装
bash 复制代码
sudo apt update
sudo apt install ffmpeg

验证安装是否成功:

bash 复制代码
ffmpeg -version
1.2. 在 CentOS/RHEL 上安装

首先启用 EPEL 和 RPM Fusion 仓库:

bash 复制代码
sudo yum install epel-release
sudo yum install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm

然后安装 FFmpeg:

bash 复制代码
sudo yum install ffmpeg ffmpeg-devel
1.3. 在 Mac 上安装

使用 Homebrew 安装:

bash 复制代码
brew install ffmpeg
1.4. 在 Windows 上安装
  1. 前往 FFmpeg 官方下载页面
  2. 下载适用于 Windows 的预编译二进制文件。
  3. 解压后,将 bin 文件夹路径添加到系统的环境变量 Path 中。

二、FFmpeg 基本使用

2.1. 转换视频格式

将视频从一种格式转换为另一种格式。以下示例将 .mp4 转换为 .avi

bash 复制代码
ffmpeg -i input.mp4 output.avi
2.2. 提取音频

从视频中提取音频并保存为 MP3 文件:

bash 复制代码
ffmpeg -i input.mp4 -q:a 0 -map a output.mp3
2.3. 视频剪切

从视频中提取特定的时间片段。例如,从第 00:01:00(1分钟)开始,提取10秒钟的视频:

bash 复制代码
ffmpeg -i input.mp4 -ss 00:01:00 -t 10 -c copy output.mp4
  • -ss:指定起始时间。
  • -t:指定持续时间。
  • -c copy:不重新编码,直接复制原始数据。
2.4. 压缩视频

压缩视频文件,降低比特率来减少文件大小:

bash 复制代码
ffmpeg -i input.mp4 -vcodec h264 -b:v 1000k -acodec mp3 -b:a 128k output.mp4
  • -b:v:视频比特率。
  • -b:a:音频比特率。
2.5. 调整视频分辨率

更改视频的分辨率。例如,将视频调整为 1280x720 的分辨率:

bash 复制代码
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
2.6. 合并音频和视频

将音频文件和视频文件合并到一起:

bash 复制代码
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac output.mp4
2.7. 旋转视频

旋转视频 90 度:

bash 复制代码
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
  • transpose=1:顺时针旋转 90 度。
  • transpose=2:逆时针旋转 90 度。
2.8. 添加水印

为视频添加水印,例如一张图片位于视频的左上角:

bash 复制代码
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
  • overlay=10:10:表示水印的位置,10:10 是相对于视频左上角的坐标。
2.9. 视频帧率转换

更改视频的帧率。例如,将帧率设置为 30 fps:

bash 复制代码
ffmpeg -i input.mp4 -r 30 output.mp4
2.10. 查看媒体信息

使用 ffmpeg 可以查看视频或音频文件的详细信息:

bash 复制代码
ffmpeg -i input.mp4
2.11. 视频截图

从视频中截取一帧作为图片:

bash 复制代码
ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 screenshot.png
  • -ss 00:00:10:指定截取的时间点。
  • -vframes 1:指定截取一帧。

三、FFmpeg 高级用法

3.1. 批量转换文件格式

将目录下的所有 .mp4 文件批量转换为 .avi 文件:

bash 复制代码
for f in *.mp4; do
    ffmpeg -i "$f" "${f%.mp4}.avi"
done
3.2. 多文件合并

合并多个视频文件:

首先,创建一个包含所有要合并的视频文件的文本文件 filelist.txt

file 'video1.mp4'
file 'video2.mp4'
file 'video3.mp4'

然后执行以下命令:

bash 复制代码
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
3.3. 添加字幕

为视频添加 .srt 字幕文件:

bash 复制代码
ffmpeg -i input.mp4 -vf subtitles=subtitle.srt output.mp4
3.4. 音频与视频同步

有时音频与视频不同步,可以通过以下命令来重新同步音视频:

bash 复制代码
ffmpeg -i input.mp4 -c copy -async 1 output.mp4

四、FFmpeg 常见问题

4.1. 视频格式不支持

当遇到格式或编码器不支持的问题时,可能是系统的 FFmpeg 没有启用对应的编解码器。可以通过编译 FFmpeg 或从有更多编解码器支持的源安装来解决这个问题。

4.2. 视频转换速度慢

视频转换速度与文件大小、比特率、编码器等有关,可以通过降低比特率或调整帧数来提升转换速度。


FFmpeg 是一个非常强大的工具,可以处理多种多媒体任务,了解其常见命令和灵活使用参数,可以大大提升你在音视频处理上的效率。

相关推荐
lxkj_20248 小时前
使用线程局部存储解决ffmpeg中多实例调用下自定义日志回调问题
ffmpeg
runing_an_min13 小时前
ffmpeg视频滤镜:替换部分帧-freezeframes
ffmpeg·音视频·freezeframes
ruizhenggang13 小时前
ffmpeg本地编译不容易发现的问题 — Error:xxxxx not found!
ffmpeg
runing_an_min15 小时前
ffmpeg视频滤镜:提取缩略图-framestep
ffmpeg·音视频·framestep
韩曙亮1 天前
【FFmpeg】FFmpeg 内存结构 ③ ( AVPacket 函数简介 | av_packet_ref 函数 | av_packet_clone 函数 )
ffmpeg·音视频·avpacket·av_packet_clone·av_packet_ref·ffmpeg内存结构
oushaojun21 天前
ubuntu中使用ffmpeg和nginx推流rtmp视频
nginx·ubuntu·ffmpeg·rtmp
莫固执,朋友1 天前
网络抓包工具tcpdump 在海思平台上的编译使用
网络·ffmpeg·音视频·tcpdump
lxkj_20241 天前
修改ffmpeg实现https-flv内容加密
网络协议·https·ffmpeg
cuijiecheng20181 天前
音视频入门基础:MPEG2-TS专题(6)——FFmpeg源码中,获取MPEG2-TS传输流每个transport packet长度的实现
ffmpeg·音视频
VisionX Lab2 天前
数据脱敏工具:基于 FFmpeg 的视频批量裁剪
python·ffmpeg·音视频