All posts by bouqueau

Use MP4Box to dump and analyze broadcast TS streams

⚠ The content of this page may be outdated.
Please refer to this page for more up to date information:


Today I want to share with you a few tips regarding MP4Box. MP4Box can manipulate MP4 files, but it has also capabilities regarding broadcast streams.

Dump a broadcast TS in a file

Command syntax:

MP4Box -grab-ts udp://ip_adress:port dump.ts

For example:

MP4Box -grab-ts udp:// dump.ts

Dump from a specific network interface

MP4Box (and also other GPAC tools such as the MP4Client player) provides a ‘-ifce’ option:

MP4Box -grab-ts udp://ip_adress:port -ifce ip_address dump.ts

Use ‘ifconfig’ (Unix) or ‘ipconfig’ (Windows) to retrieve your IP address on the interface of your choice. Example:

MP4Box -grab-ts udp:// -ifce dump.ts

Troubleshoot Windows: MP4Box (or any tool) cannot dump my multicast

1) Clicking the Start button and then click on Control Panel. In the search box, type firewall, and then click Windows Firewall.

2) On the left panel, click on “Allow a program or feature through the Windows Firewall”.

3) Make sure all columns are checked for your MP4Box programs.

Enjoy 🙂

2015: meet us at FOMS and FOSDEM

Dear followers,

We wish you a happy new year from the whole GPAC team!

GPAC people are attending FOSDEM this year. FOSDEM is a conference which allows “open source communities a place to meet, share ideas and collaborate”. It takes place every year in Brussels, Belgium. It happens that FOMS also occurs at the same time and city. So both organizing teams agreed to make a joint track called “Open Media”.

Cyril Concolato and Romain Bouqueau will give a talk there about the latest multimedia technologies and GPAC. More information at:

If you’re interested and have questions, meet us or ask questions on our forums.

GPAC is now on GitHub

Dear readers,

GPAC is now officially available on GitHub, where you can find:

Please contribute on GitHub as soon as… now!

Of course this is only the beginning. We’d be happy to have your opinion on these changes. The more GitHub requests, feedback and pull-requests we have, the more likely we’ll migrate completely to GitHub 🙂

Open positions from the GPAC team

Like open-source? Want to work in a cool and flexible environment? Want to join a team of world renowned experts? The GPAC project is looking for talented people!

GPAC is a Free Software multimedia framework. We provide packagers, streamers and interactive players at We help building tomorrows standards at MPEG, W3C and others.


Open positions for engineers, interns, PhDs/postdocs

More information on this page and that page 🙂

Please contact us at if you ave any questions.


Skills required 

  • Passionate about computer engineering
  • Programming in C/C++ or Web technologies
  • Multimedia knowledge (codecs, containers, delivery) is a big plus
  • Fluent in English (fluent in French is a plus but not mandatory)


If you are interested, you will find more information on the page dedicated and send an email to

EBU-TTD support in GPAC

⚠ The content of this page may be outdated.
Please refer to this page for more up to date information:


Following Cyril Concolato’s first attempt to store TTML in ISOBMF, I have added support for parsing and DASHing EBU-TTD as of version 5366 of GPAC. Therefore you don’t need NHML anymore when importing EBU-TTD TTML content. Please read Cyril’s blog post if you wish to know more about TTML or MPEG-4 part 30 (TTML and WebVTT in ISOBMF).

EBU released two specifications recently:

    This document aims to define a distribution subtitling format base on TTML. This is both a restriction (i.e. a profile) and an extension of TTML. The extensions are very limited. The restrictions allow to mitigate most of the TTML criticisms (especially an ability to express things in several ways, which led to a difficult generic parsing process).
    This document explains how to store some EBU-TTD content in ISOBMF. Basically it follows the MPEG-4 part 30 standard.

Useful command-lines for import:

MP4Box -add sample.ttml sample.mp4

EBU-TTD is recognized automatically:

