Changelog
Version 41 (16/06/2026)
- HLS: add option to remove subfolders from source (for Akamai compatibility - but may lead to collisions if misused)
Version 40 (05/02/2026)
- HLS: fix removing multiple 'SUBTITLES=' attributes
- HLS: avoid rare case where subtitles were attached to all stream types
- HLS: fix wrong computed path while probing - the issue is that Akamai would not report a 404 but rather redirect to the master playlist
Version 39 (26/11/2025)
- EBU-TT Live: unmix VTT textAlign values (before/after instead of left/right)
- EBU-TT Live: use Region passthru whenever possible
Version 38 (18/11/2025)
- EBU-TT Live: cover more input positioning
- HLS/WebVTT: improve color and positioning compatibility
Version 37 (05/11/2025)
- Fix date discrepency in WebSocket logs
- HLS/WebVTT: add some color and position formatting
- Mark legacy layout as deprecated
Version 36 (23/07/2025)
- HLS: update to be compatible with the latest version 12 (revision 17)
- HLS/WebVTT: improve X-TIMESTAMP-MAP accuracy
- DASH HbbTV compatibility: AdaptationSet@id should be an unsigned integer. As a consequence, the SUBSTANCE_DISPLAY_NAME configuration variable shall be an unsigned integer in DASH, or any string in HLS
- DASH: as per section 5.3.1.2 a missing time shift buffer depth is interpreted as an infinite one
Version 35 (26/10/2023)
- adds passthrough mode
- fixes a bug where a boolean option may not be properly parsed
- minor log improvements
Version 34 (05/01/2023)
- add support for secured websocket connection
Version 33 (22/11/2022)
- add SUBSTANCE_SEGDUR_MS option to tune output segment duration
- make default values: SUBSTANCE_GLOBAL_DELAY=0 and SUBSTANCE_SUBTITLE_DELAY=0
- fix url error global delay is configured for HLS and a child plyalist is defined with an absolute path
- deprecate SUBSTANCE_BASEURL_AV
- improve termination signal handling
Version 32 (21/11/2022)
- add support for SUBSTANCE_GLOBAL_DELAY to HLS pipelines
- pipeline: don't stop source when exception is handled successfully
- ttml encoder: fix missing Region when combining DEBUG_DISPLAY_TIMESTAMPS and legacy layout
- add trailing slash by default to all configuration URLs
- improve source download error handling and reporting
- fix potential issues relative to DVB-DASH support
- change default behavior for deletion of content pushed to cdn
Version 31b1 (06/10/2022)
- support build
Version 30 (13/09/2022)
- add option to log to a file
- log websocket connection state
- set HTTP push timeout to 2s. uploads are managed synchronously, upload is blocked until the current upload is complete.
- ebu-ttd: add support for escaping
- hls: fix when no program date time is present in source
- hls: fix subtitle offset
- hls: demuxer updates
- dash: muxer updates
Version 29 (16/06/2022)
- ttml decoder: better support for cellResolution
- improve websocket payloads logging
Version 28 (16/06/2022)
- fixes local subtitle cache not being properly cleaned up, resulting in ever increasing disk usage until container restart.
Version 27 (15/06/2022)
- EBU-TT Live: avoid multi lines overwriting each other or going out of the styling box
- HLS: fix multiline overlap in hls.js
- Align the first received subtitle with the first output chunk (fixes most blinkings in TTML/DASH)
- Improve formatting by following TTML BasicDE recommendations
- Support multi-line inputs
Version 26 (10/05/2022)
- HLS: fix date parsing when including timezone
- Fix layout for multiline EBU-TT Live inputs
- Be resilient to a/v encoder reboot
- DASH/HLS: delete data it goes out of the timeshiftbuffer, unless told otherwise
- Change default subtitle naming in player, and make it configurable
- Customizable ebu-tt sequence ID and websocket port
Version 24 (11/03/2022)
- Ingester: support WebSocket reconnections
- Ingester: allow customizing sequence ID in websocket endpoint
- Deployment: fix subtitle cache pruning
- Fix issues at startup with some streams when computations led to negatives timestamps.
Version 23 (10/02/2022)
- Updated docker image.
- Add subtitle payload in debug log.
- HLS (WebVTT) output (HLS/TS input supported only).
- Reduce contention on evergrowing-playlist input.
- Subtitle source: open media files in playlist directory .
- Improve resiliency with late content, jittered/offset, and discontinuous input content and timestamps.
- Subtitle timestamps are relative to UTC0.
- Expose A/V baseUrl option in case our source stream is not available to the end users at the same URL.
Version 22 (07/05/2021)
- Add sanity checks on input MPD to fail fast and explicitly.
- Expose output transfer logs.
- Add regulate option (generates empty samples when late).
Version 21 (26/03/2021)
- Remove sleeps from source loop: stops faster.
- Add an explicit BaseURL option (-b or --base-url).
- Update log formatting.
Version 20 (11/03/2021)
- Add an option and disable the shell by default.
Version 19 (04/03/2021)
- Allow muxer to be rebooted for dynamic parameters support: the output stream
timings could be discontinuous so make sure to restart the player. - Introduce a shell to inject dynamic value (both delays).
- Put back BaseURL of the subtitle content to '.'. Needed because the content
is pushed to a URL but played back from a different URL.
Version 18 (18/02/2021)
- Add ProgramInformation in MPD to know which version was used.
- Fix BaseURL when used with the Docker provided image.
Version 17 (10/02/2021)
- Avoid pushing MPD too often.
- Don't process if input MPD hasn't changed.
Version 16 (20/01/2021)
- Add BaseURL to subtitle content to support redirected streams.
Version 15 (17/12/2020)
- Fix installer (same code as v14).
Version 14 (17/12/2020)
- Improve ISO8601 parsing.
Version 13 (14/10/2020)
- Support more playlist timings formats.
Version 12 (28/05/2020)
- Add option to specify MPD output filename.
Version 11 (29/04/2020)
- Avoid spin loop when no input data is available.
Version 10 (16/04/2020)
- Fix option parsing order.
Version 9 (09/04/2020)
- Fix XML parsing (escaping).
- Fix run after 100 hours (playlist timing parsing).
- Add option parser.
- Option to push to CDNs via HTTP (tested with Akamai).
- Delete deprecated segments.
Version 8 (09/02/2020)
- Improve timings for debug purposes.
Version 7 (05/02/2020)
- Add a subtitle delay option.
Version 6 (27/01/2020)
- Fix trailing characters on output manifest.
Version 5 (18/01/2020)
- Avoid potential timings overflows in parsing.
- On error, avoid CPU spin.
- Pass DASH-IF conformance checks.
- Clarify error messages.
- Optimize packaging flags.
- Switch to new input playlist format.
Version 4 (15/01/2020)
- Fix ever-growing input file parsing.
Version 3 (14/01/2020)
- Add general delay option.
- Robustify option parsing.
- Remove any existing subtitle before adding ours.
Version 2 (14/12/2019)
- Add synthetic subtitles for testing.
- Modify the MPD in-place instead of rewriting.
- Detect more errors at startup.
Version 1 (07/10/2019)
- Initial version.