Category Archives: GPAC

Subtitling with GPAC

⚠ 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/Subtitling-with-GPAC

 

This post is the first post in a series I’m writing to help you discover the many different ways to handle tracks in MP4 files using MP4Box and other GPAC tools, with a particular focus on three types of tracks: subtitles, metadata and graphics tracks. Let me start in this post with subtitle tracks. Continue reading Subtitling with GPAC

EBU-TTD support in GPAC

⚠ 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/EBU-TTD-support-in-GPAC

 

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:

  • TECH 3380 v1.0: EBU-TT-D SUBTITLING DISTRIBUTION FORMAT.
    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).
  • TECH 3381 v0.9: CARRIAGE OF EBU-TT-D IN ISOBMFF.
    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 ‘http://www.w3.org/ns/ttml’. 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 ohloh.net, GPAC has over 650k lines of code and has needed 177 years of effort!

20140122_gpac_stats

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

The GPAC team

MP4 demuxer examples

⚠ 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/MP4-demuxer-examples

 

Dear followers,

At the request of some people, we have added to GPAC some sample applications demonstrating how to use GPAC to demux MP4 files. They are not full applications, just examples taking some MP4 files as input and displaying some information about the media samples contained in the file.

So far, we have added 3 sample applications:

  • a basic demuxer called ‘bmp4demux’ capable of reading and dispatching media access units from fragmented or non-fragmented MP4 files, progressively (i.e. while the file is being written);
  • a segment based demux called ‘segmp4demuxer‘ capable of dispatching media units from media segments, where the input data is framed.  This is what is used for the DASH support;
  • and a more advanced demuxer, called ‘fmp4demux’ capable of dispatching media units in streaming mode (i.e. reclaiming resources once media units have been dispatched), where the input data comes from fragmented mp4 but is not framed, i.e. the data in the buffer passed to the demuxer does not start or end at segment or fragment boundaries.

Continue reading MP4 demuxer examples

How to file a bug properly

GPAC is becoming quite a large piece of software and, unfortunately despite our care, is not bug-free… This is where you, as GPAC users, can help. If you discover a problem, you can report it using our GitHub bug tracker (old bugs were in our Sourceforge bug tracker ) .

Filing a bug, if this is done well, is the best way to ensure that the problem will be fixed. However, if the bug is not filed correctly, it is the best way to ensure that it won’t get fixed. This post gives guidelines on how to file a bug, properly. Continue reading How to file a bug properly

HEVC Live Showcase

As part of the 4Ever project, GPAC is currently on-air at Roland Garros, the French Tennis Open, for a world premiere live broadcast of 720p50 HEVC over DVB-T2 (broadcasted in Rennes through ImaginLab), IPTV and MPEG-DASH ! If you’re in town and want to check it out, drop us a line or stop at the RGLab booth !

MPEG-HEVC Support in GPAC

⚠ 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/MPEG-HEVC-Support-in-GPAC

 

This week was held in Incheon, South Korea, the 104th MPEG meeting. For this occasion, the GPAC team worked hard to prepare the following contribution.

[textimport http://biblio.telecom-paristech.fr/cgi-bin/ws/biblio.cgi?type=standardisation&etat=submitted&id=13808]

This contribution discusses SVC, WebVTT and in particular the support for MPEG-HEVC (High Efficiency Video Coding, a.k.a. H.265) packaging, streaming and playback in GPAC. I’ve extracted the HEVC related part of this contribution in this post. Continue reading MPEG-HEVC Support in GPAC

MPEG-SVC in GPAC

This week was held in Incheon, South Korea, the 104th MPEG meeting. For this occasion, the GPAC team worked hard to prepare the following contribution.

[textimport http://biblio.telecom-paristech.fr/cgi-bin/ws/biblio.cgi?type=standardisation&etat=submitted&id=13808]

This contribution discusses MPEG-HEVC (see this post), WebVTT and in particular the support for MPEG Scalable Video Coding (SVC) packaging, streaming and playback in GPAC. I’ve extracted the SVC related part of this contribution in this post. Continue reading MPEG-SVC in GPAC