Apple has announced this week at WWDC2017 support for the High Efficiency Image Format (HEIF) (see video here). HEIF is a new image format defined within MPEG, by companies such as Apple, Nokia, Canon, … and by the GPAC team and Telecom ParisTech. So, the GPAC tools are already capable of producing HEIF images. This post provides instructions to do so.
However many of you are mainly interested in MP4Box which is easy to build. Whether you are on Linux, Windows or MacOS, here is the definite guide to build MP4Box easily 🙂
Edit 2015/11/03: added MSVC MP4Box minimal build.
Build MP4Box with Visual Studio
We published a minimal solution to build MP4Box.exe only, with zero dependency. No DLL to distribute.
You need Visual Studio 2010 or more recent (a pop-up will ask you to upgrade your projects, just accept). Open build/msvc10/gpac_mp4box_mini.sln and build (Debug or Release).
Build MP4Box with Make
On your system, you need the following tools installed on your system:
- libpthread-dev (should be available on any development system)
In your favorite terminal, type:
git clone https://github.com/gpac/gpac.git cd gpac ./configure --static-mp4box --use-zlib=no make -j4
To execute MP4Box, assuming you are still in the same directory (i.e. the root of the GPAC repository), you will find the MP4Box executable at:
To install MP4Box on your system:
sudo make install
now when you type
$ which MP4Box
you should see
which is the default install folder for the version we have just built. You can tweak this with the ‘-prefix=’ configure option.
If you see /usr/bin/MP4Box (no “local/” in here), uninstall GPAC from your local packager. On MacOS, go to Finder and unmount the app on the left panel, or uninstall it from your package manager (‘port’ or ‘homebrew’ or ‘fink’).
Update to a newer revision
Of course you want to keep updated with the latest build without having to download the full repository again or re-execute the configuration when not necessary (it may be necessary sometimes, see below “Clean your build” if things go unexpectedly):
cd gpac git pull make -j4 sudo make install
Clean your build
If things go wrong and you suspect there is an issue in your configuration, the fastest way to restart a clean build is:
cd gpac make distclean ./configure --static-mp4box --use-zlib=no make -j4
Cross-compiling GPAC is quite standard, and requires only a modification at the ‘configure’ step. Use ‘–extra-cflags=’ and ‘–extra-ldflags=’ to add your environmment flags:
cd gpac ./configure --target-os=$OS --cross-prefix="$crossPrefix" --extra-cflags="-I$PREFIX/$host/include" --extra-ldflags="-L$PREFIX/$host/lib" --prefix=$PREFIX/$host --static-mp4box --use-zlib=no make -j4
For example, to use the ‘x86_64-w64-mingw32’ toolchain to cross-build from Linux to Windows:
cd gpac ./configure --target-os=mingw32 --cross-prefix=x86_64-w64-mingw32- --prefix=build/x86_64-w64-mingw32 --static-mp4box --use-zlib=no --extra-cflags="-Ibuild/x86_64-w64-mingw32/include" --extra-ldflags="-Lbuild/x86_64-w64-mingw32/lib" make -j4
You can find more examples in our TravisCI script.
We have started a multimedia component-level build system called Zenbuild. Zenbuild builds FFmpeg/libav, VLC or GPAC with most of their features enabled (librtmp, jack, openHEVC, etc.). You can start using Zenbuild, it is fully operational!
NOTE: This post is not the most up-to-date documentation of DASH support in GPAC. For the latest information on DASH, check out these pages:
We have been updating the support for DASH Streaming (ISO/IEC 23009-1) in GPAC as of revision 3849. The update covers both content generation tools and player, and both DASH and HLS support.