GPAC: build MP4Box only (all platforms)

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

Build MP4Box

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:

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:

Check installation

now when you type

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’ of ‘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):

That’s all!

Clean your build

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:

For example, to use the ‘x86_64-w64-mingw32′ toolchain to cross-build from Linux to Windows:

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!

Using GDB in Visual Studio

Dear followers,

One of the target platform for GPAC is Windows. Developing for Windows in a comfortable manner requires Visual Studio, in particular for debugging. Microsoft recently announced great changes that will make Visual Studio users (including the GPAC developers) happy:

 

Setup for local debugging

Install software:

  • Install Visual Studio 2015. Install the “Tools for Visual C++ Mobile Development” in a sub-menu (disabled by default).
  • Install gdb/gdbserver. Use MinGW-w64 binaries and put them in your PATH (you can rely on the excellent MSYS2 for a full development environment).
    /!\ Legacy MinGW and Cygwin gdb binaries are known to fail /!\

Build:

  • Use your usual build system and gcc or clang compiler. Don’t forget to enable debugging!

Debugging:

  • In your command-line, launch:
  • In Visual Studio:
    • Open the “command window” (either press CTRL+ALT+A or click: View menu -> Other Windows -> Command Window)
    • Launch:

That’s all! Once Debug.GDBLaunch is attached your program will run. Breakpoints are effective. And you can enjoy the Visual Studio debugging experience:

20150610_msvs_gdb

Setup for remote debugging

This is an extension of the gdbserver we used above.  It allows to debug mobile (android/iOS) or any platform (linux, …) executables from a remote

For specific remote parameters, see:

GPAC scalable and hybrid demo, including French Tennis Open 2015

Dear readers,

For the last few years, the GPAC tools backed demos at the French Tennis Open (Roland Garros) in its demo corner called RG Labs. This year, through the H2B2VS project, we participated in a demonstration showing the use of Hybrid Broadcast Broadband delivery for Ultra HD video content.

The video was encoded using the SHVC format with two layers. The encoder was MPEG reference software. The base HEVC layer, corresponding to HD content, was delivered using MPEG-2 TS, produced by our MP42TS tool. The enhancement layer, enhancing the spatial resolution to UHD, was delivered using MPEG-DASH generated by MP4Box. Both streams were synchronized based on the recent MPEG-2 TS TEMI extensions (inserted by MP42TS in the mux) and played by MP4Client, rendered on this nice curved 4K TV. You can find the press release by France TV here.

RG_TV_small

The GPAC player is very powerful. It features a graphical statistics module able to display and control the player. Look at the screenshot below. It can also be used to choose your HLS or MPEG-DASH quality or limit the download bandwidth to simulate a saturated server environment.

statistics

During the first week of June we were also present at the MediaSync 2015 workshop for talk and demos, as well as invited in the demo session of TVX 2015. We presented some demonstrations developed during the H2B2VS project:

  • HD/UHD hybrid delivery, same demo as the one in RG labs, bug using Tears of Steel (left on the picture).
  • Sign language picture-in-picture service enhancement, with main content on broadcast and sign language video on broadband using MPEG-DASH (right on the picture).
  • Dynamic switch between broadcast and broadband versions of the same content, to allow trick modes in a broadcast (time shifting, rewind, fast forward).

TVX_small

The demonstrations were all using MP42TS for broadcast génération, MP4Box for live or onDemand DASH packaging and MP4Client for the playback. Complete instructions for reproducing the test bed are available here.

Use MP4Box to dump and analyze broadcast TS streams

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:

For example:

Dump from a specific network interface

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

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

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

Leaving SVN and SourceForge, using Git and GitHub

Dear followers,

In a previous post we mentionned that we had created an official account on GitHub but at that time the migration was not complete. We still used internally the SVN repository hosted on SourceForge and in particular for our BuildBot to generate the Nightly Builds. The git repository was synced with the SVN repository.

Since last week, we have migrated all our tools to use the git repository hosted on GitHub as the official source code of GPAC. The SVN repository at SourceForge will not be maintained anymore. In fact, recent commits have already been made to GitHub which are not present on the SVN.

As part of that migration, we have changed the numbering of GPAC’s binaries. New builds now use a numbering in the form of 0.5.2-DEV-<number-of-commits-since-last-release>-<latest-git-commit-hash>-<git-branch>.

Note also that GPAC is now also automatically built on TravisCI when a commit is pushed to the repository or when a pull request is made. We hope this move to git and GitHub will help improving the code. So don’t hesitate to fork, fix and make pull requests.

The GPAC team.

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 www.gpac.io. 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 jobs@gpac.io 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 jobs@gpac.io