Error with Homebrew install of ffmpeg --with all options
After installing ffmpeg using Homebrew on my late 2012 MacBook Air i7 with macOS 10.12.3, I get this message:
Error: File exists - /usr/local/opt/ffmpeg/.brew
This path is a link to /usr/local/Cellar/ffmpeg/3.2.2/.brew
which ls -al
reveals to contain only the Ruby file, "ffmpeg.rb"
Prior to this I'd installed ffmpeg successfully using brew install ffmpeg
but then uninstalled it to re-install with all the options per brew options ffmpeg
:
brew install ffmpeg --with-chromaprint --with-fdk-aac --with-fontconfig --with-freetype --with-frei0r --with-game-music-emu --with-libass --with-libbluray --with-libbs2b --with-libcaca --with-libebur128 --with-libgsm --with-libmodplug --with-libsoxr --with-libssh --with-libvidstab --with-libvorbis --with-libvpx --with-opencore-amr --with-openh264 --with-openjpeg --with-openssl --with-opus --with-rtmpdump --with-rubberband --with-schroedinger --with-sdl2 --with-snappy --with-speex --with-tesseract --with-theora --with-tools --with-two-lame --with-wavpack --with-webp --with-x265 --with-xz --with-zeromq --with-zimg
Now instead of a successful installation end message I get this:
...
==> make install
==> make alltools
Error: File exists - /usr/local/opt/ffmpeg/.brew
With brew uninstall ffmpeg
I've deleted the /usr/local/opt/ffmpeg/
linked directory and the actual /usr/local/Cellar/ffmpeg/
directory. I tried the install again but I get the same error. Of note, it appears that ffmpeg is successfully installed:
$ ffmpeg -version
ffmpeg version 3.2.2 Copyright (c) 2000-2016 the FFmpeg developers
built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.2.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-chromaprint --enable-ffplay --enable-frei0r --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libebur128 --enable-libfdk-aac --enable-libfontconfig --enable-libfreetype --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopus --enable-librtmp --enable-librubberband --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtesseract --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg --enable-libzmq --enable-opencl --enable-openssl --enable-lzma --enable-libopenjpeg --disable-decoder=jpeg2000 --extra-cflags=-I/usr/local/Cellar/openjpeg/2.1.2/include/openjpeg-2.1 --enable-nonfree --enable-vda
libavutil 55. 34.100 / 55. 34.100
libavcodec 57. 64.101 / 57. 64.101
libavformat 57. 56.100 / 57. 56.100
libavdevice 57. 1.100 / 57. 1.100
libavfilter 6. 65.100 / 6. 65.100
libavresample 3. 1. 0 / 3. 1. 0
libswscale 4. 2.100 / 4. 2.100
libswresample 2. 3.100 / 2. 3.100
libpostproc 54. 1.100 / 54. 1.100
Of note, I have used brew prune
, brew update
, brew upgrade
, brew cleanup
, brew doctor
and
$ brew -v
Homebrew 1.1.8
Homebrew/homebrew-core (git revision 35fb; last commit 2017-01-29)
Also of note, considering the error message comes while the install is in the ==> make alltools
phase, I notice in the /usr/local/opt/ffmpeg/.brew/ffmpeg.rb
file the following code:
class Ffmpeg < Formula
...
def install
...
if build.with? "tools"
system "make", "alltools"
bin.install Dir["tools/*"].select { |f| File.executable? f }
end
end
...
end
I am not sure if this is related but since I am using thw --with-tools
option, perhaps the bin.install
is raising the error?
Even with the error message, the resulting install has ffmpeg, ffprobe, ffserver but ffplay
is not recognized as a command...
The INSTALL_RECEIPT.json file indicates that none of the options are being used:
{"homebrew_version":null,"used_options":[],"unused_options":["--with-fdk-aac","--with-libass","--with-libebur128","--with-libsoxr","--with-libssh","--with-tesseract","--with-libvidstab","--with-opencore-amr","--with-openh264","--with-openjpeg","--with-openssl","--with-rtmpdump","--with-rubberband","--with-schroedinger","--with-sdl2","--with-snappy","--with-tools","--with-webp","--with-x265","--with-xz","--with-zeromq","--with-zimg","--without-lame","--without-qtkit","--without-securetransport","--without-x264","--without-xvid","--with-fontconfig","--with-freetype","--with-frei0r","--with-game-music-emu","--with-libbluray","--with-libbs2b","--with-libcaca","--with-libgsm","--with-libmodplug","--with-libvorbis","--with-libvpx","--with-opus","--with-speex","--with-theora","--with-two-lame","--with-wavpack"],"built_as_bottle":true,"poured_from_bottle":true,"installed_as_dependency":true,"installed_on_request":false,"changed_files":["INSTALL_RECEIPT.json","lib/pkgconfig/libavcodec.pc","lib/pkgconfig/libavdevice.pc","lib/pkgconfig/libavfilter.pc","lib/pkgconfig/libavformat.pc","lib/pkgconfig/libavresample.pc","lib/pkgconfig/libavutil.pc","lib/pkgconfig/libpostproc.pc","lib/pkgconfig/libswresample.pc","lib/pkgconfig/libswscale.pc","share/man/man1/ffmpeg-all.1","share/man/man1/ffmpeg-filters.1","share/man/man1/ffprobe-all.1","share/man/man1/ffserver-all.1","share/man/man1/ffserver.1"],"time":1485728076,"source_modified_time":1480980538,"HEAD":null,"stdlib":null,"compiler":"clang","runtime_dependencies":null,"source":{"path":"/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/ffmpeg.rb","tap":"homebrew/core","spec":"stable","versions":{"stable":"3.2.2","devel":null,"head":"HEAD","version_scheme":0}}}
(extra line for ease of scroll viewing)
Why is this error message getting reported and what do I need to do for a successful install with all the options?
--------------------------UPDATE
Using $ brew install ffmpeg --force --with...
all the above options I still get the same error, but, using:
$ brew unlink ffmpeg && brew link ffmpeg
I unlinked 84 symlinks and then linked 114 (an additional 30 not linked with the install). With that I now at least have ffplay and the INSTALL_RECEIPT.json file has stuff in the "used" section:
{"homebrew_version":"1.1.8","used_options":["--with-chromaprint","--with-fdk-aac","--with-fontconfig","--with-freetype","--with-frei0r","--with-game-music-emu","--with-libass","--with-libbluray","--with-libbs2b","--with-libcaca","--with-libebur128","--with-libgsm","--with-libmodplug","--with-libsoxr","--with-libssh","--with-libvidstab","--with-libvorbis","--with-libvpx","--with-opencore-amr","--with-openh264","--with-openjpeg","--with-openssl","--with-opus","--with-rtmpdump","--with-rubberband","--with-schroedinger","--with-sdl2","--with-snappy","--with-speex","--with-tesseract","--with-theora","--with-tools","--with-two-lame","--with-wavpack","--with-webp","--with-x265","--with-xz","--with-zeromq","--with-zimg"],"unused_options":["--without-lame","--without-qtkit","--without-securetransport","--without-x264","--without-xvid"],"built_as_bottle":false,"poured_from_bottle":false,"installed_as_dependency":false,"installed_on_request":true,"changed_files":null,"time":1485730992,"source_modified_time":1480980538,"HEAD":"e59ada508727f11464595893783beb914c26f60b","stdlib":"libcxx","compiler":"clang","runtime_dependencies":[{"full_name":"lame","version":"3.99.5"},{"full_name":"x264","version":"r2748"},{"full_name":"xvid","version":"1.3.4"},{"full_name":"chromaprint","version":"1.3"},{"full_name":"fdk-aac","version":"0.1.5"},{"full_name":"libpng","version":"1.6.28"},{"full_name":"freetype","version":"2.7.1"},{"full_name":"fontconfig","version":"2.12.1"},{"full_name":"frei0r","version":"1.4"},{"full_name":"game-music-emu","version":"0.6.1"},{"full_name":"gettext","version":"0.19.8.1"},{"full_name":"libffi","version":"3.0.13"},{"full_name":"pcre","version":"8.39"},{"full_name":"glib","version":"2.50.2"},{"full_name":"fribidi","version":"0.19.7"},{"full_name":"libass","version":"0.13.6"},{"full_name":"libbluray","version":"0.9.3"},{"full_name":"flac","version":"1.3.2"},{"full_name":"libogg","version":"1.3.2"},{"full_name":"libvorbis","version":"1.3.5"},{"full_name":"libsndfile","version":"1.0.26"},{"full_name":"libbs2b","version":"3.1.0"},{"full_name":"libcaca","version":"0.99b19"},{"full_name":"speex","version":"1.2.0"},{"full_name":"libebur128","version":"1.2.0"},{"full_name":"libgsm","version":"1.0.13"},{"full_name":"libmodplug","version":"0.8.8.5"},{"full_name":"libsoxr","version":"0.1.2"},{"full_name":"openssl","version":"1.0.2k"},{"full_name":"libssh","version":"0.7.3"},{"full_name":"libvidstab","version":"0.98b"},{"full_name":"libvpx","version":"1.6.1"},{"full_name":"opencore-amr","version":"0.1.4"},{"full_name":"openh264","version":"1.6.0"},{"full_name":"little-cms2","version":"2.8"},{"full_name":"jpeg","version":"8d"},{"full_name":"xz","version":"5.2.3"},{"full_name":"libtiff","version":"4.0.7"},{"full_name":"openjpeg","version":"2.1.2"},{"full_name":"opus","version":"1.1.4"},{"full_name":"rtmpdump","version":"2.4+20151223"},{"full_name":"libsamplerate","version":"0.1.9"},{"full_name":"rubberband","version":"1.8.1"},{"full_name":"orc","version":"0.4.26"},{"full_name":"schroedinger","version":"1.0.11"},{"full_name":"sdl2","version":"2.0.5"},{"full_name":"snappy","version":"1.1.4"},{"full_name":"webp","version":"0.5.2"},{"full_name":"leptonica","version":"1.74.1"},{"full_name":"tesseract","version":"3.04.01"},{"full_name":"theora","version":"1.1.1"},{"full_name":"two-lame","version":"0.3.13"},{"full_name":"wavpack","version":"5.1.0"},{"full_name":"x265","version":"2.2"},{"full_name":"zeromq","version":"4.2.1"},{"full_name":"zimg","version":"2.4"}],"source":{"path":"/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/ffmpeg.rb","tap":"homebrew/core","spec":"stable","versions":{"stable":"3.2.2","devel":null,"head":"HEAD","version_scheme":0}}}
(extra line for ease of scroll viewing)
I recently upgraded from macOS 10.12.2 to 10.12.3 but Homebrew appears up to date as well as xcode-select version 2347
.
--------------------------UPDATE with pertinent --debug output
$ brew install ffmpeg --debug --with-chromaprint --with-fdk-aac --with-fontconfig --with-freetype --with-frei0r --with-game-music-emu --with-libass --with-libbluray --with-libbs2b --with-libcaca --with-libebur128 --with-libgsm --with-libmodplug --with-libsoxr --with-libssh --with-libvidstab --with-libvorbis --with-libvpx --with-opencore-amr --with-openh264 --with-openjpeg --with-openssl --with-opus --with-rtmpdump --with-rubberband --with-schroedinger --with-sdl2 --with-snappy --with-speex --with-tesseract --with-theora --with-tools --with-two-lame --with-wavpack --with-webp --with-x265 --with-xz --with-zeromq --with-zimg
...
==> make install
==> make alltools
...
Fixing /usr/local/opt/ffmpeg/lib/pkgconfig/libavresample.pc permissions from 644 to 444
Fixing /usr/local/opt/ffmpeg/lib/pkgconfig/libavutil.pc permissions from 644 to 444
Fixing /usr/local/opt/ffmpeg/lib/pkgconfig/libpostproc.pc permissions from 644 to 444
Fixing /usr/local/opt/ffmpeg/lib/pkgconfig/libswresample.pc permissions from 644 to 444
Fixing /usr/local/opt/ffmpeg/lib/pkgconfig/libswscale.pc permissions from 644 to 444
Error: File exists - /usr/local/opt/ffmpeg/.brew
/usr/local/Homebrew/Library/Homebrew/formula_installer.rb:297:in `mkdir'
/usr/local/Homebrew/Library/Homebrew/formula_installer.rb:297:in `mkdir'
/usr/local/Homebrew/Library/Homebrew/formula_installer.rb:297:in `install'
/usr/local/Homebrew/Library/Homebrew/cmd/install.rb:306:in `install_formula'
/usr/local/Homebrew/Library/Homebrew/cmd/install.rb:199:in `block in install'
/usr/local/Homebrew/Library/Homebrew/cmd/install.rb:199:in `each'
/usr/local/Homebrew/Library/Homebrew/cmd/install.rb:199:in `install'
/usr/local/Homebrew/Library/Homebrew/brew.rb:94:in `<main>'
$
Also filed bug report to Homebrew
Per input from the Homebrew bug report, the problem is specific to installing the chromaprint
option:
The issue seems to be that
chromaprint
is being built with examples by default, and therefore has affmpeg
dependency. This means that an installation offfmpeg
is already linked by the time the main build actually begins.
Installing FFmpeg with all the Homebrew options except chromaprint
reports no errors.
Of note, installing without the chromaprint
flag, ffplay
works after the install without the need for using the additional command: brew unlink ffmpeg && brew link ffmpeg
.
Also of note, installation of ffmpeg
with the chromaprint
option seems to prevent ffplay
from becoming available. I am not sure what else might be compromised by this Homebrew installation bug, but otherwise, ffmpeg
seems functional when installed with the chromaprint
option. Even with the error message, an installation using the --with-chromaprint
option renders the install enabled with the chromaprint
option (per the INSTALL_RECEIPT.json file and the "enabled options" reported in the configuration) - including fpcalc
.
FFMPEG document on chromaprint formats.
Lukáš Lalinský's "Introducing Chromaprint" and "How does Chromaprint work?"