GPAC 2.0

We are happy to announce the release GPAC 2.0, packed with new features!

This release brings support for Python and NodeJS: you can now interact with GPAC media pipelines using these languages, from basic session processing down to packet-level manipulations.

A new JSON-based video editor called avmix has landed in GPAC: it is designed for typical live processing tasks (scheduling, animations and transitions, graphics/text insertion) running from command line with or without GPU.

A lot of work has been put on HLS support for both client and packager, with support for low latency HLS.

MP4Box has been improved as well and is now capable of in-place rewrite, resulting in much faster IOs when editing files.

As usual, installers are available on gpac.io for most common platforms.

Enjoy, give us feedback and spread the news!

New features

Adaptive Streaming

  • Low Latency HLS (LL-HLS, generation and playback)
  • Custom forwarding modes of DASH reader, allowing for example to encrypt/decrypt a live DASH/HLS session
  • DASHing now possible using inband cues (generated by flist, dashin or dasher filters)
  • Cue-generation only mode for dasher
  • HLS/DASH signaling of intra-only representations
  • playback improvements for SRD (HEVC tiling and independent streams)
  • CMAF-compatible signaling
  • PPS injection for inband parameter set modes
  • Improved SmoothStreaming support
  • DASH period continuity support (from playlists or reframer)
  • DASH MPD Chaining support
  • Text segments in native format (WebVTT, TTML) in dasher
  • User tags injection for HLS master and variant playlists

Image File Format (HEIF)

  • Grid creation and other derived images
  • Encryption
  • Time range in -add-image
  • Item to sample data reference (no copy)
  • Item to item data reference (no copy)
  • Generic auxiliary image tagging
  • Image replacement in HEIF collection
  • AV1 (AVIF) and VVC support

MP4Box

  • In-place editing (no file remultiplexing)
  • Improved splitting, including sample-accurate split
  • ISOBMFF edit lists modification through :edits and -edits options
  • Track extraction from non ISOBMFF sources in MP4Box
  • Most import options can now be applied on an existing ISOBMF file or track
  • Multiple filter chains per source in -dash or -add modes
  • Chunk interleaving dumper

Filters

  • Simplified gpac command line (backward compatible syntax) avoiding links directives for common cases
  • Added avmix, a playlist-based audio video mixer/compositor with GPU or software rendering
  • Python bindings for filter session
  • NodeJS bindings for filter session
  • Custom HAS adaptation algorithms (JS, Python and NodeJS)
  • Custom Remotery callbacks (JS, Python and NodeJS)
  • Added avgen, a simple counter generation
  • Splicing support in playlists: raw and compressed domain, vod and live splicing
  • Tile splitting now available as a filter
  • Added restamp, a stream timestamp rewriter filter
  • Added bssplit and bsagg, compressed bitstream splitter and aggregator filters
  • Aspect ratio support in rescaler (ffsws)
  • Raw (uncompressed) modes for flist and reframer
  • Flip and rotate in vout
  • Simple UI for vout to test seeking and speed modes
  • Improved color space support in rendering (OpenGL only)
  • Improved round-trip audio decode
  • Improved audio resampler
  • Added back old arch compositor features (TEMI support, HEVC tiling JS monitoring, MPEG-4 SegmentDescriptor)
  • Reading back frame interface data (GPU, decoder mem) in JS or Python sink filters
  • Memory storage in httpout server file sink
  • FileIO wrapper available in QJS, Python and NodeJS

Protocols

  • HTTP/2 (client and server) through nghttp2
  • ROUTE multiplexer and low-latency ROUTE (mux and demux)

Media Formats

  • Improved MPEG-H audio mux/demux/dashing
  • VVC parsing, inspecting, mux/demux (ISOBMFF, M2TS), RTP, DASH and encryption
  • VUI color info rewrite for AVC, HEVC and VVC (mp4box and bsrw filter)
  • Dolby TrueHD
  • DolbyVision muxing
  • Improved multichannel AAC (>=8) support
  • Improved raw video in ISOBMFF support
  • Bitstream dumping for inspect analyze mode
  • Improved TTML support: metrics, image embedding (IMSC1), TTML sample merging while exporting, subtitle zero in TTML
  • YouTube VR meta-data
  • yuv4mpeg format read/write
  • Extended NHML syntax for properties, reconfiguration, subsamples and sample auxiliary data

Encryption

  • Multi-key per sample encryption
  • HLS full segment encryption and decryption
  • Per-segment or per-period key roll
  • Master/leaf key schemes

Misc

  • Improved HTTP rate limiter and chunk-transfer rate estimator
  • Cleanup of mod-dirs and js-dirs usage, JS filters can now be included in the default available filters
  • Support for windows long path
  • Moved to latest QuickJS (2021-03-27)
  • Added QJS-libc modules, support for exec/waitpid/kill and Workers on most platforms
  • Support for FFmpeg 4.4 +
  • many bug fixes, improvements and security patches