From 4a456e2083fdf588d9d89c3be96cb90156115bce Mon Sep 17 00:00:00 2001 From: Aman Gupta Date: Thu, 12 Sep 2013 14:26:28 -0700 Subject: [PATCH] add some automated ffmpeg instructions --- README.md | 5 ++ vendor/ffmpeg.rb | 120 +++++++++++++++++++++++++++++++++++++++++++ vendor/libaacplus.rb | 41 +++++++++++++++ 3 files changed, 166 insertions(+) create mode 100644 vendor/ffmpeg.rb create mode 100644 vendor/libaacplus.rb diff --git a/README.md b/README.md index 82d8a0e..3ff766f 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,11 @@ Wallop has only been tested running on OS X, though its just Ruby and FFMPEG, so You should have a modern version of FFMPEG compiled and installed. I'd suggest you just compile a fresh version from the most recent source. [Here](http://ffmpeg.org/trac/ffmpeg/wiki/MacOSXCompilationGuide) are good instructions on how get FFMPEG built for OS X. It's not that bad! +``` +$ cp vendor/libaacplus.rb /usr/local/Library/Formula/ +$ sudo brew install vendor/ffmpeg.rb --HEAD --with-fdk-aac --with-libaacplus --with-libvo-aacenc --with-schroedinger --with-opencore-amr +``` + ### Quickie Set Up Wallop is a simple Ruby server. All you need to do is clone it down, install its dependencies, and start it up! diff --git a/vendor/ffmpeg.rb b/vendor/ffmpeg.rb new file mode 100644 index 0000000..a1b1a11 --- /dev/null +++ b/vendor/ffmpeg.rb @@ -0,0 +1,120 @@ +require 'formula' + +class Ffmpeg < Formula + homepage 'http://ffmpeg.org/' + url 'http://ffmpeg.org/releases/ffmpeg-1.2.1.tar.bz2' + sha1 '930e5612d75d04fdf7c0579f4d85d47e31e38945' + + head 'git://git.videolan.org/ffmpeg.git' + + option "without-x264", "Disable H.264 encoder" + option "without-lame", "Disable MP3 encoder" + option "without-xvid", "Disable Xvid MPEG-4 video encoder" + + option "with-rtmpdump", "Enable RTMP protocol" + option "with-libvo-aacenc", "Enable VisualOn AAC encoder" + option "with-libass", "Enable ASS/SSA subtitle format" + option "with-openjpeg", 'Enable JPEG 2000 image format' + option 'with-openssl', 'Enable SSL support' + 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' + + depends_on 'pkg-config' => :build + + # manpages won't be built without texi2html + depends_on 'texi2html' => :build if MacOS.version >= :mountain_lion + depends_on 'yasm' => :build + + depends_on 'x264' => :recommended + depends_on 'faac' => :recommended + depends_on 'lame' => :recommended + depends_on 'xvid' => :recommended + + 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 'libvo-aacenc' => :optional + depends_on 'libaacplus' => :optional + depends_on 'libass' => :optional + depends_on 'openjpeg' => :optional + depends_on 'sdl' if build.include? 'with-ffplay' + 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 + + def install + args = ["--prefix=#{prefix}", + "--enable-shared", + "--enable-pthreads", + "--enable-gpl", + "--enable-postproc", + "--enable-version3", + "--enable-nonfree", + "--enable-hardcoded-tables", + "--enable-avresample", + "--enable-vda", + "--cc=#{ENV.cc}", + "--host-cflags=#{ENV.cflags}", + "--host-ldflags=#{ENV.ldflags}" + ] + + args << "--enable-libx264" if build.with? 'x264' + args << "--enable-libfaac" if build.with? 'faac' + args << "--enable-libmp3lame" if build.with? 'lame' + args << "--enable-libxvid" if build.with? 'xvid' + + 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-libvo-aacenc" if build.with? 'libvo-aacenc' + args << "--enable-libass" if build.with? 'libass' + args << "--enable-libaacplus" if build.with? 'libaacplus' + args << "--enable-ffplay" if build.include? 'with-ffplay' + 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' + + if build.with? 'openjpeg' + args << '--enable-libopenjpeg' + args << '--extra-cflags=' + %x[pkg-config --cflags libopenjpeg].chomp + end + + # For 32-bit compilation under gcc 4.2, see: + # http://trac.macports.org/ticket/20938#comment:22 + ENV.append_to_cflags "-mdynamic-no-pic" if Hardware.is_32_bit? && Hardware.cpu_type == :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.include? 'with-tools' + system "make alltools" + bin.install Dir['tools/*'].select {|f| File.executable? f} + end + end + +end diff --git a/vendor/libaacplus.rb b/vendor/libaacplus.rb new file mode 100644 index 0000000..c5a8e91 --- /dev/null +++ b/vendor/libaacplus.rb @@ -0,0 +1,41 @@ +require 'formula' + +class Libaacplus < Formula + homepage 'http://tipok.org.ua/node/17' + url 'http://217.20.164.161/~tipok/aacplus/libaacplus-2.0.2.tar.gz' + sha1 '86c492fa38b378373908ec1ff1ef2187b48239c5' + + depends_on 'autoconf' => :build + depends_on 'automake' => :build + depends_on 'libtool' => :build + + def patches + # configure.ac:8: error: 'AM_CONFIG_HEADER': this macro is obsolete. You should use the 'AC_CONFIG_HEADERS' macro instead. + DATA + end + + def install + ENV.llvm if MacOS.xcode_version >= "4.2" # This fields contains dirty hack + ENV.gcc if MacOS.xcode_version < "4.2" # to provide ability install aacplus library + ENV.deparallelize + inreplace 'autogen.sh', 'libtool', 'glibtool' + system "./autogen.sh", "--disable-dependency-tracking", + "--prefix=#{prefix}", "--disable-libtool-lock" + inreplace "Makefile", "distdir = $(PACKAGE)-$(VERSION)", "distdir = #{pwd}" + system "make" + system "make install" + end +end + +__END__ +--- a/configure.ac 2013-02-16 02:03:59.000000000 +0400 ++++ b/configure.ac 2013-02-16 02:04:10.000000000 +0400 +@@ -5,7 +5,7 @@ + #AM_INIT_AUTOMAKE([dist-bzip2]) + AM_INIT_AUTOMAKE + +-AM_CONFIG_HEADER(config.h) ++AC_CONFIG_HEADERS(config.h) + AC_CONFIG_MACRO_DIR([m4]) + # Checks for programs. + AC_PROG_CC