homebrew-core/Formula/ffmpeg.rb
Zhiming Wang e6419c2503 ffmpeg 3.0
https://github.com/FFmpeg/FFmpeg/releases/tag/n3.0.

FFmpeg 3.0 dropped support for several external libraries; relevant to
this formula are libvo-aacenv and libquvi. See
Changelog (https://github.com/FFmpeg/FFmpeg/blob/n3.0/Changelog#L4-L71)
for details.

Developments on the AAC encoding front are especially notable. To quote
two official announcements:

(TL;DR: 1. The native FFmpeg AAC encoder has gone stable, and it has
           the advantage of being un-license-encumbered;
        2. If you are currently using libvo-aacenc or libaacplus,
           consider switching to aac or libfdk_aac. aac is almost a
           drop-in replacement for libvo-aacenc; fdk-aac is better than
           aacplus but you need to learn profiles and options.)

  December 5th, 2015, The native FFmpeg AAC encoder is now
  stable! (https://ffmpeg.org/index.html#aac_encoder_stable):

    After seven years the native FFmpeg AAC encoder has had its
    experimental flag removed and declared as ready for general use. The
    encoder is transparent at 128kbps for most samples tested with
    artifacts only appearing in extreme cases. Subjective quality tests
    put the encoder to be of equal or greater quality than most of the
    other encoders available to the public.

    Licensing has always been an issue with encoding AAC audio as most
    of the encoders have had a license making FFmpeg unredistributable
    if compiled with support for them. The fact that there now exists a
    fully open and truly free AAC encoder integrated directly within the
    project means a lot to those who wish to use accepted and widespread
    standards.

    ...

  January 30, 2016, Removing support for two external AAC
  encoders (https://ffmpeg.org/index.html#removing_external_aac_encoders):

    ...

    The circumstances for both have changed. After the work
    spearheaded by Rostislav Pehlivanov and Claudio Freire, the
    now-stable FFmpeg native AAC encoder is ready to compete with much
    more mature encoders. The Fraunhofer FDK AAC Codec Library for
    Android was added in 2012 as the fourth supported external AAC
    encoder, and the one with the best quality and the most features
    supported, including HE-AAC and HE-AACv2.

    Therefore, we have decided that it is time to remove libvo-aacenc
    and libaacplus. If you are currently using libvo-aacenc, prepare to
    transition to the native encoder (aac) when updating to the next
    version of FFmpeg. In most cases it is as simple as merely swapping
    the encoder name. If you are currently using libaacplus, start using
    FDK AAC (libfdk_aac) with an appropriate profile option to select
    the exact AAC profile that fits your needs. In both cases, you will
    enjoy an audible quality improvement and as well as fewer licensing
    headaches.
2016-02-22 01:11:15 +00:00

191 lines
7.5 KiB
Ruby

class Ffmpeg < Formula
desc "Play, record, convert, and stream audio and video"
homepage "https://ffmpeg.org/"
url "https://ffmpeg.org/releases/ffmpeg-3.0.tar.bz2"
sha256 "f19ff77a2f7f736a41dd1499eef4784bf3cb7461f07c13a268164823590113c0"
head "https://github.com/FFmpeg/FFmpeg.git"
bottle do
sha256 "e94b8ef2acf9d3dcddf595fe45d26194f64421b571437fd5c0d1e877c2b4091b" => :el_capitan
sha256 "2c14712c0972cb17a4077e90585ecacef45b4f9cf4d8dd7620d8bd47262f916a" => :yosemite
sha256 "c83613651d30e5de7e5df44199fe1ec5df488b0685f3cc622bb1f1af1bf22eae" => :mavericks
end
option "without-x264", "Disable H.264 encoder"
option "without-lame", "Disable MP3 encoder"
option "without-xvid", "Disable Xvid MPEG-4 video encoder"
option "without-qtkit", "Disable deprecated QuickTime framework"
option "with-rtmpdump", "Enable RTMP protocol"
option "with-libass", "Enable ASS/SSA subtitle format"
option "with-opencore-amr", "Enable Opencore AMR NR/WB audio format"
option "with-openjpeg", "Enable JPEG 2000 image format"
option "with-openssl", "Enable SSL support"
option "with-libssh", "Enable SFTP protocol via libssh"
option "with-schroedinger", "Enable Dirac video format"
option "with-ffplay", "Enable FFplay media player"
option "with-tools", "Enable additional FFmpeg tools"
option "with-fdk-aac", "Enable the Fraunhofer FDK AAC library"
option "with-libvidstab", "Enable vid.stab support for video stabilization"
option "with-x265", "Enable x265 encoder"
option "with-libsoxr", "Enable the soxr resample library"
option "with-webp", "Enable using libwebp to encode WEBP images"
option "with-zeromq", "Enable using libzeromq to receive commands sent through a libzeromq client"
option "with-snappy", "Enable Snappy library"
option "with-dcadec", "Enable dcadec library"
depends_on "pkg-config" => :build
# manpages won't be built without texi2html
depends_on "texi2html" => :build
depends_on "yasm" => :build
depends_on "x264" => :recommended
depends_on "lame" => :recommended
depends_on "xvid" => :recommended
depends_on "faac" => :optional
depends_on "fontconfig" => :optional
depends_on "freetype" => :optional
depends_on "theora" => :optional
depends_on "libvorbis" => :optional
depends_on "libvpx" => :optional
depends_on "rtmpdump" => :optional
depends_on "opencore-amr" => :optional
depends_on "libass" => :optional
depends_on "openjpeg" => :optional
depends_on "sdl" if build.with? "ffplay"
depends_on "snappy" => :optional
depends_on "speex" => :optional
depends_on "schroedinger" => :optional
depends_on "fdk-aac" => :optional
depends_on "opus" => :optional
depends_on "frei0r" => :optional
depends_on "libcaca" => :optional
depends_on "libbluray" => :optional
depends_on "libsoxr" => :optional
depends_on "libvidstab" => :optional
depends_on "x265" => :optional
depends_on "openssl" => :optional
depends_on "libssh" => :optional
depends_on "webp" => :optional
depends_on "zeromq" => :optional
depends_on "libbs2b" => :optional
depends_on "dcadec" => :optional
def install
args = ["--prefix=#{prefix}",
"--enable-shared",
"--enable-pthreads",
"--enable-gpl",
"--enable-version3",
"--enable-hardcoded-tables",
"--enable-avresample",
"--cc=#{ENV.cc}",
"--host-cflags=#{ENV.cflags}",
"--host-ldflags=#{ENV.ldflags}",
]
args << "--enable-opencl" if MacOS.version > :lion
args << "--enable-libx264" if build.with? "x264"
args << "--enable-libmp3lame" if build.with? "lame"
args << "--enable-libxvid" if build.with? "xvid"
args << "--enable-libsnappy" if build.with? "snappy"
args << "--enable-libfontconfig" if build.with? "fontconfig"
args << "--enable-libfreetype" if build.with? "freetype"
args << "--enable-libtheora" if build.with? "theora"
args << "--enable-libvorbis" if build.with? "libvorbis"
args << "--enable-libvpx" if build.with? "libvpx"
args << "--enable-librtmp" if build.with? "rtmpdump"
args << "--enable-libopencore-amrnb" << "--enable-libopencore-amrwb" if build.with? "opencore-amr"
args << "--enable-libfaac" if build.with? "faac"
args << "--enable-libass" if build.with? "libass"
args << "--enable-ffplay" if build.with? "ffplay"
args << "--enable-libssh" if build.with? "libssh"
args << "--enable-libspeex" if build.with? "speex"
args << "--enable-libschroedinger" if build.with? "schroedinger"
args << "--enable-libfdk-aac" if build.with? "fdk-aac"
args << "--enable-openssl" if build.with? "openssl"
args << "--enable-libopus" if build.with? "opus"
args << "--enable-frei0r" if build.with? "frei0r"
args << "--enable-libcaca" if build.with? "libcaca"
args << "--enable-libsoxr" if build.with? "libsoxr"
args << "--enable-libvidstab" if build.with? "libvidstab"
args << "--enable-libx265" if build.with? "x265"
args << "--enable-libwebp" if build.with? "webp"
args << "--enable-libzmq" if build.with? "zeromq"
args << "--enable-libbs2b" if build.with? "libbs2b"
args << "--enable-libdcadec" if build.with? "dcadec"
args << "--disable-indev=qtkit" if build.without? "qtkit"
if build.with? "openjpeg"
args << "--enable-libopenjpeg"
args << "--disable-decoder=jpeg2000"
args << "--extra-cflags=" + `pkg-config --cflags libopenjpeg`.chomp
end
# These librares are GPL-incompatible, and require ffmpeg be built with
# the "--enable-nonfree" flag, which produces unredistributable libraries
if %w[faac fdk-aac openssl].any? { |f| build.with? f }
args << "--enable-nonfree"
end
# A bug in a dispatch header on 10.10, included via CoreFoundation,
# prevents GCC from building VDA support. GCC has no problems on
# 10.9 and earlier.
# See: https://github.com/Homebrew/homebrew/issues/33741
if MacOS.version < :yosemite || ENV.compiler == :clang
args << "--enable-vda"
else
args << "--disable-vda"
end
# For 32-bit compilation under gcc 4.2, see:
# https://trac.macports.org/ticket/20938#comment:22
ENV.append_to_cflags "-mdynamic-no-pic" if Hardware.is_32_bit? && Hardware::CPU.intel? && ENV.compiler == :clang
system "./configure", *args
if MacOS.prefer_64_bit?
inreplace "config.mak" do |s|
shflags = s.get_make_var "SHFLAGS"
if shflags.gsub!(" -Wl,-read_only_relocs,suppress", "")
s.change_make_var! "SHFLAGS", shflags
end
end
end
system "make", "install"
if build.with? "tools"
system "make", "alltools"
bin.install Dir["tools/*"].select { |f| File.executable? f }
end
end
def caveats
if build.without? "faac" then <<-EOS.undent
The native FFmpeg AAC encoder has been stable since FFmpeg 3.0. If you
were using libvo-aacenc or libaacplus, both of which have been dropped in
FFmpeg 3.0, please consider switching to the native encoder (-c:a aac),
fdk-aac (-c:a libfdk_aac, ffmpeg needs to be installed with the
--with-fdk-aac option), or faac (-c:a libfaac, ffmpeg needs to be
installed with the --with-faac option).
See the announcement
https://ffmpeg.org/index.html#removing_external_aac_encoders for details,
and https://trac.ffmpeg.org/wiki/Encode/AAC on best practices of encoding
AAC with FFmpeg.
EOS
end
end
test do
# Create an example mp4 file
system "#{bin}/ffmpeg", "-y", "-filter_complex",
"testsrc=rate=1:duration=1", "#{testpath}/video.mp4"
assert (testpath/"video.mp4").exist?
end
end