Releases: gpac/gpac
Release list
GPAC v26.07.0
We are happy to announce the release of GPAC v26.07.0.
ABI version of this release is 16.21.
General
- Clean up of remaining
test modeandold arch
MPEG-DASH & HLS
- Improved support of discontinuities in packager and client
- Add
sfragtolerance to generate segments with a fixed number of fragments but variable-duration fragments - Add
dashif.ingestprofile for DASH-IF Live Ingest - SCTE35 and MPD inband and out-of-band events + HLS (wiki)
- Improved DASH-L3D and LL-HLS
- Support for cleanup of timeshift buffer in manifest in multi-period cases
Encryption
- EVP support in encryption for hardware AES
- AV1 scalable ID (temporal a/o spatial) filtering
Filters
- Discontinuity detection in
reframerand indasher - Improve
mediaserverMABR repair option - SourceID matching by prefix now possible
- Add option to switch Periods when new encryption key is encountered
- Allow DREF URL override in mp4dmx
- Raw IAMF mux to/demux from MP4
- Accept empty initial playlist in
flist - Allow source loading to use custom source filters other than JS
- Improved GHI demuxer for manifest regeneration
- Allow
ffavfto be used as source - Added tolerance for
sfragmode inmp4mxto align to sap frames
Other
- Added MP4Box option for automatic track reordering
- Test modes for
GF_Blobandgfiofrom mem in gpac cli - Remote monitoring web app now supports inspecting from logs (use -rmt -rmt-log to start recording)
- Added light formatting syntax to filter status
- Switch to QJS 26-06
- Refined
gfiofrom mem to allow multiple concurrent users, needed by some demuxers - More configuration options for H2 and H3, improved QUIC support
- Many bug fixes and security patches
Installers are available at gpac.io
Enjoy, give us feedback and spread the news!
GPAC v26.02.0
We are happy to announce the release of GPAC v26.02.0.
GPAC release naming is now changed to year.month scheme. ABI version of this release is 16.5.
gpac
- Added mode for testing defered graph linking apps
main()can return filter session error code using -rv
MP4Box
- Better support for HEIF/AVIF import
- New option 'times' to rewrite timestamps
Core tools
- Network Capture and Replay using pcap or pcapng, including looping, loss and reordering simulation
- HTTP/3 support for client and server
- Added libcurl as backend for GPAC downloader
- QuickJS 2025, FFMPEG 8
- Improbed GFIO (including file deletion)
Media Formats
- ISOBMFF external tracks support
- Event Message Tracks support
- Improved support SCTE-35, id3, CC, timecodes and other markers
- Improved HDR signaling support
- IAMF support
- Motion JPEG2000
- AC-4 support
- AVS3 support
MPEG-DASH & HLS
- SSR support for L3D low latency, base64 encoding of init segments
- HLS groups, IV injection
- DASH/HLS: new
segctsoption to derive startNumber from first packet cts - mux time prft injection
Remote monitoring
- A new WebSocket based remote monitoring UI is available for GPAC
- WebSocket server for JS scripts
Filters
- DVB-I MABR FLUTE mux and demux
- MABR (ROUTE/FLUTE) HTTP repair support with full or partial modes
- MABR (ROUTE/FLUTE) on unicast
- mediaserver.js HTTP gateway filter supporting MABR sources
- avmix playlists now accept ipid:// urls to locate input pids, allowing to specify playlists independently from source URLs
- ClosedCaptions encoder
- TTML merger
- flist: Playlist piping, DASH perdiod auto-switch signaling
- pin: flush signaling upon broken pipe
- M2TS: USAC support, non real-time NTP injection for TEMI, real-time regulation option for tssplit and tsgendts
- dvb4linux is back (Terrestrial and Satelite including dibseqc)
- reframer: time-aligned mode, time discontinuities handling
- nhml: ability to process fragmented streams
- bsrw: timecodes injection and rewriting
- seiloader filter for SEI and AV1 OBUs
- FFMPEG raw protocol support (use gpac for demux and mux)
Emscripten
- Improved WASM support
- Fixes in UI
Other
- Improved Wiki: glossary, developer section, ...
- Integration with GStreamer (gpac-gst-plugin)
- Introduce unit tests in complement to the testsuite and various buildbot continuous checks
- Many bug fixes and security patches
Installers are available at gpac.io
Enjoy, give us feedback and spread the news!
GPAC 2.4
We are happy to announce the release of GPAC 2.4
This release marks the beginning of GPAC in your browser with emscripten support, with a live demo at https://wasm.gpac.io !
This release also brings many new features including pcap support, async net IOs, JIT packaging for on-demand content and better subtitle/CC support.
As usual, installers are available on gpac.io for most common platforms.
Enjoy, give us feedback and spread the news!
Detailed changes:
Emscripten|WebAssembly(WASM) support
- Session can run in worker or in main browser loop
- Automatic disable of ffdec and ffenc threads when not running in worker
- Use fetch() api for downloader
- Support for WebCodecs
- Support for getUserMedia and canvas readable streams
- gpac.html demo page
Media Formats
- Fixes in text subtitle converters
- Improved DolbyVision muxing from mkv
- Dasher support for inputs with multiple stsd entries
- Allow multiplexed representations for LL-HLS
- Improved eac3 support
- QT cmov support (reading and writing)
- QT lpcm support
- Improved chaptering support
- Improved timecode inspection
- Support for big-endian PCM formats
- Support for uncv (raw video in mp4 and heif)
- Support for forced subtitles
- Support for HEVC bitstreams merging in dash (for multi-res tile adaptation)
Filters
- Async HTTP request in all filters
- JS/Python/NodeJS bindings for httpout server
- Fixed CORS and mime types in httpout for wasm and sharedArrayuffer support
- Allow compilation without threads
- Allow compilation without network
- Fixed GF_FileIO for async read and write modes
- Added seeking in mp4dmx in mem mode
- vout updated to use VBO (required for gles2)
- libcaca video output support
- Allow ffdmx to work as demux filter on gpac input file pids
- GHI format for pre-indexing DASH/HLS session for JIT packaging/encryption/transcode
- Zero-copy for mp4dmx and fragmented mp4mx
- Various speed optimizations (filter session, isomedia lib, disk io, xml)
- Allow running the session without mutexes
- Closed Caption decoding filter (CEA708)
- MPEG-H decoder using IIS mpeghdec
- Templating for property assignment
- Conditional filter replacement to identify based on codecID
- Per-filter logging
MP4Box
- Add track reordering option
Misc
- Migrated doc from github's wiki to wiki.gpac.io
- FFmpeg 7 support
- Added features for configure (vout, aout, fonts, doc, evg)
- Allow specifying network interface by name or IP (instead of IP only)
- UDP/TCP filtering and recording to / playback from pcap, pcapng and GPAC gpc files
- Added Nix and Docker build files
- Many bug fixes, improvements and security patches
GPAC 2.2.1
GPAC 2.2
We are happy to announce the release of GPAC 2.2
This release marks the end of MP4Client/Osmo4/Osmo4Ios/Osmo4Android, with gpac being used for all platforms - Android app now supports running gpac and MP4Box command line as well as running the GUI.
This release also brings better support for MKV, DolbyAtmos and DolbyVision.
As usual, installers are available on gpac.io for most common platforms.
Enjoy, give us feedback and spread the news!
Detailed changes:
Media Formats
- 2-pass encoding for FFmpeg codecs other than libx264
- Conversion filters for VTT, TXG3 and TTML
- SubstationAlpha subtitle import (basic)
- DVB subpictures in M2TS mux and demux
- FFMPEG (mostly for Matroska) subtitle import and export (SRT/SSA to TX3G, TX3G to SRT, WebVTT and DVB subpictures)
- EC3+Atmos signaling support
- ALAC support
- Improved DolbyVision muxing
Media player
- subtitle delay and position adjustment
- audio delay adjustment
MP4Box
- allow numbers and media types as identifiers for track actions
- dlba option to update atmos+ec3 signaling
Filters
- UTC-based range extraction in reframer
- Thumbnail generator filter
- Added unframer filter
- FFMPEG bitstream filters support
- initseg support in mp4dmx filter
- Access to GPU textures of decoders in Python and JSF bindings (glpush filter for tests)
- Chapters editing and original timestamp dispatch in reformer range extraction
- dual in-band and out-of-band parameter set support in dasher
- non-blocking IO for RTSP and HTTP servers/clients
- RTSP over HTTP in rtsp server
- Source-Specific multicast for udp and rtp inputs
- User Authentication for HTTP and RTSP servers
- TLS support for RTSP client and server
- Per-filter buffering options
Encryption
- ClearKey support in dasher and decryption
Misc
- QT metadata tags in MP4Box and qt muxer
- support for some packet properties in URL templates
GPAC 2.0
We are happy to announce the release of 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
GPAC 1.0.1
This release fixes build and installation issues in 1.0.0, as well as various bugs introduced during the migration to the filters architecture.
It also adds several small features:
- better ttml import
- better support for MPEGH audio
- support fur DASH UTCTiming
- manifest generation from pre-fragmented DASH/HLS mp4
- speed optimization in isobmf reading (normal and fragmented)
- improved JS API for the filter session
- core tools exposed as JS module (file io, bitstream, etc ...)
- android fixes
GPAC 1.0
We are thrilled to announce the release of GPAC 1.0, the first official release of GPAC "filters", a complete re-architecture of GPAC streaming core.
You can have a quick overview of the new possibilities of GPAC in our fosdem 2020 talk or our MMSYS'20 presentation.
A lot of new things are present in this release:
- Complete rewrite of GPAC streaming core:
- addition of a filter-based architecture, used by MP4Client and MP4Box,
- moving all decoders and demuxer plugins of MP4Client and most of MP4Box import/export code as filters for this new architecture,
- moving DASH/HLS segmenter to a filter,
- moving MP4Client compositor and most of the GF_Terminal internals to a filter,
- addition of a new application gpac, whose only purpose is to create and run filter chains,
- removal of MP42TS and DashCast applications since these functionalities are provided by gpac,
- deprecation of some features (widget management, MSE draft implementation for SVG media, UPnP, TEMI player support).
- Profile system allowing to override through a static file default options of all filters and libgpac core.
- Alias system for gpac app to simplify your command lines.
- Enhanced DASHer:
- Support for HLS and dual HLS / DASH generation.
- Support for any input.
- True low-latency mode for DASH.
- Support for multiple periods.
- Support for other segment formats (raw, mkv, webm currently tested).
- Input and outputs
- Generic pipe, TCP, UDP, and Unix Domain socket input and output.
- RTSP server output.
- HTTP output (client and server), supporting low latency DASH access.
- Ad-hoc stream format called GSF to allow serialization to file, pipe or socket of a session (for distributed filter chains), supporting AES-128 CBC encryption.
- Raw audio (PCM) and video (RGB, YUV) reframers and exporters.
- HEVC tile spliting and merging filters.
- Compositor is a standalone filter (SVG/BIFS/VRML graphics in a filter chain).
- Image encoding support through libjpg and libpng.
- Full FFMPEG support:
- Encoding/decoding through FFMPEG libavcodec.
- Multiplexing/demultiplexing through FFMPEG libavformat.
- Device grabbers through FFMPEG libavdevice.
- Raw audio and video filters through FFMPEG libavfilter.
- Support for QuickJS (ES2020) and bindings for:
- Complete filter API.
- GPAC software rasterizer (EVG).
- WebGL 1.0 Core.
- XmlHttpRequest and uDOM APIs.
- Storage.
- Inspect and analyze filter.
- MPEG-2 TS splitter.
- Video cropper filter with zero-copy mode.
- Video flip filter.
- Source concatenation filter.
- Simple audio and video output filters.
- Experimental audio and video rewinder filter.
- Encryption:
- On-the-fly encryption and decryption, now available as filters.
- Segment-based encryption and decryption.
- ISOBMFF:
- Box customization.
- Better QT support, ProRes parsing and dumping.
- Support for raw media (QT style or ISOBMFF for audio).
- Simplify HEIF batch conversion through item to track mapping.
- Reading from pipes (fragmented or progressive files).
- Writing to packets rather than files.
- Fast interleaved file creation mode with less storage requirements.
- FileIO wrapper for cases where files are not stored in a file system known by GPAC.
- Testing and Documentation:
- Live doc generation (man and wiki).
- Improved coverage.
- Split test suite as dedicated repository.
- Moved all resource to https://wiki.gpac.io.
- Started howto pages on wiki.
- Many bug fixes.
As usual, installers are available on gpac.io for most common platforms.
Enjoy, give us feedback and spread the news !
0.9.0 Preview
Preview release of GPAC new architecture
GPAC 0.8.1
The 0.8.1 release will be the last release of GPAC under the old architecture (pre-filters).
The 0.8.1 release features:
- support for Dolby Vision meta-data tagging in ISOBMFF
- improved QT support
- bug fixes and security fixes
The code of 0.8.1 will be available in the legacy branch for a while, however no new features will be added to this branch, only critical bug fixes will be done. The installers for this branch will be available for the lifetime of the branch.