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

相关推荐
EasyCVR5 小时前
EHOME视频平台EasyCVR视频融合平台使用OBS进行RTMP推流,WebRTC播放出现抖动、卡顿如何解决?
人工智能·算法·ffmpeg·音视频·webrtc·监控视频接入
简鹿办公6 小时前
使用 FFmpeg 进行音视频转换的相关命令行参数解释
ffmpeg·简鹿视频格式转换器·ffmpeg视频转换
EasyCVR9 小时前
萤石设备视频接入平台EasyCVR多品牌摄像机视频平台海康ehome平台(ISUP)接入EasyCVR不在线如何排查?
运维·服务器·网络·人工智能·ffmpeg·音视频
runing_an_min9 小时前
ffmpeg 视频滤镜:屏蔽边框杂色- fillborders
ffmpeg·音视频·fillborders
岁月小龙20 小时前
如何让ffmpeg运行时从当前目录加载库,而不是从/lib64
ffmpeg·origin·ffprobe·rpath
行者记2 天前
ffmpeg命令——从wireshark包中的rtp包中分离h264
测试工具·ffmpeg·wireshark
EasyCVR2 天前
国标GB28181视频平台EasyCVR私有化视频平台工地防盗视频监控系统方案
运维·科技·ffmpeg·音视频·1024程序员节·监控视频接入
hypoqqq2 天前
使用ffmpeg播放rtsp视频流
ffmpeg
cuijiecheng20182 天前
音视频入门基础:FLV专题(24)——FFmpeg源码中,获取FLV文件视频信息的实现
ffmpeg·音视频
QMCY_jason2 天前
黑豹X2 armbian 编译rkmpp ffmpeg 实现CPU视频转码
ffmpeg