2

I'm trying to use sox in a AWS lambda function for conversion of FLAC file to MP3, but I cannot seem to build a version of sox with FLAC support.

I have found this great solution that I have been using but it doesn't support FLAC.

I've searched the net for alternatives but nothing seems to work. I've also read that at some stage FLAC support went missing but should have been fixed. I'm still looking for answers, but any help is appreciated.

Community
  • 1
  • 1

1 Answers1

5

You need to add the libvorbis and flac libraries to your static build and flag the sox build to include them. I have made changes to the script from your example questions to show you how this done.

    sudo yum update
    sudo yum install gcc44 gcc-c++ libgcc44 cmake –y

    # now grab sox and its dependencies
    mkdir -p deps
    mkdir -p deps/unpacked
    mkdir -p deps/built
    mkdir -p deps/built/libmad
    mkdir -p deps/built/sox
    mkdir -p deps/built/lame
    mkdir -p deps/built/libvorbis
    mkdir -p deps/built/flac
    wget -O deps/sox-14.4.2.tar.bz2 "http://downloads.sourceforge.net/project/sox/sox/14.4.2/sox-14.4.2.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fsox%2Ffiles%2Fsox%2F14.4.2%2F&ts=1416316415&use_mirror=heanet"
    wget -O deps/libmad-0.15.1b.tar.gz "http://downloads.sourceforge.net/project/mad/libmad/0.15.1b/libmad-0.15.1b.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fmad%2Ffiles%2Flibmad%2F0.15.1b%2F&ts=1416316482&use_mirror=heanet"
    wget -O deps/lame-3.99.5.tar.gz "http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Flame%2Ffiles%2Flame%2F3.99%2F&ts=1416316457&use_mirror=kent"
    wget -O deps/libvorbis-1.3.5.tar.xz "http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.xz"
    wget -O deps/flac-1.3.2.tar.xz "https://superb-dca2.dl.sourceforge.net/project/flac/flac-src/flac-1.3.2.tar.xz"

    # unpack the dependencie
    pushd deps/unpacked
    tar xvfp ../sox-14.4.2.tar.bz2
    tar xvfp ../libmad-0.15.1b.tar.gz
    tar xvfp ../lame-3.99.5.tar.gz
    tar xvfp ../libvorbis-1.3.5.tar.xz
    tar xvfp ../flac-1.3.2.tar.xz
    popd

    # build libmad, statically
    pushd deps/unpacked/libmad-0.15.1b
    ./configure --disable-shared --enable-static --prefix=$(realpath ../../built/libmad)
    # Patch makefile to remove -fforce-mem
    sed s/-fforce-mem//g < Makefile > Makefile.patched
    cp Makefile.patched Makefile
    make
    make install
    popd

    # build lame, statically
    pushd deps/unpacked/lame-3.99.5
    ./configure --disable-shared --enable-static --prefix=$(realpath ../../built/lame)
    make
    make install
    popd

    # build libvorbis, statically
    pushd deps/unpacked/libvorbis-1.3.5
    ./configure --disable-shared --enable-static --prefix=$(realpath ../../built/libvorbis)
    make
    make install
    popd

    # build flac, statically
    pushd deps/unpacked/flac-1.3.2
    ./configure --disable-shared --enable-static --prefix=$(realpath ../../built/flac)
    make
    make install
    popd

    # build sox, statically
    pushd deps/unpacked/sox-14.4.2
    ./configure --disable-shared --enable-static --prefix=$(realpath ../../built/sox) \
        LDFLAGS="-L$(realpath ../../built/libmad/lib) -L$(realpath ../../built/lame/lib) -L$(realpath ../../built/libvorbis/lib) -L$(realpath ../../built/flac/lib)" \
        CPPFLAGS="-I$(realpath ../../built/libmad/include) -I$(realpath ../../built/lame/include) -I$(realpath ../../built/libvorbis/include) -I$(realpath ../../built/flac/include)" \
        --with-mad --with-lame --with-libvorbis --with-flac --without-oggvorbis --without-oss --without-sndfile --without-gomp
    make -s
    make install
    popd

    cp deps/built/sox/bin/sox .
    rm -rf deps/built
    rm -rf deps/unpacked
kberryman
  • 101
  • 4