MP4Box -add ebu-ttd_sample.xml:ext=ttml -new tmp.mp4
TTML Import Note: TTML import - EBU-TTD detected

To extract the TTML samples from the MP4 (generates one TTML per MP4 sample) (note: replace track 1 from this example with your track id) :

MP4Box -raws 1 sample.mp4

Just a few remarks about this implementation:

  • It is made on top of TTML existing support. So it has the same limitations (no images support, etc.).
  • DASH segmentation is fully supported.
  • Regression tests are still unsufficient. We are looking for additional feedback and test files.
  • There are still a few open questions which are on their way to standardization. You can expect a few minor improvements in the future.


EBU-TTD current limitations

/!\ These limitations don’t exist if you use NHML /!\

  • Overlapping times are not supported.
  • Multiple <region> elements may trigger errors.

/!\ Fixed limitations /\

  • The expected default namespace of the EBU-TT-D document is ‘’. Documents where this namespace is bound to prefix are supported starting at 08/30/2015 (but no other namespace checks are performed).


This development has been made possible thanks to EBU through GPAC Licensing.

5000th commit, 10 years of open-source software

Dear followers,

We are happy to celebrate the 5000th commit on the GPAC codebase.

GPAC is an adventure started by Jean Le Feuvre in 2000. It has been made open-source in 2003. Since then GPAC has grown regularly to provide you with new features around multimedia and streaming : )

It can now package MP4 and MPEG2-TS using MP4Box and MP42TS, stream with the DASH, HLS, RTP, … protocols , and play back with Osmo4 on many platforms (desktop, mobile, embedded). We even have a live transcoder named DashCast!

2013 has also been an important year for our professional users. They are now able to get professional licensing and services using GPAC Licensing. Don’t worry, GPAC will remain open-source software : )

According to the analytics site, GPAC has over 650k lines of code and has needed 177 years of effort!


If you are interested in statistics, you can read this.

The GPAC team

The SVN repository was moved!

Dear users,

Editor’s note: please consider cloning GPAC from GitHub!

For maintenance and upgrade reasons, our host SourceForge has migrated GPAC to its new platform. You may see some changes in the forums but you’ll likely see that ‘svn update’ stays stucked at revision 4614.

Please ensure you have changed your local repository by following this tutorial: .

For most users, this command will make the deal:

svn relocate svn://

To check out GPAC:

svn co svn:// gpac

Sorry for the inconvenience. Please use our forums if needed.



JPEG support for Android: resolving conflicts

When porting GPAC to Android (2.3 as of today), we’ve been facing a very strange and annoying problem: JPEG images didn’t load, and libjpeg was outputing the following message:

JPEG parameter struct mismatch: library thinks size is 480,
 caller expects 520

We couldn’t find any relevant help on the Web. Discussions always ended up with no response or even some “you don’t understand what you’re doing”. The thing is we have understood and solved the problem.

First, the GPAC Android package (generated as mentionned in the README.txt file) does contain its own file. The file is generated from the extra_libs package. When running the Android Osmo4 player within the Eclipse debugger, the Dalvik console prints the following message:

INFO/LibrariesLoader(294): Loading library jpeg...
DEBUG/dalvikvm(294): No JNI_OnLoad found in
  /data/data/com.gpac.Osmo4/lib/ 0x44ede8f0, skipping init
DEBUG/dalvikvm(294): Added shared lib
  /data/data/com.gpac.Osmo4/lib/ 0x44ede8f0

Don’t trust it.

There is a conflict between your local libraries and the ones provided by Android. Google’s dynamic libraries are always loaded first as of Android 2.3. This is annoying because this affects numerous programs and also other dynamic libraries (such as zlib, libpng, …). We could confirm our hypothesis by changing the error messages printed by our own it didn’t match the error message showing in the Dalvik console.

The best solution we found is to rename the dynamic library to a non-usual name. is now named for the GPAC package.

You can find more info on GPAC running on Android from here or watch the following video:


Romain Bouqueau, Stephane Thomas