Mac电脑如何使用FFmpeg?一文搞懂! – wiki基地


Mac 电脑如何使用 FFmpeg?一文搞懂!

FFmpeg 是一个功能强大、开源的音视频处理工具,它可以在命令行中对音视频文件进行几乎所有你能想象到的操作:转换格式、提取音频、裁剪、合并、添加水印、调整编码参数等等。对于 macOS 用户来说,掌握 FFmpeg 绝对能让你的音视频处理效率大大提升。本文将带你从安装到常用操作,一文搞懂 FFmpeg 在 Mac 上的使用!

1. 什么是 FFmpeg?

FFmpeg 是一套可以记录、转换数字音频、视频,并将其转化为流的开源计算机程序。它包含了非常多的库和工具,核心功能包括:

  • ffmpeg: 命令行工具,用于音视频转换、流媒体处理等。
  • ffplay: 简单的媒体播放器,基于 FFmpeg 库。
  • ffprobe: 命令行工具,用于分析媒体文件的信息。

它支持几乎所有已知的音视频格式和编码器,是许多专业和非专业音视频软件的底层技术。

2. 在 Mac 上安装 FFmpeg

在 macOS 上安装 FFmpeg 最推荐的方式是使用 Homebrew。Homebrew 是 macOS 上一个优秀的包管理器,可以让你轻松安装各种命令行工具和软件。

步骤一:安装 Homebrew (如果尚未安装)

打开“终端”(可以在“应用程序”->“实用工具”中找到,或者通过 Spotlight 搜索),然后粘贴以下命令并回车运行:

bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

按照终端提示操作,可能需要输入你的管理员密码。安装过程可能需要几分钟。

步骤二:使用 Homebrew 安装 FFmpeg

Homebrew 安装完成后,在终端中运行以下命令来安装 FFmpeg:

bash
brew install ffmpeg

如果你需要更多编码器支持(例如 libx265),可以使用带有选项的安装:

bash
brew install ffmpeg --with-libx265 --with-libvpx --with-fdk-aac

这会安装更多高级的编码器和解码器。安装过程会下载并编译所需的文件,耐心等待。

步骤三:验证安装

安装完成后,你可以通过运行以下命令来验证 FFmpeg 是否成功安装并可用:

bash
ffmpeg -version

如果终端显示 FFmpeg 的版本信息,那么恭喜你,安装成功!

3. FFmpeg 常用命令示例

FFmpeg 的命令结构通常是:ffmpeg [全局选项] [输入选项] -i [输入文件] [输出选项] [输出文件]

下面是一些常见的 FFmpeg 使用场景和命令示例:

3.1. 视频格式转换

这是最常用的功能之一,例如将 .mp4 转换为 .avi

bash
ffmpeg -i input.mp4 output.avi

解释:
* -i input.mp4: 指定输入文件。
* output.avi: 指定输出文件及其格式。

如果你想指定编码器,例如使用 libx264 编码器将 mov 转换为 mp4

bash
ffmpeg -i input.mov -c:v libx264 -c:a aac output.mp4

解释:
* -c:v libx264: 指定视频编码器为 libx264 (H.264)。
* -c:a aac: 指定音频编码器为 aac

3.2. 提取音频

从视频文件中提取音频(例如提取为 .mp3):

bash
ffmpeg -i video.mp4 -vn audio.mp3

解释:
* -vn: 禁用视频流(不输出视频)。

如果你想提取更高质量的音频,可以指定编码器和比特率:

bash
ffmpeg -i video.mp4 -vn -ar 44100 -ac 2 -b:a 192k audio.mp3

解释:
* -ar 44100: 设置音频采样率为 44.1kHz。
* -ac 2: 设置音频通道数为 2(立体声)。
* -b:a 192k: 设置音频比特率为 192kbps。

3.3. 裁剪视频

裁剪视频的指定片段:

bash
ffmpeg -i input.mp4 -ss 00:01:00 -t 00:00:10 -c copy output_clip.mp4

解释:
* -ss 00:01:00: 从视频的第 1 分钟开始。
* -t 00:00:10: 持续 10 秒。
* -c copy: 不重新编码,直接复制视频和音频流,这样速度快且无损,但精确度可能略低(会在关键帧处开始/结束)。

