有没有一个好的地方或 bash 脚本可以用来(或者至少我可以自己构建一个版本)在 OS X 上使用 FFmpeg?
我已经安装了 Xcode 以及 Xcode 的 CLI(gcc
等等)。
我当前安装了某个版本的 FFmpeg,但不知何故我在 libx264 和 libvpx 上遇到了分段错误(我无法转换为 MP4 和 WebM)。
我想要做的就是将视频文件批量转换为 HTML5 兼容视频。我所有的源视频都由 .mov .mp4 和 .wmv 文件组成。顺便说一下,.ogv 工作正常。
真正的问题是:
- 如何立即卸载 Mac 上的 FFmpeg
- 重新安装可以转换为 .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
我建议使用ffmpeg
via来代替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
,我必须安装超过八十额外的依赖包!