Skip to content
Louis Maddox edited this page Feb 12, 2021 · 25 revisions

SoX lists MP4 support on its features page:

MP4, AAC, AC3, WAVPACK, AMR-NB files (with optional ffmpeg library)

So install ffmpeg:

sudo apt install ffmpeg

To check the formats sox and ffmpeg will read:

sox --help-format all
ffmpeg -formats
ffmpeg -codecs
  • ffmpeg -formats gives a line:

      E mp4             MP4 (MPEG-4 Part 14)
    

    in which the E indicates "Muxing supported"

To test out the support:

sox output.mp4 output.wav

sox FAIL formats: no handler for file extension `mp4'

or even simply use the play utility SoX provides:

play output.mp4

play WARN alsa: can't encode 0-bit Unknown or not applicable
play FAIL formats: no handler for file extension `mp4'

Since sox doesn't work with ffmpeg to read MP4 'out of the box' (i.e. from pre-built binary) we will follow this suggestion:

Yes..sox has support for mp4, m4p, & m4a. They're marked as optional in the pdf manual. Perhaps one has to compile sox from the source files e.g. the sox(version number).tar.gz source package...unpack it using an archive manager, then do something like make, make install, etc... while including the additional option for the mp4 types of files. Checkout the README file in the package to make sure.

First remove the apt-installed binary and any other libraries it pulled in:

sudo apt purge --autoremove sox

The following packages will be REMOVED
  libsox-fmt-alsa* libsox-fmt-base* libsox3* sox*

The source code can be downloaded from the repo as

git clone https://git.code.sf.net/p/sox/code sox-code

in which the README.osx (by which they mean Unix, i.e. OSX and Linux)

In an appendix, the README says:

Appendix - MP3 Support

SoX contains support for reading and writing MP3 files but does not ship with the dylib's that perform decoding and encoding of MP3 data because of patent restrictions. For further details, refer to:

https://en.wikipedia.org/wiki/MP3#Licensing_and_patent_issues

MP3 support can be enabled by placing Lame encoding library and/or MAD decoding library into a standard library search location such as /usr/lib or set LTDL_LIBRARY_PATH to location.

These can be compiled yourself, they may turn up on searches of the internet or may be included with other MP3 applications already installed on your system. Try searching for libmp3lame.dylib and libmad.dylib.

Obtain the latest Lame and MAD source code from approprate locations.

If your system is setup to compile software, then the following commands can be used. Note: since SoX is distributed as a 32-bit i386 binary, the library must match that format as well:

cd lame-398-2
./configure CFLAGS="-arch i386 -m32" LDFALGS="-arch i386"
make
sudo make install


cd libmad-0.15.1b
./configure CFLAGS="-arch i386 -m32" LDFALGS="-arch i386"
make
sudo make install

So even though it's not stated, we can compare this instruction to the listing for MP3 on the features page:

MP2/MP3 (with optional libmad, libtwolame and libmp3lame libraries)

So by rephrasing the MP3 instructions, we can surmise that the requirements for MP4 will be something like:

  • "placing FFMPEG encoding library and/or FFMPEG decoding library into a standard library search location such as /usr/lib or set LTDL_LIBRARY_PATH to location."

    • The FFMPEG source code includes 7 libraries:
      libavcodec libavformat libavutil libavfilter libavdevice libswresample libswscale
      
    • Of these, libavcodec and libavformat sound the most like decoding libraries.
  • "These can be compiled yourself, they may turn up on searches of the internet or may be included with other MP3 applications already installed on your system. Try searching for libmp4ffmpeg.dylib and libffmpeg.dylib."

    • The 32-bit versions will not be likely to be found on a 64-bit system I'd presume, but may be available online
  • Obtain the latest FFMPEG source code from approprate locations. (GitHub or FFMPEG or FFMPEG git tree)

    cd ffmpeg
    ./configure CFLAGS="-arch i386 -m32" LDFALGS="-arch i386"
    make
    sudo make install
Clone this wiki locally