如果需要精确裁剪,可能需要重新编码(会慢一些):

bash
ffmpeg -i input.mp4 -ss 00:01:00 -to 00:01:10 -c:v libx264 -c:a aac output_clip_precise.mp4

解释:
* -to 00:01:10: 结束时间为 1 分 10 秒。

3.4. 调整视频分辨率/尺寸

将视频调整为 1280×720 (720p):

bash
ffmpeg -i input.mp4 -vf scale=1280:720 output_720p.mp4

解释:
* -vf scale=宽:高: 使用 scale 滤镜调整分辨率。
* 你也可以保持宽高比,只指定其中一个:scale=1280:-1 (宽 1280,高自动) 或 scale=-1:720 (高 720,宽自动)。

3.5. 视频压缩

在保持相对较好画质的情况下压缩视频:

bash
ffmpeg -i input.mp4 -vcodec libx264 -crf 28 output_compressed.mp4

解释:
* -crf: Constant Rate Factor(恒定码率因子)。值越小,画质越好(文件越大);值越大,画质越差(文件越小)。推荐范围 18-28,23 是默认值。

3.6. 视频合并

合并多个视频文件。首先,你需要创建一个文本文件(例如 mylist.txt),列出要合并的视频文件:

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

然后运行合并命令:

bash
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output_merged.mp4

解释:
* -f concat: 指定使用连接器。
* -safe 0: 允许非绝对路径(如果文件都在当前目录)。
* -i mylist.txt: 指定包含文件列表的文本文件。
* -c copy: 直接复制流,不重新编码。所有视频的编码格式、分辨率等需要保持一致。

如果视频格式不一致,需要重新编码:

bash
ffmpeg -f concat -safe 0 -i mylist.txt -c:v libx264 -c:a aac -vsync vfr output_merged_encoded.mp4

3.7. 提取视频帧为图片

将视频的某一帧提取为图片:

bash
ffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 thumbnail.jpg

解释:
* -ss 00:00:05: 从视频的第 5 秒处。
* -vframes 1: 只提取一帧。

提取视频中的所有帧为图片序列:

bash
ffmpeg -i input.mp4 -r 10 -f image2 output_%03d.png

解释:
* -r 10: 每秒提取 10 帧。
* -f image2: 输出格式为图片序列。
* output_%03d.png: 输出文件名为 output_001.png, output_002.png 等。

3.8. 视频转换为 GIF

将视频转换为高质量的 GIF 动画:

bash
ffmpeg -i input.mp4 -vf "fps=10,scale=500:-1:flags=lanczos" -loop 0 output.gif

解释:
* fps=10: 设置 GIF 的帧率为 10 帧/秒。
* scale=500:-1: 将宽度设置为 500 像素,高度自动。
* flags=lanczos: 使用 Lanczos 算法进行缩放,提高画质。
* -loop 0: GIF 循环播放。

4. ffprobeffplay 的基本使用

4.1. ffprobe:查看媒体文件信息

bash
ffprobe input.mp4

这会打印出视频的详细信息,包括编码器、分辨率、帧率、比特率、音频流信息等。

4.2. ffplay:简单播放器

bash
ffplay input.mp4

这是一个简单的播放器,可以快速预览视频或音频。

5. 常用技巧和注意事项

  • 路径问题: 如果你的文件路径包含空格,需要用引号将路径包裹起来,例如 ffmpeg -i "My Video.mp4" output.mp4
  • 覆盖输出文件: 如果输出文件已存在,FFmpeg 默认会询问你是否覆盖。添加 -y 选项可以强制覆盖,例如 ffmpeg -y -i input.mp4 output.mp4
  • 无损复制: 使用 -c copy 可以无损复制音视频流,速度快但对输入和输出格式有要求。
  • 背景运行: 如果你希望在终端关闭后 FFmpeg 任务依然运行,可以使用 nohupscreen/tmux 等工具。

总结

FFmpeg 是一个非常强大且灵活的工具,它几乎可以满足你在 macOS 上进行所有音视频处理的需求。通过 Homebrew 安装后,你可以通过简单的命令行参数组合,完成复杂的任务。希望这篇指南能帮助你更好地理解和使用 FFmpeg,让你的音视频工作流更加顺畅高效!


滚动至顶部