在 OS X 上安装 FFmpeg

在 OS X 上安装 FFmpeg

有没有一个好的地方或 bash 脚本可以用来(或者至少我可以自己构建一个版本)在 OS X 上使用 FFmpeg?

我已经安装了 Xcode 以及 Xcode 的 CLI(gcc等等)。

我当前安装了某个版本的 FFmpeg,但不知何故我在 libx264 和 libvpx 上遇到了分段错误(我无法转换为 MP4 和 WebM)。

我想要做的就是将视频文件批量转换为 HTML5 兼容视频。我所有的源视频都由 .mov .mp4 和 .wmv 文件组成。顺便说一下,.ogv 工作正常。

真正的问题是:

  1. 如何立即卸载 Mac 上的 FFmpeg
  2. 重新安装可以转换为 .mp4、.webm 和 .ogv 的 FFmpeg 版本

我也尝试了 Miro 视频转换器的预编译版本,但不知何故它也不起作用。

答案1

有四个选项,按复杂程度排序:

  • Homebrew(或其他包管理器)
  • 静态构建
  • Docker
  • 自己编译

为了完成此操作,您需要具备一些在 macOS 下使用终端/shell 的知识。


1. 自制

自制有一个稳定 FFmpeg 版本的公式。这将使您运行得非常快。首先,安装 Homebrew。

然后通过以下公式安装FFmpeg ffmpeg

brew install ffmpeg

这将下载很多依赖项,例如 x264,但之后您就可以开始了。

要稍后更新 ffmpeg,请运行:

brew update && brew upgrade ffmpeg

2. 静态构建

FFmpeg 项目下载页面,提供 的静态构建链接ffmpeg,您可以直接下载、提取并在终端中使用。

静态版本无法包含所有可能的编码器,主要是由于许可问题。这就是为什么我不建议使用它们,除非你真的不在乎你需要哪些特定功能。

下载后,解压文件,打开终端应用程序,然后导航到解压文件的目录,即找到名为 的文件ffmpeg。将此文件复制到/usr/local/bin

cd ~/Downloads/
sudo mkdir -p /usr/local/bin/
sudo cp ./ffmpeg /usr/local/bin
sudo chmod ugo+x /usr/local/bin/ffmpeg

现在,如果您使用 Bash(默认 shell),请将其添加到您的 $PATH:

open -e ~/.bash_profile

将其添加到文件末尾:

export PATH="/usr/local/bin:$PATH"

保存并关闭编辑器。现在重新启动终端并which ffmpeg返回/usr/local/bin/ffmpeg


3. Docker

如果你有Docker安装后,您可以运行预装的 Docker 容器ffmpeg

例如,有各种 ffmpeg Docker 镜像linuxserver/ffmpeg(看其他答案以下)。

要运行此图像以将input.mkv文件转换为输出文件,请打开终端并运行:

docker run --rm -it \
  -v $(pwd):/config \
  linuxserver/ffmpeg \
  -i /config/input.mkv \
  -c:v libx264 \
  -b:v 4M \
  -vf scale=1280:720 \
  -c:a copy \
  /config/output.mkv

请注意,这$(pwd)将是您当前的工作目录,并且该命令要求该目录包含引用的输入文件input.mkv。该文件将是安装进入容器(进入/config目录)。


4. 自己编译

当然,你可以自己构建 FFmpeg 工具,如下所示OS X 编译指南。本指南将始终保持最新,通过手动编译,您可能能够调整一些参数。


要卸载您安装的任何版本的 FFmpeg,我们首先需要知道您是如何安装它的。由于 Homebrew 将安装到/usr/local/Cellar,并符号链接到/usr/local/bin/ffmpeg,因此它可能不会对其他库造成任何问题。但是,请检查make install您(据称)自己构建的版本的脚本,看看它们将 FFmpeg 放在哪里。然后只需从那里删除它们 - 它不会干扰 Homebrew。

分段错误可能是由于 x264 或 libvpx 库之间的链接不正确造成的。由于 Homebrew 会处理这个问题,因此您不会遇到任何问题。

答案2

在新的 ARM 硅片(M1 芯片)上安装 FFmpeg: 通过终端安装 Rosetta2:

/usr/sbin/softwareupdate --install-rosetta --agree-to-license

安装 Rosetta2 后,我们就可以为 ARM M1 芯片安装 Homebrew:

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

安装完成后,使用下一个 Homebrew 命令安装 ffmpeg: arch -x86_64 brew install ffmpeg

答案3

homebrew我建议使用ffmpegvia来代替docker

docker run --rm -it \
  -v $(pwd):/config \
  linuxserver/ffmpeg \
  -i /config/input.mkv \
  -c:v libx264 \
  -b:v 4M \
  -vf scale=1280:720 \
  -c:a copy \
  /config/output.mkv

该docker镜像来自:https://hub.docker.com/r/linuxserver/ffmpeg


上次我ffmpeg通过 homebrew 安装时,得到了以下输出:

> brew install ffmpeg
==> Fetching dependencies for ffmpeg: giflib, highway, imath, jpeg-turbo,
libpng, openexr, xz, libtiff, webp, jpeg-xl, libvmaf, aom, dav1d, freetype,
fontconfig, frei0r, gmp, bdw-gc, libtool, libunistring, guile, libidn2,
libtasn1, nettle, p11-kit, unbound, gnutls, lame, fribidi, pcre2, glib,
xorgproto, libxau, libxdmcp, libxcb, libx11, libxext, libxrender, lzo,
pixman, cairo, graphite2, harfbuzz, libunibreak, libass, libbluray,
cjson, cmocka, mbedtls, librist, libsoxr, libvidstab, libogg, libvorbis,
libvpx, opencore-amr, little-cms2, openjpeg, opus, rav1e, flac, mpg123,
libsndfile, libsamplerate, rubberband, sdl2, snappy, speex, srt, leptonica,
libb2, libarchive, pango, tesseract, theora, x264, x265, xvid, libsodium,
zeromq and zimg

为了安装ffmpeg,我必须安装超过八十额外的依赖包!

相关内容