Release notes version 1.11.*

Version 1.11.24 (2022-12-21) RC

  • live: allow more advanced SCTE 35 configuration options (Advanced SCTE 35 configurations) (#9172).

  • Added support for Alpine linux 3.17.

  • Updated FFmpeg to 6.1.

Virtual Channel

Warning

API Breaking Changes

  • Error out on transition if base channel does not exist (#185)

  • Reuse ismls as much as possible to improve cache efficiency of multiple channels with shared playlists (#147)

  • Error out on transition creation if transition time is < vod2live start time (#186)

  • Transitions are aborted if not ready before the scheduled transition time (#62)

  • Automatic deletion of old playlists (configurable, defaults to 7 days retention) (#50)

  • LOG_LEVEL values "warn" and "alert" now work correctly (#190)

  • Improve SMIL parsing to properly handle optional attributes on EventStream and Event elements (#184)

Version 1.11.23 (2022-12-06)

  • origin: removed ContentProtection element from MPD@AdaptationSet containing thumbnail images (#9193).

  • remix: read required media data in VOD2Live output more efficiently (#9197).

  • Removed support for Alpine linux 3.15.

Virtual Channel

Warning

API Breaking Changes

  • API Manifest Edit endpoints path renamed from .../pipelines/formats/{format} to .../pipelines/{format} (#174)

  • API log endpoints path renamed from .../{channel}/log to .../{channel}/logs (#173)

  • API transition endpoints path renamed from .../{channel}/{transition_time} to .../{channel}/transitions/{transition_time} (#172)

  • API endpoints paths (all) renamed from /channel to /channels (#171)

  • Switch uvicorn event loop to use uvloop (#176)

  • Switch from Alpine Linux to Ubuntu 22.04 (#175)

  • Remix timeout is now handled correctly and configurable (#170)

  • Added working Manifest Edit example in Swagger UI (#164)

  • Adaptation Set IDs in DASH manifests are now unsigned integers instead of strings (#159)

  • A single env file now collects all Virtual Channel environmental variables used for configuration (#150)

  • DASH manifest publishTime is now wallclock-based instead of starting from zero (#168)

  • Fix HLS key change signalling on transition (#162)

Version 1.11.22 (2022-11-24)

  • live: fixed assertion failure when ingesting duplicate track with distinct TrackName attributes (#9195).

  • libfmp4: instead of returning a 404, return an empty manifest instead (#8996).

  • manifest_edit: added writing of custom EXTINF tags (#9185).

  • live: fixed early termination of SCTE 35 ad break for short DVR windows (#9176).

  • dash: always use a @timescale so that the @duration is always accurately specified when using number addressing in MPEG DASH (#8795).

  • remix: support frame accurate clipping for ''avc3'' format (#9186).

  • live: fixed time_shift when used with virtual sub clip that extends beyond live-edge (#9180).

  • libfmp4: added Virtual Channel license check and printing (#9184).

  • origin: added UspForceContentLength directive, to be used in combination with the UspOutputFilter directive, for running Manifest Edit (as described in Manifest Edit-related configuration).

  • capture: preserve c608 captions signaling after keyframe insertion (#8982)

Warning

The Windows binaries and DLLs are now built with Microsoft Visual Studio 2022. Previously, they were built with Microsoft Visual Studio 2019. We do not expect any incompatibility issues, but in some cases you may have to install Microsoft's Visual C++ Redistributable package, from:

https://aka.ms/vs/17/release/vc_redist.x64.exe

Virtual Channel

  • Add option to delay VOD2Live outputs to align media timeline with Live sources (#163)

  • Manifest Proxy now integrates Manifest Edit functionalities (#154)

Version 1.11.21 (2022-11-03)

  • libfmp4: added support for reading the SampleEncryptionBox when a constant IV is in use and no saiz/saio boxes are present (#9175).

  • hls: keep event messages with identical presentation times in receiving order. Previously pairs of SCTE 35 markers (CUE-IN/CUE-OUT) might have been reordered (#9178).

  • hls: fixed media segment splicing when SCTE 35 cue moves out of DVR window (#9179).

  • trickplay: add the scheme http://dashif.org/guidelines/trickmode to the kind box to signal a video track for trickplay playback when using the --trickplay option (#9140).

  • live: fixed TrackName MSS StreamBox property ingest (#9169).

  • mp4: remove incorrectly signaled (non-IDR samples) from the sync-sample table when prepping an AVC track (#9173).

  • hls: fixed announcement of last media segment in muxed playlists where audio is lagging compared to the video track (#9145).

  • hls: added support for HLS/TS and encrypted remixed source content (#9162).

Virtual Channel

  • Add support for DRM paramGroups and HLS variantSets to SMIL parser (#149).

  • Reduced README content, now uses rst format and links to Unified doc pages (#145).

  • Code obfuscation (#132).

  • A license with Virtual Channel specific flags is now required (#126).

  • Transitions are now refused if channel creation was not successful (#152).

  • Fixed version number tag in /version endpoint and API doc page (#144).

Version 1.11.20 (2022-09-28) GA

This GA release includes multiple bug fixes and improvements. For more information please see details below.

For general info about what you should take into account when upgrading, see: Upgrade to a New Version.

The highlights of this GA release including changes made in the previous RC:

Operating System Support

  • Added support for Rocky Linux 9.

Manifest Edit

  • Manifest Edit now supports the manipulation HLS media playlist containing tags such as; #EXT-X-DATERANGE, #EXT-X-CUE-IN , #EXT-X-CUE-OUT and #EXT-X-PLAYLIST-TYPE (#9134).

  • The "Default Language" plugin for HLS main playlists now supports the selection of tracks by URI, allowing for use cases such as "edit a track if its URI matches a pattern".

SCTE 35 & Custom Timed Metadata

  • Improved handling of #EXT-X-CUE-OUT and #EXT-X-CUE-IN in HLS media playlist when segments move out of the DVR window (#9158).

  • Fixed an issue with HLS/DASH segment durations incorrectly changing at splice boundaries related to the active DVR window. All segment durations are now signalled correctly meaning playback of a conditioned stream directly from Origin no longer fails. (#9133).

  • The segmentation_type_id is now included in the ID attribute of the #EXT-X-DATERANGE tag specifying SCTE35-CMD messages in HLS media playlists.

Unified Origin, Unified Remix & Unified Packager

  • Unified Packager: Added feature Offline VOD from Origin making use of Unified Origin functionality, and deliver the output to a third party, or directly upload a presentation to a CDN.

  • Unified Packager: Improved handling of FLAC audio data in ISOBMFF/MP4 helping to make FLAC streams play more reliably in Chrome and Firefox browsers. Note that the codecs attribute in DASH manifests must still be converted to all lowercase for some browsers, which can be done with Manifest Edit. (#9123).

  • Unified Packager: Improved encryption of large progressive source media files that only contained a single video track (#9139).

  • Unified Origin: Added support for multiple #EXT-X-MAP tags in HLS media playlists making it possible to reference different media segments using different URLS in a single media manifest. (#9138).

  • Unified Remix: Improved handling of multiple tracks with different framerates by using the same timescale for all video tracks (#9137).

  • Unified Origin (VOD): Improved error handling and response codes when connections are aborted between Unified Origin and remote (HTTP) storage by returning a valid error code (403) to the client. (#9125)

Version 1.11.20 (2022-09-28) RC2

  • hls: don't signal CUE-OUT when segments move out of DVR window (#9158)

    Refactoring for #9134 (support reading more HLS media playlist tags) could cause #EXT-X-CUE-OUT tags to be inserted at the head of the playlist, i.e. before the first media segment, if the splice point was announced early via #EXT-X-DATERANGE tags. This has been corrected, and the HLS media playlist reader was adjusted to correctly interpret such #EXT-X-DATERANGE tags.

Version 1.11.19 (2022-09-16) RC1

  • hls: fixed bug in segment duration announcement of the last media segment (#9133).

  • hls: added segmentation_type_id to ID attribute of the EXT-X-DATERANGE tag specifying SCTE35-CMD messages.

  • packager: fixed encrypting of large progressive source media files that only contained a single video track (#9139).

  • hls: added support for multiple #EXT-X-MAP (#9138).

  • remix: use the same timescale for all video tracks (#9137).

  • mod_smooth_streaming: return HTTP 500 on aborted connections (#9125)

  • added support for Rocky Linux 9.

  • manifest_edit: support reading more HLS media playlist tags (#9134)

    The HLS media playlist parser now understands #EXT-X-DATERANGE, #EXT-X-CUE-IN, #EXT-X-CUE-OUT, and EXT-X-PLAYLIST-TYPE tags, making it possible to manipulate HLS media playlists containing such tags in Manifest Edit.

  • manifest_edit: the "Default Language" HLS plugin now supports selecting tracks by URI, allowing use cases such as "edit a track if its URI matches a pattern".

Version 1.11.18 (2022-07-21)

  • Added Offline VOD from Origin.

  • Added support for parsing FLACSpecificBox data in ISOBMFF (#9123)

    When using FLAC in MP4 files, the FLAC metadata is now interpreted by Unified Packager, and correctly signaled in the audio sample entries. This should help to make such streams play correctly in Chrome and Firefox, as these browsers are more strict about the MP4 metadata matching the FLAC metadata, and would fail to find FLAC streams if there was a mismatch.

    Note that the codecs attribute in DASH manifests must still be converted to all lowercase for some browsers, which can be done with Manifest Edit.

Version 1.11.17 (2022-07-05) GA

This GA release includes multiple bug fixes and improvements. For more information please see details below.

For general info about what you should take into account when upgrading, see: Upgrade to a New Version.

The highlights of this GA release including changes made in the previous RC:

Operating System Support

  • Added support for Alpine 3.16. Now a total of 4x ARM/Graviton2 supported operating systems (Amazon Linux 2, Ubuntu 20.04, Ubuntu 22.04, Alpine 3.16).

  • Operating system Alpine linux 3.14 becomes end of life and is no longer supported. For more information, please see End Of Life.

Manifest Edit

  • Apache configuration for Manifest Edit now uses UspOutputFilter replacing mod_ext_filter functionality. This change allows for improved server-side error handling when submitting requests via manifest edit.

Attention

Due to the use of Transfer-Encoding: chunked, client side error handling may vary depending on system behavior to handle connection termination directly or via proxy, cache, load-balancer.

SCTE 35 & Custom Timed Metadata

  • Fixed an issue with HLS/DASH segment durations incorrectly changing at splice boundaries related to the active DVR window. All segment durations are now signalled correctly meaning playback of a conditioned stream directly from Origin no longer fails. (#9090)

  • The DASH MPD@maxSegmentDuration value is now set to 1.5 x mpd.minimum_fragment_length configured. This ensures the value does not change between manifest updates and allows for greater interoperability with SSAI/DAI platforms such as GAM (Google Ad Manager). (#9066)

  • Added support for the use-case of early terminating a SCTE 35 opportunity before the original scheduled end. If an opportunity is active and configured with a presentation_time, duration and auto_return = true, it can now be terminated early by sending an additional message containing out_of_network_indicator=0 at the desired presentation_time. (#9039)

  • Improved error handling and logging of invalid SCTE 35 segmentation descriptors. Previously invalid segmentation descriptors resulted in failure of playback. Instead errors are now logged and stream playback is uninterrupted. (#9086)

Accessibility Signaling (Subtitles/Closed Captions)

  • Introduced correct Deaf/HoH CHARACTERISTICS signaling public.accessibility.transcribes-spoken-dialog,public.accessibility.describes-music-and-sound to HLS client manifests. Apple will correct their authoring guidelines from describes-spokes to transcribed-spoken in the next update. (#9087)

  • Improved handling of embedded closed captions (CEA-608/708) as part of a dual ingest workflow. Previously the CC track would be incorrectly signalled resulting in a loss of CC on output. Now CC are signalled correctly when the data is announced by different encoders. (#9113)

  • Improved handling of TTML subtitle signalling. text/dfxp subtitles are signaled as stpp.ttml.im1t and any TTML doc containing SMPTE-TT images present and no defined profile are signalled as stpp.ttml.im1i.

Unified Origin, Unified Remix & Unified Packager

  • Unified Origin (Catchup/Restart): Fixed stream failure when the start time of a catchup/restart presentation dropped out of the archive window. The start time of the presentation is now recalculated to ensure playback continues and no 404s occur. (#9068)

  • Unified Remix: Fixed unified remix failures if the source media contained empty tracks. The empty tracks are now ignored enabling the creation of a successful presentation with relevant timing offset. (#9070)

  • Unified Packager: Fixed an invalid media timeline when using mixed frame rates. Media segment alignment is now correctly adjusted to allow the use of mixed frame rates. (#9075)

  • Unified Packager: Fixed a failure to package Dolby Vision Profile 5 (HDR) into a CMAF track when determining the compatibility brands. Dolby Vision can now be successfully packaged into a track with correct signalling. (#9063)

Unified Origin Live - CMAF Storage (Experimental)

  • Added new experimental option --archive_cmaf to store ingested streams as CMAF tracks. The default value for this option is false, meaning that any new isml created will contain <meta name="archive_cmaf" content="false" />. (#7465)

Attention

When set to true, this option enables each unique stream to be written to the archive as cmaf track. If both video/audio is ingested via Smooth Streaming Ingest to the same URI /Streams(ingest) content will be de-multiplexed and written to separate files.

In future releases, this feature will aim to benefit workflows involving split ingress/egress (across one or more Unified Origin) and the reuse (capture and re-packaging) of content via Unified Remix and Unified Packager workflows.

Whilst this feature remains experimental it is subject to change. Therefore any archive created with this feature enabled may not be compatible with future releases.

Version 1.11.17 (2022-06-21) RC

  • live: fixed announcement of embedded captions for dual ingest setups (#9113).

  • hls: changed CHARACTERISTICS "public.accessibility.describes-spoken-dialog" to "public.accessibility.transcribes-spoken-dialog". This will also be corrected in the next update of the HLS Authoring Guidelines (#9087).

  • removed support for Alpine Linux 3.14

  • added support for Alpine Linux 3.16 (x86_64 and arm64)

Version 1.11.16 (2022-06-02)

  • live2vod: use the given start time as the lower bound to determine the actual starting time (#9068).

  • live: fixed change of segment duration in HLS media playlist when a spliced media segment moved out of the DVR window (#9090).

  • hls: add both CHARACTERISTICS "public.accessibility.describes-spoken-dialog" and "public.accessibility.describes-music-and-sound" for tracks having a closed captions role (#9087).

  • libfmp4: log a debug message when parsing of a SCTE 35 segmentation descriptor fails, instead of failing (#9086).

  • dash: When splicing is enabled, multiply the MPD@maxSegmentDuration (--mpd.minimum_fragment_length) by 1.5 (#9066).

  • remix: ignore empty tracks that otherwise might have failed when trying to create a second edit offset (#9070).

  • packager: fixed media segment alignment when packaging multiple video tracks with different framerates (#9075).

  • origin: added UspOutputFilter directive to replace mod_ext_filter functionality, for running Manifest Edit (as described in Manifest Edit-related configuration).

Version 1.11.15 (2022-04-21)

  • live: added experimental --archive_cmaf option to store ingested stream as CMAF archive segments (#7465).

  • libfmp4: when importing "text/dfxp" subtitles the default is to convert to ('stpp.ttml.im1t'); When no TTML profile is signaled and SMPTETT images are present in the TTML document, then the type is set to image ('stpp.ttml.im1i').

  • libfmp4: ignore the end splice point given by the SCTE 35 Auto Return Mode message when it's early terminated (#9039).

  • packager: packaging Dolby Vision Profile 5 to CMAF failed when determining the compatibility brands (#9063).

Version 1.11.14 (2022-04-04) GA

This GA release includes various bug fixes and improvements alongside newly available configuration files when installing and enabling unified streaming software on linux operating systems. For more information please see details below.

For general info about what you should take into account when upgrading, see: Upgrade to a New Version.

Attention

On Linux, the setup process has been simplified through a few default configuration settings that are activated when enabling the mod_smooth_streaming module (i.e., Unified Origin). The settings can be found in the mod_smooth_streaming.conf file installed alongside mod_smooth_streaming.so and amount to the following:

  • Loads ext_filter headers proxy proxy_http ssl mod_unified_s3_auth modules, the last of which is installed automatically as a dependency of the mod_smooth_streaming module while the others are part of Apache's default installation

  • Enables UspEnableSubreq for significant improvements when using remote storage backends, see Cloud Storage Proxy

  • Adds default configuration for Manifest Edit as detailed in Manifest Edit-related configuration, which does not impact setups that don't make use of Manifest Edit while reducing complexity for those that do

The highlights of this GA release including changes made in the previous RC:

Operating System Support

  • Support for the Ubuntu 22 Jammy (x86_x64) & Jammy-Ports (arm64) variants further increases the number of operations systems unified streaming software is compatible with.

  • Operating systems in the form of Debian 10 (Buster) and Alpine linux 3.13 become end of life and are no longer supported. For more information, please see End Of Life.

Restart and Catch-up TV

  • Bug fixes have been made in the way timed metadata and audio track logic is handled when creating a VOD clip from a a Live source. This resolves issues identified in these areas in relations to media segment alignment which previously resulted in an undesired output.

SCTE 35 & Custom Timed Metadata

  • For HLS client manifests, when one or more segmentation descriptors are present in an ad opportunity received, the DURATION field in the EXT-X-DATERANGE tag is updated to reflect the value of the segmentation_duration field when present in the segmentation descriptor.

  • Messages that contain the same event.id and SchemeIdUri but different payload are now considered unique and will be signalled as an appropriate EXT-X-DATERANGE (HLS) and EventStream (DASH) message. A common mistake is that an identifier is (re-)used for messages that actually carry a different payload. We specifically pass-through these messages making it easier to identify issues downstream.

Unified Origin & Packager Encryption

  • Improved support for packaging of pre-encrypted source media alongside the handling of multiple sample descriptions.

  • Unified Origin and Packager now use the subsample information provided in the "subs" box when encrypting for 'PIFF' (Protected Interoperable File Format). When encrypting for 'CENC' (Common Encryption) use the elementary stream instead.

  • When using cpix_verify all tracks are now automatically evaluated allowing for the select-kid command-line option to be deprecated.

Remote Storage / AWS S3 Integration

  • Unified Origin, Packager and Remix now have support for Temporary Amazon S3 Security Tokens. AWS's Identity and Access Management (IAM) allows for the creation of temporary, limited-privilege Security Tokens which can be used to access AWS services such as S3. In addition to the existing S3-related command line options, we have added a new --s3_security_token option to where you can specify such tokens if they are required to access the S3 resource(s). Similarly, we added a S3SecurityToken directive to mod_smooth_streaming, mod_unified_remix and mod_unified_s3_auth. For more information please see Authenticate requests to AWS S3 and AWS Security Tokens.

  • Enable Apache subrequests by default in Unified Origin and Unified Remix. The default Apache configuration files installed by mod_smooth_streaming and mod_unified_remix now enable subrequests by default, improving performance of requests to remote storage. For optimal performance gains, you should also add Proxy sections for remote storage locations. See Cloud Storage Proxy for more information.

Manifest Edit

  • Manifest Edit is now automatically installed with Unified Origin, only requiring to create yaml files to enable use cases.

  • The default Apache configuration files installed by mod_smooth_streaming allows use cases to be enabled without needing to reconfigure or restart the Origin.

  • New Label plugins allowing to edit Labels in a DASH manifest. Labels can use a template syntax to refer to manifest attributes and can translate ISO639 language code to the respective names.

  • New BaseURL and SegmentTemplate modifier plugin, supporting use cases where segments are served by different URLs/server manifests than the main one.

  • HLS "default language" plugin now supports editing the "CHARACTERISTICS" attribute, i.e. to signal audio and subtitle tracks as video description or hard of hearing.

Notes

  • live: fixed missing AdaptationSet@InbandEventStream elements when creating a Live2VOD clip. This happened when there was no corresponding Timed Metadata media segment at the beginning of the clip (#9022).

  • libfmp4: improved support for (mixed) pre-encrypted content and multiple sample descriptions (#9032).

  • cpix_verify: removed select-kid command-line option. All tracks are now always evaluated.

  • added support for Ubuntu 22.04 (jammy)

  • removed support for Alpine Linux 3.13 and Debian 10

Version 1.11.13 (2022-03-21) RC

  • live: fixed track selection for Live2VOD where an audio track may have incorrectly been dropped due to segment alignment (#9026).

  • hls: when one or more segmentation descriptors are present in a DASHEventMessage, the DURATION field in the EXT-X-DATERANGE tag is updated when the segmentation_duration field is present in the descriptor (#9021).

  • libfmp4: use subsample information provided in the "subs" box when encrypting for the "piff" scheme. When encrypting for "cenc" use the elementary stream instead (#8976).

  • packager, origin, remix: add support for Amazon S3 Security Tokens (#8888). AWS's Identity and Access Management (IAM) allows creating temporary, limited-privilege Security Tokens, which can be used to access AWS services such as S3. In addition to the existing S3-related command line options, we have added a new --s3_security_token option to mp4split and unified_remix, where you can specify such tokens, if they are required to access the S3 resource(s). Similarly, we added a S3SecurityToken directive to mod_smooth_streaming, mod_unified_remix and mod_unified_s3_auth. For more information please see Authenticate requests to AWS S3 and AWS Security Tokens.

  • origin, remix: enable Apache subrequests by default. The default Apache configuration files installed by mod_smooth_streaming and mod_unified_remix now enable subrequests by default, improving performance of requests to remote storage. For optimal performance gains, you should also add Proxy sections for remote storage locations. See Cloud Storage Proxy. To opt out of subrequests, you can edit the mod_smooth_streaming.conf or mod_unified_remix.conf files, and turn off the UspEnableSubreq directive.

Version 1.11.12 (2021-12-21) GA

This GA release introduces an Alpha version of Unified Transcode using FFmpeg-plugins (tiled thumbnail support only), support for Alpine 3.15 and many fixes as well.

For general info about what you should take into account when upgrading, see: Upgrade to a New Version.

The highlights of this GA release are the following:

Remix nPVR/Live2VOD

  • Updated unified_capture --remix logic in nPVR workflows. Capture with the --remix options now captures at SyncSample/KeyFrame boundaries whilst avoiding gaps between captured clips. This mitigates any potential issues when processing clips at archive segment boundaries through Unified Remix with frame accuracy.

Dolby Vision (HDR)

  • Dolby Vision 8.1 in ISOBMFF & MPEG-DASH. Anyone wishing to implement Dolby Vision HDR in Origin Live workflows has the capability to now use Dolby Vision Profile 8.1 encoded content in their streaming workflows.

TTML Subtitles

  • Enhances subtitles support for TTML profiles (ISO/IEC 14496-30). Live and VOD workflows involving TTML subtitles will result in the codec string being populated with the given tt@profile described in the source document, for instance stpp.ttml.im1t. This align more closely with the ISO/IEC 14496-30 specification detailing how variations of ttml documents can be best described using multiple elements within the codec string.

Subtitle language and Regional dialects

  • Enhanced subtitle support for extended language codes (IETF BCP-47/RFC-5646). Anyone using multi-language subtitles with regional dialects now has the capability to signal languages more accurately.

Tiled Thumbnail FFmpeg Plugins

  • Tiled thumbnail transcoding using mp4split-ffmpeg-plugins (Alpha release). Tiled thumbnails tracks can now be created with using the IntelMediaSDK and it's associated software/hardware dependencies. FFmpeg-based plugins enable decoding of AVC/H.264 video, image resizing, and encoding of JPEG images and can be ran on any type of Linux or Windows machine, including virtual machines or container based solutions.

VOD2Live AWS marketplace Tutorial

  • Anyone wishing to use the VOD2Live marketplace offering now have an associated tutorial available on how to use the solution. This tutorial makes it even easier to get started and create a new VOD2Live live linear channels in the marketplace.

Validator Best Practice

  • Best practice documentation on using Validator for content preparation is now available. Validator runs a set of test-suites against an MP4 of your choice. You can use it to validate your content's compatibility with Unified Streaming's streaming solutions using the 'Best Practices' suite, which is selected by default, or you can choose any of the other suites to validate your content's compliance with relevant industry specifications.

Notes

  • origin: lowered "media time" message log level info to debug (#8708).

  • origin: fixed decrypting a media segment when content is encrypted and has missing samples (#8971).

  • origin: fixed "Link" prefetch header when presentation name was empty (#8959).

  • origin: fixed "Invalid range" error when using a combination of IsmProxyPass and a HTTP request using "Transfer-Encoding: chunked" and a missing "Content-Length" field (#8964).

  • libfmp4: fixed requesting a CPIX document for the last media segment when it has sub-second duration (#8961).

  • libfmp4: ignore QT Timecode tracks (#8962).

  • libfmp4: added mp4split-ffmpeg-plugins package, which enables decoding of AVC/H.264, image resizing, and encoding of JPEG images. Together, these features enable creation of tiled thumbnail tracks using only FFmpeg-based components, and without requiring a GPU.

Version 1.11.11 (2021-12-02)

Note

  • Added support for Alpine Linux 3.15.

  • Soon to be discontinued: CentOS 8, Debian 10, Alpine 3.13

  • capture: fixed capturing from file:/// (with an end time in the future) by no longer caching the filesize (#8958).

  • capture: when creating a Remix nPVR archive using --remix we now align the captured window to a GOP boundary (and align the other tracks accordingly).

  • mp4split, remix: lower resource usage when using query arguments for S3 authentication (#8955).

    When using S3 authentication with query arguments, some use cases could cause excessive file handle and memory usage. Since this did not happen with S3 authentication headers, adding --s3_use_headers could be used as a workaround.

    This has been fixed by moving the addition of S3 authentication query arguments to a later stage in http request handling. There should no longer be any discernible difference in resource usage between using S3 authentication query arguments, or using headers.

Version 1.11.10 (2021-11-09)

  • packager: use the profile (tt@profile) given by the TTML document when creating a TTML ISOBMFF track. When not present we default to either "http://www.w3.org/ns/ttml/profile/imsc1/text" (for text) or "http://www.w3.org/ns/ttml/profile/imsc1/image" (when images are present). The profile is used to create the (optional) third element in the codecs parameter (#8932).

  • libfmp4: updated to 'Dolby Vision Streams Within the ISO Base Media File format Version 2.2' (#8525).

  • dash: updated to 'Dolby Vision 2.2 Streams within the MPEG-DASH format' (#8525).

  • webvtt: allow WebVTT sidecar download when HLS playout is disabled (#8646).

  • capture: added support for extended languages (#8923).

  • mp4split: added support for extended languages in progressive MP4 (#8923).

  • capture: align clipping timespan to video GOP first, and use the aligned timespan for the other (audio/text) tracks.

  • libfmp4: correctly remap xml:id for style and regions and deduplicate overlapping cues when merging adjacent TTML fragment payloads (#8913).

Version 1.11.9 (2021-10-05) GA

This GA release includes various bug fixes and improvements (e.g. capture performance and gap handling) as well as support for ARM64 Ubuntu 20 and Rocky Linux 8 (as CentOS 8 replacement).

For general info about what you should take into account when upgrading, see: Upgrade to a New Version.

Notes

  • capture: insert gaps for missing segments (#8532).

  • manifest-edit: read #EXT-X-SESSION-KEY from main playlist (#8904).

  • live: fixed overwriting bitrate signaled by the "btrt" box (#8899).

  • capture: reuse HTTP connections. Significant benefits in speed and less resources required (#8897).

Version 1.11.8 (2021-09-21) RC

Note

  • Added support for ARM Ubuntu 20 (next to AWS amzn2).

  • Final release for Alpine Linux 3.12.

  • The Debian project has released new stable version 11. We encourage anyone using Debian 10 to consider upgrading or migrating to Ubuntu. USP will cease support for Debian 10 starting 2022.

  • Soon to be discontinued: CentOS 8.

  • capture: added the Track Fragment Base Media Decode Time 'tfdt' box to fragmented output.

  • capture: only use a single edit in fragmented tracks to compensate for a video composition time offset or audio priming (#8867).

  • live: added ProducerReferenceTimeBox to the media segments stored on disk holding the UTC time at which the following MovieFragmentBox was written to file. Note that they are only available in the archived segments and are discarded on playout and hence are only available to help debugging (#7889).

  • dash: updated definition of Representation@presentationDuration to be the sum of all SubsegmentDuration fields in the first 'sidx' box (no longer including the earliest_presentation_time field).

  • mp4split: use constant interval duration when generating thumbnail track (#8886).

  • libfmp4: updated AV1 Codec ISO Media File Format Binding to v1.2.0.

Version 1.11.7 (2021-08-16)

  • manifest edit: added support for the Apache QUERY_STRING environment variable, to make integration with mod_ext_filter easier.

  • hls: rewrite non-zero picture parameter set IDs in HLS .ts segments to work around broken macOS players (#8869).

    Certain older versions of the macOS QuickTime framework (which is responsible for decoding and playing media) cannot handle AVC1 elementary streams with picture parameter sets that have a non-zero ID, even though these are perfectly correct according to the AVC specifications. Since we produce new picture parameter sets and sequence parameter sets when transcoding video for the purpose of inserting keyframes, this can lead to frozen/stalled video playout, or corruption. To work around this problem, we rewrite the affected parts of the AVC1 elementary streams to set those IDs to zero.

Version 1.11.6 (2021-07-30)

  • manifest edit: removed the mod_unified_manifest_edit module, and replaced the C++-based manifest_edit executable by a Python script. (On Windows, this script is invoked by a batch file.)

Version 1.11.5 (2021-07-23)

  • libfmp4: support 2013 namespace for smpte timed text (#8862).

  • live: support multiple codecs in client manifest through distinct adaptation sets, even if ingested tracks do not have names (#8846).

  • hls: fixed output of fmp4 HLS keyframes when using --fixed_gop (#8854).

  • hls: add a EXT-X-DATERANGE tag announcing a splice to a Media Playlist at the same time as the last pre-splice Media Segment, or earlier if possible (#8884).

  • manifest edit: new plugins for generic descriptors add/remove. Supports Accessibility, Role, AudioChannelConfiguration, EssentialProperty and SupplementalProperty manipulation (#8804)

  • manifest edit: most configuration files now use a slightly different syntax, using a new plugin_config section. The change is possibly non backwards-compatible. Refer to the documentation for further details.

  • dash: work around issue introduced in 1.10.33 (r23396) which made Accessibility descriptors disappear in some cases (#8861)

Version 1.11.4 (2021-07-13)

  • added support for Rocky 8. CentOS 8 will be phased out later this year in favour of Rocky Linux (#8852).

  • hls: added support for Auto Return Mode breaks that terminate early (#8834).

  • hls: fixed failing worst-case scenario of applying emulation prevention when encrypting video elementary streams with corrupt slices. (#8849).

  • live: only returns the dvr window in the manifest when the ingest has finished (except when dvr_window_length is zero) (#8649).

  • live: always convert "text/dfxp" subtitles to standard "subt/stpp" format. The default type is text ('stpp.ttml.im1t'); only when the bitrate is signaled as 64000 then the type is set to image ('stpp.ttml.im1i').

  • libfmp4: fixed remapping of style and region identifiers when merging TTML documents (#8813).

  • packager: add the IMSC 1.0 Text Profile when creating TTML from WebVTT or 608.

  • capture: when capturing Smooth Streaming subtitles use the bitrate from the manifest to determine its type (text or image) (#8828).

  • libfmp4: fixed layer field in track header for subtitle tracks.

Version 1.11.3 (2021-06-21) GA

This GA release includes various bug fixes and adds support for Alpine 3.14 and AWS's ARM-based Graviton instances.

  • added support for Alpine 3.14.

  • added support for amzn2-aarch64, with Amazon Linux-based Dockerfile as an example that includes necessary OpenSSL workaround.

  • origin: fixed @startNumber (always based on epoch and @presentationTimeOffset (#8837).

  • libfmp4: include PlayReady's PRO (that contains a PRH) in HLS Media Playlists when using CPIX documents without explicit signaling (#8831).

  • libfmp4: added support for @frameRateMultiplier in TTML (#8826).

  • libfmp4: fixed using count() in filter expression (#8827).

  • rest-api: removed response body for successful POST to REST api (#8830).

  • live: fixed missing closed captions signaling in DASH manifests (#8824).

  • origin: fixed collapsing of file reads when encrypting samples (#8807).

  • packager: fixed 608 translation to TTML/WebVTT for Extended Western European character set Spanish/French (#8823).

  • dash: fixed signaling of @scanType for HEVC content when unspecified (#8819).

  • hls: added WebVTT cue IDs to work around Apple HLS player behavior (#8697).

    If WebVTT cues are split across fragment boundaries, and the end of the first part is shorter than 250ms, the Apple HLS player gets confused and fails to display the second part. This causes the subtitle to show only very briefly. Other HLS players, such as HLS.js and Shaka, handle this situation without any problems.

    It turns out that using unique cue IDs works around this issue, enabling the Apple HLS player to fully display the cues again. According to the WebVTT standard, cue IDs can contain almost all characters, but to avoid issues with other less compliant players, we use only a unique decimal number, derived via a hash from the begin and end timestamps, and the payload.

  • remix: added support for Apache subrequests to mod_unified_remix (#8817).

    Similar to Origin, Remix now supports Apache subrequests to handle HTTP(s) requests to remote storage. When enabled, significant performance and stability gains can be be achieved between the Remix server and the backend storage. cURL functionality is unchanged and backward compatibility for existing setups is maintained. Documentation: Cloud Storage Proxy.

  • packager: stopped warning about recovery points if part of IDR frames (#8829).

    When repackaging AVC streams with SEI messages containing recovery points, the Packager would always warn "Input file has recovery points (open GOP structure), output may not be supported by all players". However, some AVC streams provided by customers contained recovery points as part of IDR frames (a.k.a. keyframes), which makes those recovery points redundant. In such cases it is unnecessary to show the warning, so it has been silenced. Note that if recovery points are found in non-IDR frames, the warning is still emitted.

Version 1.11.2 (2021-05-17)

  • live: fixed vbegin/vend requests against /archive (#8805).

  • remix: fixed track matching, taking into account all "kind" values when matching tracks (#8793).

  • remix: do not deduplicate the target track selection set (#8726).

  • origin: fixed status code for missing SMPTE-TT media segment (#8797).

  • capture: fixed subtitle alignment when creating VOD clip (#8794).

  • vod2live: fixed alignment of sequence numbers across HLS Media Playlists (#8745).

  • vod2live: fixed alignment of start time with start of playlist (#8778).

  • added ARM64 support for Amazon Linux 2 (#8595).

Version 1.11.1 (2021-04-12) GA

This GA release introduces Unified Remix VOD2Live and includes many fixes as well.

For general info about what you should take into account when upgrading, see: Upgrade to a New Version.

Attention

VOD2Live requires a license update. Please contact sales@unified-streaming.com if you want to make use of this new feature.

The highlights of this GA release are the following:

VOD2Live

  • VOD2Live is a completely new solution. It allows you to create a linear live channel from VOD assets without the need for a Live encoder. You can schedule the VOD assets that you want to stream Live using a SMIL (XML) playlist that is processed with Remix in order to prepare the stream for playout with Origin. This solution builds on, and can be combined with, previously released playlist-based solutions like Remix VOD, Remix nPVR and Remix AVOD. For more info, please see our documentation: Unified Remix - VOD2Live.

Prefetching support

  • Unified Origin will now dynamically generate HTTP Link headers for most of the media segments it generates (previously, this was supported for Smooth Streaming media segments only). By configuring Apache, Link headers can be used to conditionally set the Akamai CDN-Origin-Assist-Prefetch-Path headers, potentially improving the cache hit ratio on the CDN. For more info, please see our documentation: Prefetch Headers.

Manifest Edit

  • After the first release of Manifest Edit in our previous GA (1.10.28), 1.11.1 GA broadens the scope of Manifest Edit by including support for HLS (in addition to DASH). Manifest Edit can be plugged into the Origin to post-process a manifest right after its generation, introducing the modifications that may be required by the downstream components present in your workflow. For more info, please see our documentation: Manifest Edit.

Dolby AC-4

  • This release introduces full support for Dolby's latest audio format, AC-4. It supports object-based audio and has been build from the start with streaming delivery in mind.

Improved handling of SCTE 35

  • As detailed in Release notes version 1.10.* a number of improvements have been made in the way SCTE 35 is handled, to increase compatibility with and robustness of ad insertion and ad replacement workflows.

Notes

  • vod2live: set presentationTimeOffset when using the --vod2live_start_time (#8763)

  • added support for Debian 11.

Version 1.11.0 (2021-04-01) RC

  • live origin: fixed race condition reading Timed Metadata & fixed duplicate tracks in server manifest (#8707).

  • origin: set @maxPlayoutRate at AdaptationSet level instead of at Representation level (#8758).