Error with Homebrew install of ffmpeg –with all options

homebrewinstall

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

Best Answer

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 a ffmpeg dependency. This means that an installation of ffmpeg 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?"