share facebook facebook twitter menu hatena pocket slack

2019.05.09 THU

Homebrew の ffmpeg でいつの間にかインストールオプションが無くなってた件・・・

木村 智一

WRITTEN BY 木村 智一

GW は一人バイクで放浪の旅に出ます。
streampack 木村です。

1月にディスプレイ出力不良で交換してもらった業務 Macbook が頻繁に固まるんですよ。
日に何度もフリーズ、酷いときは勝手に再起動したりしてストレスがマッハに!

いい加減業務に支障をきたすので新しい Macbook に変えてもらい環境構築中。
ffmpeg をインストールしようとして以前と同じ方法
インストールコマンド一発! MAC の ffmpeg で H.265(HEVC) を使えるようにする
で brew で入れようとしたら

$ brew install ffmpeg --with-fdk-aac --with-freetype --with-libass --with-libvpx  --with-sdl2 --with-x265

Error: invalid option: --with-fdk-aac

怒られたよ! 何で??

Github を見てみる

https://github.com/Homebrew/homebrew-core/blob/master/Formula/ffmpeg.rb

option が無いよ・・・

ffmpeg.rb

class Ffmpeg < Formula
  desc "Play, record, convert, and stream audio and video"
  homepage "https://ffmpeg.org/"
  url "https://ffmpeg.org/releases/ffmpeg-4.1.3.tar.xz"
  sha256 "0c3020452880581a8face91595b239198078645e7d7184273b8bcc7758beb63d"
  head "https://github.com/FFmpeg/FFmpeg.git"

  bottle do
    sha256 "14a4dc07d1ffb6d44d90adb72185434d6c0127cf26a8ebd05ca64fa2c4baca56" => :mojave
    sha256 "761b20937690043ced7797a18538e5adf32cda5d557810dca030ddd0cd4cd5ec" => :high_sierra
    sha256 "8bf6a1fda6bc5adcb6dc1b89e1886dbdb2a8730d146d7fdd7ed43f4dee07d663" => :sierra
  end

  depends_on "nasm" => :build
  depends_on "pkg-config" => :build
  depends_on "texi2html" => :build

  depends_on "aom"
  depends_on "fontconfig"
  depends_on "freetype"
  depends_on "frei0r"
  depends_on "gnutls"
  depends_on "lame"
  depends_on "libass"
  depends_on "libbluray"
  depends_on "libsoxr"
  depends_on "libvorbis"
  depends_on "libvpx"
  depends_on "opencore-amr"
  depends_on "openjpeg"
  depends_on "opus"
  depends_on "rtmpdump"
  depends_on "rubberband"
  depends_on "sdl2"
  depends_on "snappy"
  depends_on "speex"
  depends_on "tesseract"
  depends_on "theora"
  depends_on "x264"
  depends_on "x265"
  depends_on "xvid"
  depends_on "xz"

  def install
    args = %W[
      --prefix=#{prefix}
      --enable-shared
      --enable-pthreads
      --enable-version3
      --enable-hardcoded-tables
      --enable-avresample
      --cc=#{ENV.cc}
      --host-cflags=#{ENV.cflags}
      --host-ldflags=#{ENV.ldflags}
      --enable-ffplay
      --enable-gnutls
      --enable-gpl
      --enable-libaom
      --enable-libbluray
      --enable-libmp3lame
      --enable-libopus
      --enable-librubberband
      --enable-libsnappy
      --enable-libtesseract
      --enable-libtheora
      --enable-libvorbis
      --enable-libvpx
      --enable-libx264
      --enable-libx265
      --enable-libxvid
      --enable-lzma
      --enable-libfontconfig
      --enable-libfreetype
      --enable-frei0r
      --enable-libass
      --enable-libopencore-amrnb
      --enable-libopencore-amrwb
      --enable-libopenjpeg
      --enable-librtmp
      --enable-libspeex
      --enable-videotoolbox
      --disable-libjack
      --disable-indev=jack
      --enable-libaom
      --enable-libsoxr
    ]

    system "./configure", *args
    system "make", "install"

    # Build and install additional FFmpeg tools
    system "make", "alltools"
    bin.install Dir["tools/*"].select { |f| File.executable? f }
  end

  test do
    # Create an example mp4 file
    mp4out = testpath/"video.mp4"
    system bin/"ffmpeg", "-filter_complex", "testsrc=rate=1:duration=1", mp4out
    assert_predicate mp4out, :exist?
  end
end

どうやら以下で消滅した模様

https://github.com/Homebrew/homebrew-core/commit/f75cb092032c2eb921ba0bcdcf6a45af5cf86714#diff-8f4deb87ce96b9c5efe97be3288bb406

んでどうすりゃ H.265 を使えるの?

何もしなくて良いです。デフォルトでインストールされます。全部入りです!

$ brew install ffmpeg
$ brew ls
aom         gmp         libogg          opencore-amr    snappy
cairo       gnutls      libpng          openjpeg        speex
ffmpeg      graphite2   libsamplerate   openssl         sqlite
flac        harfbuzz    libsndfile      opus            tesseract
fontconfig  icu4c       libsoxr         p11-kit         theora
freetype    jpeg        libtasn1        pcre            unbound
frei0r      lame        libtiff         pixman          webp
fribidi     leptonica   libunistring    python          x264
gdbm        libass      libvorbis       readline        x265
gettext     libbluray   libvpx          rtmpdump        xvid
giflib      libevent    little-cms2     rubberband      xz
glib        libffi      nettle          sdl2

最後に

オチとしては「インストールオプションが無くなってた」ってことなんですが、$ brew options ffmpeg でも何も表示されないし。
これが分かるまでに Error: invalid option: --with-fdk-aac でggったり、結構色々とネットの海をうろちょろしてしまいました。

ココとか
https://github.com/Homebrew/homebrew-core/issues/31510

ココとか
https://github.com/Homebrew/brew/issues/5732

オプション指定しなくていいのは楽ですが、全部入っちゃうのはどうなんでしょうねえ。

4/19追記

@ohokihai さんからコメントを頂戴したので。

一応記事のままでも内蔵AACはインストールされますので、-acodec aac でエンコードが可能です。

ただし、ffmpeg 公式でも品質は fdk-aac > 内蔵AAC と言われていますので、 fdk-aac を使いたい場合は https://github.com/varenc/homebrew-ffmpeg で今まで通りオプション付きでインストールすることができます。

https://trac.ffmpeg.org/wiki/Encode/HighQualityAudio

元記事はこちら

Homebrew の ffmpeg でいつの間にかインストールオプションが無くなってた件・・・

木村 智一

木村 智一

動画一筋! 犬と闘う streampack チームリーダー

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。