All posts by bouqueau

ISOBMFF, the technology at the heart of GPAC, awarded a Technology Engineering Emmy®

Today, the National Academy of Television Arts and Sciences announced that it decided to honor the File Format subgroup under MPEG for the ISOBMFF technology.

We, the GPAC contributors and community, are proud to have been part of the development of this awarded technology from its beginning. GPAC started more than 20 years ago to demonstrate the features of the MPEG-4 Standard which includes ISOBMFF. Soon, GPAC’s MP4Box became the MP4 swiss-army knife used worldwide by MP4 aficionados, by multimedia researchers and by media companies in production.

In GPAC, we always strive to be amongst the first tools to implement the new ISOBMFF features. Movie fragments (required for adaptive streaming), Common Encryption, the Image file format (IFFs such as HEIF or AVIF), … the support of the GPAC open-source tooling and community proved crucial to create correct and effective standards.

In 20 years we made hundreds of contributions to the awarded MPEG File format Subgroup (and still counting!). We hope to continue to offer that level of innovation and commitment to you for the next 20 years. In 2020 we released GPAC 1.0 (filters) to make sure we’re technically on track for the future.

We would like to congratulate all contributors to this technology and thank our user base for feature requests and bug reports which helped us contribute and improve the ISOBMFF technology and our support of it.

GPAC 1.0.0 public release

After almost 20 years of development, GPAC reaches yet another milestone. As the major number increment suggests, this GPAC version offers significant changes over previous releases.

Among the video community GPAC was known for its wide capabilities. Unfortunately these capabilities came with maintenance and usability challenges. This new version addresses these challenges by leveraging a new modular system called “filters”.

Filters make GPAC easier to use thanks to a unified API. Filters make GPAC easier to test, document, and maintain. Filters make GPAC more efficient thanks to a highly configurable resource manager. Filters make GPAC 1.0 the best GPAC ever. The multimedia ecosystem is very innovative and so is GPAC, now ready for the next 20 years!

This release comes with many new features thanks to the rearchitecture.

A special focus was made to make the transition as transparent as possible for our users. The APIs and the tool (MP4Box, MP4Client, …) are fully compatible to make the transition as smooth as possible.

For the last year we have maintained both the legacy and the new versions with both new features and bug fixes. From now on, the legacy version is marked LTS and will only receive bug fixes.

As usual pre-built installers are available for simplicity.

We strongly encourage users to update their codebase.

Of course there is still much to be done. Please help us and get in contact using our issue tracker.

We’d like to thank our community for the warm welcome of all these changes. You have been so patient and supportive during this transition period. Thank you.

Official AV1 and VP9 support in GPAC

Dear reader,

GPAC has added support for new codecs recently:

  • AV1 support is available in nightly builds since July 10th, 2018. This include file creation with MP4Box (including MPEG DASH generation) and file playback with MP4Client. Support for AV1 encryption was added on September 20th, 2018.
  • VP9 support was completed on October 14th, 2018.

This article gives you some useful command lines to use AV1 streams, but the same can be applied for VP9 streams.

Command-line for importing AV1 streams into MP4 files

To store an AV1 bitstream into an ISOBMFF/MP4 file , use the following command line. If the input file is called *.av1, its content can be OBUs (as specified in Section 5 of the AV1 specification), IVF or Annex B bitstreams. WebM streams are not supported. You can also call OBU-based bistream *.obu and IVF files *.ivf:

MP4Box -add file.av1 file_av1.mp4

If your file extension is not recognized by MP4Box, you can indicate the bitstream format with “:fmt=obu” or :fmt=AnnexB or fmt=IVF (case insensitive) as follows:

MP4Box -add file.xxx:fmt=obu file_av1.mp4

AV1 bitstreams may not contain frame rate information, you can use the following to indicate it:

MP4Box -add file.av1:fps=1000 file_av1.mp4

Command-line for AV1 adaptive streaming preparation

