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

相关推荐
__Destiny__1 小时前
视频格式转为mp4(使用ffmpeg)
ffmpeg·视频编解码
<Sunny>1 小时前
SDL 2.0视频数据渲染到窗口上播放流程
ffmpeg·音视频
PlumCarefree13 小时前
USB摄像头视频流转RTSP流
图像处理·ffmpeg·音视频·媒体·视频编解码
PlumCarefree14 小时前
基于鸿蒙API10的RTSP播放器(八:音量和亮度调节功能的整合)
华为·ffmpeg·音视频·harmonyos
源之缘-OFD先行者14 小时前
ffmpeg实现视频的合成与分割
ffmpeg·音视频
一尺丈量16 小时前
ffmpeg硬件解码一般流程
c++·人工智能·ffmpeg·cuda·硬件解码
cuijiecheng20181 天前
音视频入门基础:AAC专题(5)——FFmpeg源码中,判断某文件是否为AAC裸流文件的实现
ffmpeg·音视频·aac
程序员黄老师1 天前
Windows与Linux下 SDL2的第一个窗口程序
c++·windows·ffmpeg·sdl
陈 洪 伟1 天前
完整指南:CNStream流处理多路并发框架适配到NVIDIA Jetson Orin (四) 运行、调试、各种问题解决
ffmpeg·nvidia·jetson·cv-cuda
DogDaoDao1 天前
音视频开发常见的开源项目汇总
ffmpeg·开源·音视频·webrtc·x264·live555·obs