You can use the usual MP4Box command line parameters to segment your AV1 MP4 file and prepare it for adaptive streaming. The following command line will generate an MPEG-DASH onDemand manifest based on an AV1 representation (with its ‘codecs’ parameter) and it will create a segmented MP4 file with segments starting at AV1 KEY FRAMEs and targeting 1 second duration.

MP4Box -dash 1000 -profile onDemand file_av1.mp4

Command-line for AV1 encryption/decryption

Encryption of AV1 streams in MP4 files follows the general principles given by MPEG’s Common Encryption specification.  To use MP4Box for encryption or decryption, use the following command lines where the file ‘info.xml’ is an XML file that provides encryption parameters, as described in more details here. Example of such XML files can be found in our test base.

Encryption:

MP4Box -crypt info.xml -out file_av1_encrypted.mp4 file_av1.mp4

Decryption:

MP4Box -decrypt info.xml -out file_av1_decrypted.mp4 file_av1_encrypted.mp4

Acknowledgements and conclusion

The work on AV1 and VP9 was largely sponsored by Alliance for Open Media and Netflix. Kudos to them 🙂

As usual, if you find any bug or miss documentation, let us know.

Internship: next-generation video streaming analyzer (Paris, France)

GPAC is a Free Software multimedia framework. The project covers different aspects of multimedia, with a focus on multimedia packaging and presentation technologies (graphics, animation, interactivity, VR). We provide popular packagers, streamers and players on http://www.gpac.io.

The GPAC team builds tomorrow multimedia standards. The GPAC team is renowned for its participation in standards (ISO/MPEG, W3C, etc.). GPAC is the reference software for some core multimedia technologies and drives innovative technologies (scalable and interactive video, etc.).

The internship aims at exploring the CMAF standard. CMAF aims at unifying all the existing video streaming formats and is backed by Apple and Microsoft. The role of the intern is to participate in the development of a CMAF validation service.
Continue reading Internship: next-generation video streaming analyzer (Paris, France)

GPAC selected for the Google Summer Of Code (GSoC) 2016

GPAC GSoC page: https://summerofcode.withgoogle.com/organizations/6481702784335872/

Subjects: http://gpac.io/jobs/google-summer-of-code-ideas/

The timeline to see the subject and apply is quite short (25 March for student application deadline): https://developers.google.com/open-source/gsoc/timeline

Please pass along the message. GSoC is a good opportunity for projects to improve and find contributors!

If you have any question, please contact gsoc@gpac.io.

Check key-frame alignment with MP4Box

⚠ The content of this page may be outdated.
Please refer to this page for more up to date information: https://github.com/gpac/gpac/wiki/Check-key-frame-alignment-with-MP4Box

 

Dear adaptive streaming followers,

Many of you reported issues when packaging your encoded content to respectively HLS or MPEG-DASH using GPAC (resp. the MP42TS and MP4Box tools). Most of the time, this is due to misalignment of key-frames across the different encoded qualities. In this article, we are going to show how to check key-frame alignment.
Continue reading Check key-frame alignment with MP4Box

GPAC: build MP4Box only (all platforms)

⚠ The content of this page may be outdated.
Please refer to this page for more up to date information: https://github.com/gpac/gpac/wiki/Build-Introduction 

For each platform you’ll find instructions for building MP4Box only or the whole GPAC suite.

 

Dear readers,

As many of you know, GPAC is a full framework providing authoring tools, packagers, streamers, a player and now some js stuff. This can make GPAC cumbersome to build.

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).

That’s all!

Build MP4Box with Make

On your system, you need the following tools installed on your system:

  • git
  • gcc
  • make
  • 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:

bin/gcc/MP4Box

To install MP4Box on your system:

sudo make install

Check installation

now when you type

$ which MP4Box

you should see

/usr/local/bin/MP4Box

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

That’s all!

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-compilation

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.

Next Step

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!