Release notes version 1.10.*

Version 1.10.35 (2021-03-29)

Attention

  • If you have been testing VOD2Live please contact sales@unified-streaming.com before upgrading to 1.10.35 or later because a VOD2Live license flag now needs to be activated before it can be used.
  • Final release for: Ubuntu 16.04 LTS.

Added

  • libfmp4: added VOD2Live license check (#8636).
  • origin: add Link headers to enable Prefetch Headers (#8145).

Fixed

  • origin: improved reading of Timed Metadata track consisting of many empty Media Segments (#8721).
  • origin: return a 404 for manifest requests that contain no media (#8700).
  • origin: when requesting a media fragment at the boundary of a discontinuity we now return a 404, instead of an empty media segment (#8741).
  • package-hls: compensate DTS and PTS timestamps in MPEG-TS for video containing composition time offsets (#8672).
  • live origin: fixed race condition reading timed metadata (#8707).
  • remix: store TTML-based subtitle tracks in the remixed output instead of using external references.
  • remix: always convert "text/dfxp" subtitles to standard "subt/stpp" format.
  • libfmp4: fixed overriding the track language with a less specific language than the one defined in the extended language box (#8709).
  • origin: refactor/fix RestAPI deletion process which previous reported 403 Forbidden/FMP4_API_FORBIDDEN Publishing point active when archive was in a valid "stopped" state (#5247)

Version 1.10.34 (2021-02-19)

Added

  • libfmp4: added support for AC-4 (#8526) and (#8528).

Fixed

  • libfmp4: associate EXT-X-DATERANGE splice_insert pairs (#8690).
  • packager: remove duplicate tracks in HLS audio groups (#8693).
  • origin: use a ratio of 0.35 for Representation@bandwidth for trickmode AdaptationSets (#8606).
  • origin: fixed number of backend storage requests for remixed output (#8694).
  • libfmp4: add all 'active' DASHEventMessages to Media Segments (#8667).

Version 1.10.33 (2021-02-05)

Note

  • Final release for Alpine Linux 3.11.
  • Soon to be discontinued: Ubuntu 16.

Added

  • libfmp4: added support for frames metric in TTML (#8471).
  • libfmp4: added support for milliseconds metric in TTML (#8668).
  • added support for Alpine Linux 3.13.
  • package_mpd: add Accessibility descriptor to video AdaptationSet (when CEA 608 is present) instead of its own text AdaptationSet (#8644).

Fixed

  • origin: fixed output of jpeg trickplay when Timed Metadata tracks are present (#8663).
  • libfmp4: added support for frames metric in TTML (#8471).
  • libfmp4: added support for milliseconds metric in TTML (#8668).
  • libfmp4: ignore invalid marker bits in cc_data_pkt (#8669).
  • libfmp4: fixed UTF-8 encoding of the 'Inverted Exclamation Mark' (#8657).

Version 1.10.32 (2021-01-15)

Fixed

  • libfmp4: use thread-safe gmtime.
  • vod2live: automatically set the Event@duration field (when unspecified) to the duration of the break (#8559).

Version 1.10.31 (2021-01-04)

Added

  • libfmp4: detect and remove invalid cues from a TTML document (#8621).
  • manifest edit: support for HLS manifest format. A use case for DEFAULT and AUTOSELECT attribute manipulation for audio and subtitle tracks is included.

Fixed

  • scte: always right align splice points given by SCTE 35 markers.
  • hls: make sure START-DATE attributes are identical across different types of Media Playlists.
  • libfmp4: ignore duplicate control codes in CEA-608 data (#8616).
  • hls: use PLANNED-DURATION only for SCTE35-OUT, all other EXT-X-DATERANGE tags use DURATION.
  • hls: always use the presentation_time` field of ``DASHEventMessage for the START-DATE of an EXT-X-DATERANGE tag containing an SCTE35-CMD.
  • hls: fixed a rounding error in START-DATE when matching a SCTE35-IN and SCTE35-OUT pair.

Version 1.10.30 (2020-12-11)

Added

  • origin: added option --hls.adjust_dts so that all decode timestamps precede composition timestamps by subtracting the minimum composition offset of the current media segment (#8577).

Fixed

  • remix: fixed a segfault when using --s3_region without '=' sign (#8589)
    • By accident the --s3_region option was incorrectly marked as an option that could be specified both with and without an argument. If you separated the argument with a space, e.g. --s3_region eu-west-1, this would cause a segmentation fault (SIGSEGV). Separating the argument with an equals sign, e.g. -s3_region=eu-west-1, would work correctly. This has been fixed, and the argument can now be separated by either a space or an equals sign.
    • Impact: none other than as described.
  • origin: Invalid EXT-X-MAP attribute in WebVTT media playlist with --hls.fmp4 (#8602).

Version 1.10.29 (2020-12-04)

Added

Fixed

  • live: return 404 when retrieving a HLS Media Playlist for a stream that got dropped (#8582).
  • origin: fixed "timelines.back().get_end_time() <= end" assert firing (#8557). This happened when truncating the audio window with a splice point at exactly the live edge and with a very small (pre-spliced) audio segment.
  • origin: return HTTP 408 (Request Timeout) for Apache timeouts.
    • Origin uses Apache primitives to communicate with the network. In some cases, these could fail with a timeout error, but Origin returned a more general HTTP status 500 (Internal Server Error) to the client. To allow clients to retry, Origin now returns HTTP status 408 (Request Timeout) instead. Any other Apache errors still result in HTTP status 500.
    • Impact: none other than as described.

Version 1.10.28 (2020-11-13) GA

This GA release introduces several important new features 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

As of 1.10.22 there is no more support for software transcoding on Linux as Intel has removed this from the Linux release of their Intel Media SDK, on which the transcoding functionality in our software relies. For Linux, there is only hardware transcoding on Ubuntu 20, see Ubuntu 20.04 - Intel Media SDK (2020) for more details. Software transcoding remains available on Windows.

The highlights of this GA release are the following:

Manifest Edit

  • This release includes the first iteration of Manifest Edit, a new tool designed to provide a layer of flexibility to the standard manifest generation tool chain. 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.

Storage Proxy

  • Origin 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 Origin and the backend storage. Traditionally, Origin has used cURL to connect to remote storage. That functionality has been left unchanged so that backward compatibility for existing setups is maintained.

Amazon S3 authentication

  • Amazon S3 signing functionality can now be run on a proxy as well as in the Origin. AWS authentication parameters can now be placed at the more logical point of where the S3 bucket is defined. Authentication has been moved to a separate module to support adding both S3 authentication headers and S3 authentication query parameters to outgoing requests.

Capture

  • Full support for capturing of SCTE 35 markers has been added by enabling realtime capture of Origin's Live DASH output. This means that the original SCTE 35 markers from a livestream may be re-used for VOD clips generated from the livestream using an nPVR workflow. With the introduction of this feature, we recommend capturing DASH instead of Smooth going forward.

Added

  • libfmp4: added option --no_inband_parameter_sets (#8275) to use out-of-band "avc1" instead of inband "avc3" parameter sets for dash and fmp4 hls.
    • When this option is enabled 'avc3' formatted input will be converted to 'avc1' by storing all inband parameters sets out-of-band instead. This may solves compatibility issues for clients that do not always support 'avc3' (e.g., when DRM is included) or when third-party ad insertion services can insert 'avc1' formatted ads only. The latter use case is especially relevant since remixed content (e.g., in a Remix AVOD workflow) is 'avc3' by default.
    • Documentation: --no_inband_parameter_sets
    • Note: The use of this option is not recommended.
    • Impact: none other than as described.
  • dash: added option --mpd.sidecar_ttml for adding a TTML sidecar adaptation set (#8513).
    • Sidecar TTML subtitles can now be enabled when fragmented TTML subtitles are provided as input. This works for both Origin output and when using Packager to statically package DASH according the isoff-live profile.
    • Documentation: TTML sidecar (enabled with --mpd.sidecar_ttml).
    • Impact: none other than as described.
  • manifest-edit: added "element_remove" plugin, supporting sidecar subtitle removal use case.
    • The Element Remove plugin for Manifest Edit allows you to remove any Period, AdaptationSet or Representation from a DASH client manifest (MPD). One use case for this functionality is the removal of the automatically generated WebVTT sidecar subtitles when fragmented WebVTT subtitles are used as input for VOD streaming.
    • Documentation: Element Remove.
    • Impact: none other than as described.
  • origin: allow IsmProxyPass directives in Location sections
    • In previous versions, IsmProxyPass directives were only effective in Directory sections. This has been corrected, and IsmProxyPass can now also be used in Location sections, which should make it easier to configure certain workflows (e.g., Amazon S3 access with authentication, as you can now place the S3 specific directives and corresponding IsmProxyPass directive in the same Location section).
    • Documentation: Dynamic Manifests.
    • Impact: none other than as described.

Fixed

  • libfmp4: fixed statting of unicode files on windows (#8538).
    • The use of unicode characters on Windows caused Apache to crash. This has now been fixed.
    • Impact: none other than as described.
  • wvtt: fixed incorrect merging of WebVTT cues when cue payload and settings were identical, but it was not a continuation (#8460).
    • In edge cases where two subsequent WebVTT cues contained identical payloads not covering a continuous time range (e.g., a repeated lyric in a song's refrain), these cues would be merged when packaged in fragmented MP4. This has now been fixed.
    • Impact: none other than as described.
  • hls: fixed pts offset for ID3 tag when the SCTE35 marker is created from an XML message (#8493).
    • The 10 second offset that is the default for HLS TS was not included in the PTS of ID3 tags generated from SCTE 35 markers that were ingested as XML (e.g., Cablelabs ESAM). This has now been fixed.
    • Impact: none other than as described.
  • hls: the calculation of BANDWIDTH attribute has been changed to reflect more accurately the algorithm adopted by Apple's media stream validator tool.
    • Impact: none other than as described.
  • live: fixed relative database_path in server manifest (#8520).
    • For use cases that require multiple Live server manifests for the same ingested livestream (e.g., setting up one with and one without Timed Metadata enabled), it is no longer required to use an absolute path to point to the database when setting up the additional Live server manifest. A relative path (downward only) is now allowed as well, with the path being relative to the Live server manifest (.isml).
    • Impact: none other than as described.
  • libfmp4: fixed license key check crashing on recent CPU models on Windows (#8511).
    • Certain recent CPU models advertise the 'SHA' CPU capability, which triggered a bug our included version of openssl. This has been fixed by including a more recent version of this dependency.
    • Impact: none other than as described.
  • origin: correctly encode URI parts when calculating Amazon S3 signatures (#8499).
    • Amazon S3 signatures are calculated from a so-called Canonical Request. To compose this request, parts of the original object URI must be encoded with different rules than which normally apply to URIs. We now take these S3 specific rules into account, so that e.g. path names with parentheses or other delimiters are signed correctly.
    • Documentation: Using S3 with Authentication.
    • Impact: none other than as described.
  • dash: when a --track_bitrate option is given when packaging a DASH manifest, it overrides the Representation@bandwidth attribute (which would normally be accurately calculated).
  • libfmp4: added merging of "style" and "region" elements when combining multiple TTML fragments (#8489, #8482).

Version 1.10.27 (2020-10-16)

Added

  • manifest-edit: first release of Manifest Edit tool to edit manifests
    • Manifest Edit is a Python-based tool that can be used to post-process a manifest right after its generation by Unified Origin or Unified Packager. The processing happens through a pipeline of plugins, introducing modifications that may be required by the downstream components present in your workflow. This first release focuses on DASH output only an includes a number of plugins: utc_add and utc_remove (#8435), manifest_order (#8434), service_description_add (#8443), supplemental_property_add (#8442), essential_property_add (#8442) and adaptation_sets_switching (#8444).
    • Documentation: Manifest Edit
    • Impact: none other than as described.
  • live: added X-USP-Last-Modified header. For an HLS Media Playlist it is set to the time of the last media segment plus its duration.
    • This is an experimental feature. It adds a USP specific version of the Last-Modified header when serving requests for HLS Media Playlists. This version of the header is media-based instead of server-based and may be used to rewrite the value of the normal Last-Modified header.
    • Impact: none other than as described.
  • capture: support for real-time capture of dynamic MPD with time-based SegmentTimeline (#8437).
    • Full support for capturing of SCTE 35 markers has been added by enabling realtime capture of Origin's Live DASH output. This means that the original SCTE 35 markers from a livestream may be re-used for VOD clips generated from the livestream using an nPVR workflow.
    • Note: This feature only works for DASH output that makes use of a time-based SegmentTimeline (i.e., as opposed to number-based).
    • Impact: None other than as described.

Fixed

  • dash: define XML namespaces for "cenc" and "mspr" at global scope. Use the prefix (instead of a locally defined namespace) in the "ContentProtection" element (#8184).
    • This fixes the known issue present in 1.10.18 GA that caused playback issues on older LG TV's for DASH output protected by PlayReady DRM.
    • Note: When defined in a 'ContentProtectionData' element in CPIX we interpret and change the scope of the 'mspr' namespace, if that namespace is present.
    • Impact: none other than as described.
  • hls: when encryption is used, set private_data_indicator value in MPEG-2 TS file format to "zavc" for "avc3" input.
  • hls: fixed a corner case where the size of a HLS media segment changed prior to a CUE-OUT marker (#8396).

Version 1.10.26 (2020-09-17)

  • hls: DATERANGE was missing when the event overlaps the dvr window, but both begin and end times were outside of the window. (#8412).
    • Similar to fix for DASH that was part of 1.10.25, but now for HLS.
    • Note: See info added to release note for DASH related fix in 1.10.25 for more elaborate explanation.
    • Impact: None other than as described.
  • capture: flush audio and video segments to disk while capturing for Remix nPVR (#8422).
    • When using Capture with the --remix option, Capture would keep all of captured audio and video data in memory until capturing the clip was finished. In certain cases, this lead to unreasonable requirements on RAM. Therefore, Capture will now also write to disk the audio and video data while capturing when its --remix option is enabled.
    • Note: captured subtitles are still kept in memory until the specified time range has been fully captured.
    • Impact: none other than described.
  • libfmp4: added validity checks to avc parser (#8388).
    • In certain edge cases processing of corrupt content would lead to a segfault. This has now been fixed and a (low-level) error will be thrown instead.
    • Impact: none other than described.
  • origin: changed the default setting for the UspSkipRewrite directive from off to on, so we don't rewrite anything by default, unless explicitly asked.

    This allows Apache <Location> and <LocationMatch> directives to apply to exact client URLs, such as /example/something.ism/.mpd.

    • To revert to the old default, add a UspSkipRewrite off directive in your global VirtualHost configuration (or for <Location />).
    • Alternatively, only add UspSkipRewrite off directives for the specific locations which need it. This applies in particular to locations used for mod_auth_token, as it actually requires URLs to be rewritten.
    • Impact: users of mod_auth_token must add UspSkipRewrite off to the location section(s) which use AuthToken* directives.

Version 1.10.25 (2020-09-08)

  • dash: DASHEventMessage was missing when the event overlaps the dvr window, but both begin and end times were outside of the window. (#8432).
    • An event can be active even though the start and end of the event fall outside of the DVR window. For example, a DVR window may be 5 minutes long, with 12 minute event that started 8 minutes ago. Before, the event would not be signaled in the MPD in such cases. This has now been fixed.
    • Impact: none other than as described.
  • origin: fixed positioning of DATERANGE and CUE-OUT/IN markers in HLS audio playlists (#8427).
    • In case of fMP4 HLS output an incorrect timescale was used when calculating the position of EXT-X-DATERANGE and CUE-OUT/IN tags in HLS Media Playlists for audio. This has now been fixed.
    • Impact: none other than as described.
  • packager: added btrt box to fmp4 subtitles subt/stpp / text/wvtt (#8421).
    • The max bitrate is now estimated and added to the btrt box when packaging subtitles in an MP4 container. Behavior regarding the average bitrate is left unchanged.
    • Impact: none other than as described.
  • remix: skip over tracks with hdlr type that remix does not suport, to avoid spurious FMP4_MISSING_FTYP errors (#8339).
    • Before, Remix would process all tracks specified in a SMIL playlist except for types of tracks that Remix was build to ignore. Now, Remix will only process tracks that contain a hdlr type that Remix explicitly supports: vide, soun, subt, text or meta. Any other tracks, Remix will silently ignore.
    • Impact: none other than as described.
  • hls: disambiguate the ID attribute of an EXT-X-DATERANGE.
    • After a break signaled through SCTE 35 has finished, the ID attribute of the SCTE 35 marker that signaled the break can be re-used according to the SCTE 35 specification. However, ID's for all EXT-X-DATERANGE tags in a HLS Media Playlist must be unique. The latter is now ensured.
    • Impact: none other than as described.
  • live: ignore sparse tracks when determining stopping/starting state (#8346).
    • Because timed metadata tracks only carry sparse content, they are no longer taken into consideration when determining whether a publishing point's should go from 'starting' (content has been ingested for some but not all tracks) to 'started' (content has been ingested for all tracks) or from 'stopping' (an End of Stream signal has been received for some but not all tracks) to 'stopped' (an EOS signal has been received for all tracks).
    • Impact: none other than as described.
  • hevc: when framerate and scantype information cannot be retrieved from "vps", try "sps" instead.

Version 1.10.24 (2020-07-31)

  • libfmp4: fixed TTML ingest corner case non-empty <span> without CDATA (#8371).
    • Before, processing a TTML document that contained a <span> element that wasn't empty but didn't contain any character data (e.g., it only contained a <br />), would result in an error. This has now been fixed.
    • Impact: none other than as described.
  • origin: fixed HDS playout from server manifest with --timed_metadata (#8367).
    • Origin no longer produces an error when a HDS media segment is requested for a time range that also contains an event message. This error was caused by the fact that HDS does not support SCTE 35. To fix this, Origin now ignores timed metadata tracks for HDS output.
    • Impact: none other than as described.

Version 1.10.23 (2020-07-10)

  • origin: use a constant target duration for subtitles (#8341).
    • Origin can now slice and segment subtitles dynamically at arbitrary boundaries, instead of on the inputs fragment boundaries only. This means that fragment length of the subtitles tracks used for input do not necessarily need to align with the segment length that you want to specify for your output.
    • Note: this also improves Origins slicing behavior of subtitles tracks at splice points.
    • Impact: none other than as described.

Version 1.10.22 (2020-07-02)

Added

  • origin: implemented storage proxy to improve performance when using remote storage.
    • Origin 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 Origin and the backend storage. cURL functionality is unchanged and backward compatibility for existing setups is maintained.
    • Documentation: Cloud Storage Proxy.
    • Impact: none other than as described.
  • s3_auth: split s3 authentication functionality off into a separate module.
    • To allow for more functionality and flexibility S3 authentication behavior has been separated out into it own mod_unified_s3_auth Apache module. In addition to signing requests as a URL-encoded query-string parameter, which we have supported for a long time already, this new module allows the use of the Authorization header as well. Furthermore, the fact that S3 authentication is now handled by a separate module, also allows the authentication to be taken care of at a reverse proxy cache that sits in between Origin and the remote storage, instead of it needing to be done by Origin itself.
    • Note: The legacy way of specifying the S3 parameters, is still supported for backwards compatibility.
    • Documentation: Using S3 with Authentication.
    • Impact: If you want to make use of this new functionality, you will have to install mod_unified_s3_auth (see How to Install).
  • libfmp4: support for merging SMPTE-TT documents containing images.
    • When image-based fragmented TTML subtitles are used as input, cues from subsequent fragments are now merged when the specified target duration for the output segments calls for this. This allows for more flexibility, as the segment length of the image-based fragmented TTML output can now be aligned with that of the other media.
    • Impact: none other than as described.
  • hls: use a fixed MPEGTS offset in X-TIMESTAMP-MAP tag to synchronize VOD WebVTT subtitles with transport streams (#8277).
    • For on-demand HLS streams with subtitles, instead of producing WebVTT Segments that use cue timings that are relative to the start of the segment in which they are contained (with an increased value for the X-TIMESTAMP-MAP tag in each segment providing the necessary offset to the start of the stream), the timing of WebVTT cues for this type of output will now be relative to the start of the stream instead (so that value for the X-TIMESTAMP-MAP tag remains the same across all segments). This should increase playback compatibility.
    • Impact: none other than as described.

Fixed

  • package_hls: accurately segment subtitles to a given fragment duration (#8268).
    • Before, when statically packaging a HLS Media Playlist for subtitles and specifying a --fragment_duration, the WebVTT Segments that Packager generated would be fragmented at the fragment boundaries of the input. Now, this limitation no longer exists and WebVTT Segments are generated at the exact duration specified.
    • Note: this also improves the slicing of statically packaged WebVTT subtitles at splice points (i.e., subtitles that are part of a statically packaged HLS stream within a Remix AVOD workflow).
    • Impact: none other than as described.
  • package_hls: fixed incorrect subtitle codec signaling when packaging from a TTML source to WebVTT (#8308).
    • When using fragmented TTML as input to create a statically packaged HLS Media Playlist for subtitles, output produced would be WebVTT Segments, but the codec signaled in the Media Playlist would be 'stpp'. This has now been fixed.
    • Impact: none other than as described.
  • origin: ignore events when requesting the /archive (#8208).
    • The /archive endpoint of returns the Live archive of a publishing point that Origin keeps on disk. Before, Origin would take events into account and erroneously slice the timelines of tracks in this overview at splice points, even though Origin performs slicing on its output that is generated from the Live archive and not on the Live archive itself. This has now been fixed.
    • Impact: none other than as described.

Version 1.10.21 (2020-05-14)

Added

  • packager:: added --no_prep command line option to skip preprocessing stage.
    • By default, Packager will perform some sanity checks and preparations on its input in a preprocessing stage. For example, it will remove non-unique SPS and PPS headers and will also check whether IDR frames are truly sync-samples. Using the --no_prep option will skip this.
    • Impact: Using this option may lead to unexpected results.
    • Note: Do not use this option unless you have very specific (and very good) reasons for it!
  • packager:: extract CEA embedded captions from an HEVC video track (#6914).
    • Since 1.10.16 Packager has been able to extract CEA embedded captions from AVC encoded video tracks. This is now supported for HEVC encoded video tracks as well.
    • Impact: none other than as described.
  • remix:: added warning for events that exceed the end of the clip (#8291).
    • Remix will now print a warning when it is processing a SMIL playlist in which an event is defined that starts or ends later than the end of the media specified in the playlist.
    • Impact: none other than as described.
  • libfmp4:: added HLG to VIDEO-RANGE attribute (rfc8216bis-07).
    • Include proper signaling of HLG type HDR content for HLS streams, as introduced in the 7th revision of the 2nd edition of the HLS specification.
    • Impact: none other than as described.

Fixed

  • origin:: return an empty DASH manifest when a publishing point has just started, but has not received any media yet (#8214).
    • Before, Origin would return a 404 when a request for an MPD was made to a publishing point in the very short window of time where the publishing point has switched to 'started' but has not ingested media yet. Now, Origin will return an empty MPD in such circumstances instead.
    • Impact: none other than as described.
  • packager:: do not remove AUD NAL units when preprocessing hev1 media.
    • To improve compatibility, AUD NAL units will no longer be removed when preprocessing hev1 encoded content (i.e., HEVC content of which the sample descriptions are stored in-band instead of out-of-band).
    • Impact: none other than as described.

Version 1.10.20 (2020-04-30)

  • libfmp4:: suppress rescaling assertion for timed metadata (#8282).
    • A stream where an encoder works around its inability to sent multiple SCTE 35 markers per sample by distributing those markers across multiple samples and offsetting their timing by a very narrow margin (e.g., 1 tick on a 10Mhz timescale) such that the margin cannot be properly rescaled to all relevant timescales (e.g., HLS's 90Khz timescale), does no longer result in an error.
    • Impact: none other than as described.
  • remix/origin:: fixed subtitle DASH playback (#8260, #8287).
    • When media contains smpte:backgroundImages in TTML tracks, remix/origin now reads and merges these tracks successfully. Prior to this fix, issues could be experienced when presenting smpte:backgroundImages tracks with [iss|mpd].minimum_fragment_length configured.
    • Note: Remixed files with subtitles require an origin of the same version. If you use an older Origin version, then you'll get the 'dur="indefinite"' instead of the correct timing information.
    • Impact: none other than as described.
  • live: serve announced MPD fragments, even if discontinuities occur (#8236).
    • When publishing points contain media sequence discontinuities, Origin handles this internally using fragments with a zero duration. This sometimes resulted in a FMP4_MPD_FRAGMENT_MISSING, even when the fragment was actually available. This has now been fixed by taking the zero duration fragments into account, and returning the correct fragment.
    • Similarly, the zero duration fragments could also result in duplicate URLs in returned sitemap XML output. This has also been fixed.
    • Impact: none other than as described.
  • origin: Added AWS S3 header signing to mod_smooth_streaming (#8266).

Version 1.10.19 (2020-03-27)

  • libfmp4: invalid cues in TTML documents are now removed and an informational message is logged (#8227).
    • A TTML cue is invalid when it ends earlier than it starts, or when its start and end time are identical, for example. To mitigate the problems that processing such cues caused, they are now removed and an informational message is logged when this happens.
    • Impact: none other than as described.
  • packager enable remote transcode for tiled thumbnail generation (#7901)
    • The --transcode_proxy_pass option now uses the remote transcoding service when generating tiled thumbnails (--trickplay, --fourcc=jpeg)
    • Impact: none other than as described.
  • live: fixed segfault when generating variant playlist from HEVC track (#8241).
    • When requesting a HLS Media Playlist for a HEVC track within a live stream, a segmentation fault could be caused (SIGSEGV), which would result in an empty reply from Origin. This has been fixed and Media Playlists for Live HEVC content are now generated correctly.
    • Impact: none other than as described.
  • live: only write an "mfra" box when at least one track has one or more media segments (#8195).
    • When streaming Live, Origin writes each (set of) track(s) send by an encoder to (a) separate live archive segment(s) of a specified length. Previously, Origin would automatically write an mfra box to a previous live archive segment when creating the next one. In some edge cases (e.g. a separately send sparse track for which no update was sent within the time window of a previous archive segment), this could lead to an empty archive segment with only an mfra box being created. This has now been fixed by only writing an mfra box if one or more media segments was sent for (at least one of) a (set of) track(s).
    • Impact: none other than as described.
  • hevc: fixed parsing of slice_deblocking_filter_disabled_flag (#8233).
    • When parsing headers for HEVC content a wrong default was used when slice_deblocking_filter_disabled_flag was absent. If not present, it is now correctly inferred to be equal to pps_deblocking_filter_disabled_flag.
    • Impact: none other than as described.
  • packager: added informational message when removing unaligned media segment boundaries (#8217).
    • When packaging multiple tracks into one fragmented MP4, Packager fragments the content only at boundaries that align across tracks. When boundaries within one track do not align with those in others (e.g., because the track contains more IDR frames, or because its complete timeline is shifted compared to the others), the boundaries that do not align are ignored. This behavior is not new. What has changed is that Packager will now print informational messages informing on any ignored boundaries.
    • Impact: none other than as described.
  • libfmp4: fixed parsing of avail descriptors in splice descriptors (#8218).
    • Instead of trying to parse all SCTE 35 splice descriptors, only segmentation descriptors are now parsed and others are skipped.
    • Impact: none other than as described.
  • cpix: in accordance with the CPIX 2.2 specification, accept the playlist="media" HLSSignalingData attribute value (#8200).
    • This fixes a known issue in 1.10.18 GA and ensures that our implementation of CPIX is fully aligned with the CPIX 2.2 specification. Now, the playlist attribute for the HLSSignalingData element accepts media as a value. For backward compatibility, playlist="variant", which has the same meaning, is still accepted.
    • Documentation: CPIX Document Requirements
    • Impact: none other than as described.
  • remix: aligned keyframe insertion for video tracks with different framerates (#8215).
    • When using Remix' transcode functionality to insert additional IDR frames at splice points, scenarios where different tracks have different frame rates (e.g., 25fps and 50fps) are now properly handled and no longer lead to slightly misaligned inserted IDR frames across tracks.
    • Impact: none other than as described.

Version 1.10.18 (2020-02-24) GA

This is a maintenance release that focusses on fixes and updates that improve compatibility.

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

Attention

As certain OS versions expire we will drop support for these versions. At the release of 1.10.12 GA we already announced that with the release of the next GA (1.10.18) support for Debian 8 and Ubuntu 14 would be dropped. To this, we want to add that support for CentOS 6 will expire in November of this year, and that Windows 12 is already on extended support. Therefore, you should expect these versions to be dropped, too. You can recognize the OS versions for which we plan to drop support by their repository names: the term deprecated is appended to them. More on this in End Of Support.

The highlights of this release are the following:

Packager

  • Support for CPIX, fully aligned with Origin.
  • Create DASH and HLS streams with PlayReady, Widevine and FairPlay protection from a shared set of cbcs encrypted CMAF files (CPIX only, see: Multi-DRM protected HLS and DASH from a shared CMAF source).
  • Extract CEA-608 embedded captions from a video track and store as TTML or WebVTT.

Origin

  • Support for --mpd.segment_template to override default logic that defines which 'SegmentTemplate' format is used.
  • Support for ingest of Tiled Thumbnails track to add it to its DASH output.

Remix

  • Support for S3 authorization through command-line options.
  • Support for audio silence for AC3, EC3 and DTS.

Packager and Origin

  • Support for SCTE 35 time_signal() command to signal splice events.
  • Support for DTS:X.

DASH

  • For all DASH output, calculation of mediaPresentationDuration is now compliant with the DASH-IF implementation guidelines.

Origin

  • DASH.js does not start at the Live edge in low latency mode: dash.js GitHub issue 3144 (fixed in dash.js 3.1.1).

  • PlayReady protected DASH output for which Origin automatically generates the ContentProtectionData is incompatible with LG WebOS 3.5 and 4.5 devices, because they do parse XML that defines a namespace in local scope. This is an LG problem for which they have been notified. In any case, to workaround the LG issue, you can use Apache's mod_substitute with something like the following configuration:

    Substitute "s/xmlns:cenc=\"urn:mpeg:cenc:2013\"/xmlns:cenc=\"urn:mpeg:cenc:2013\" xmlns:mspr=\"urn:microsoft:playready\"/nf"
    Substitute "s/pssh/cenc:pssh/nf"
    Substitute "s/IsEncrypted/mspr:IsEncrypted/nf"
    Substitute "s/IV_Size/mspr:IV_Size/nf"
    Substitute "s/kid/mspr:kid/nf"
    Substitute "s/&lt;pro/&lt;mspr:pro/nf"
    Substitute "s|&lt;/pro|&lt;/mspr:pro|nf"
    Substitute "s/xmlns=\"urn:mpeg:cenc:2013\"/xmlns:cenc=\"urn:mpeg:cenc:2013\"/nf"
    Substitute "s/xmlns=\"urn:microsoft:playready\"/xmlns:mspr=\"urn:microsoft:playready\"/nf"
    

Note

In 1.10.27 XML namespaces for "cenc" and "mspr" are defined at global scope so above workaround is no longer needed from 1.10.27 onward.

Capture

  • Without the --frame_accurate option, significant audio or video gaps might occur on clip boundaries, because Capture clips each track on the nearest sync-sample and does not take into account where the position of sync-samples on the video tracks when clipping audio tracks (which is a problem because each audio frame is a sync-sample, whereas this is not true for video and Capture may need to scan further to the left until it finds the start of a GOP).

Packager

  • #7649: The newly added feature that allows you to create DASH and HLS streams with PlayReady, Widevine and FairPlay protection from a shared set of cbcs encrypted CMAF files only works with CPIX, not with the DRM-related command-line options (in the latter case Packager will disregard the Widevine and PlayReady signaling when adding FairPlay).

CPIX

  • #8200: The implementation of HLSSignalingData is not fully aligned with version 2.2 of the CPIX specification. For the optional playlist attribute, media as a value is not supported. To get the same behavior, use variant as a value instead, as defined in version 2.1 of the CPIX specification.

Fixed

  • npvr: fixed capture bug when clipping subtitles (#8190)
    • This fixes a bug that was introduced after 1.10.12 GA. The bug caused Capture to add a wrong edit list when capturing a clip for a time range in which the subtitles start significantly later than the video. It mainly impacted Remix nPVR workflows, as the wrong edit list caused Unified Remix to trip up when the captured clip was used as a source to generate a stream from.
    • Impact: none other than as described.
  • live: fixed silent failure to create pubpoint database (#8194)
    • When Origin ingests a new livestream on a publishing points, it creates a SQLite database, amongst other things. Previously, when creating this database would fail, Origin would still report successful ingest (by writing 200 OK to the access logs). This has been fixed and Origin will now return a 500 i error in such cases.
    • Impact: none other than as described.
  • live: fixed overflow error in Sunset header (#8198)
    • The Sunset header was introduced in the previous release, 1.10.17. This fixes an overflow error that caused the Sunset header to be populated with the wrong value.
    • Impact: none other than as described.
  • dash: remove media segments with zero duration from the SegmentTimeline (#8193).
    • Since 1.10.11, Origin adds a 'EXT-X-GAP' tag to Media Playlists, alongside empty media segments that should not be loaded by the client. In some cases, this logic impacted Origin's DASH and Smooth output as well, and segments with a zero duration were added to the media timelines for these formats. This has now been fixed.
    • Impact: none other than as described.

Version 1.10.17 (2020-02-13)

Added

  • packager: added rebuilding of avc1/avc3 and hvc1/hev1 decoder configuration records (e.g. when converting in-band to out-of-band).
    • When repackaging an MP4 in which the out-of-band SPS/PPS headers change throughout the content (which is against the specification), Packager now maintains these changes and properly rebuilds a single out-of-band SPS/PPS header for the repackaged output.
    • Impact: none other than as described.
  • live: added Sunset header to segments to signal expected (automatic) archive eviction resulting from archive_length (#7843).
    • The Sunset header applies to Live streaming scenarios only. It is added to media segments and it signals when a media segment will no longer be available.
    • Documentation: Sunset.
    • Impact: none other than as described.

Fixed

  • dash: no longer write empty @value attribute for properties and descriptors.
    • Instead of writing an @value attribute with no actual value, the @value attribute is now omitted when there is no value to report for a particular property or descriptor in a DASH MPD.
    • Impact: none other than as described.
  • libfmp4: fixed "415 Error writing to bitstream. parsing aborted" for large AVC Decoder Configuration records.
    • In a live streaming scenario, when the encoder posted an init segment with a very large AVC Decoder Configuration record, Origin would report an error and not be able to ingest the stream. This has now been fixed.
    • Impact: none other than as described.
  • live: aligned the behavior of http expires / max-age headers for media segments between --archiving=1 and --archiving=0 (#7986).
    • Origin used to include Expires and Cache-Control: 'max-age' headers for media segments when --archiving=0 was set. In that scenario, Origin would set the time of expiry for the segments to the moment at which they would be purged from the archive. Origin did not add such headers to media segments when --archiving=1 was set. To ensure consistency, Origin will no longer add these headers when --archiving=0 is set either.
    • Impact: if you have configured --archiving=0 for your Live streaming setup and rely on the presence of caching headers for media segments, your cache might be affected by this change. However, note that the same type of information is communicated in the Sunset header that is added in 1.10.17 (see: Sunset).

Version 1.10.16 (2020-01-29)

Added

  • packager: extract TTML and WebVTT from mp4 (c608, stpp, wvtt, dfxp) (#6914).
  • cpix: renamed ContentKey's schemeType attribute to commonEncryptionScheme, which is the name chosen by DASH-IF (#7989).
  • This update aligns the functionality that was added in 1.10.15 with the CPIX specification. The commonEncryptionScheme attribute for the <ContentKey> element can be used to override the default CENC encryption scheme that Origin uses for its fMP4 HLS ('cbcs') and DASH ('cenc') output. It will leave all other output formats of Origin unaffected (i.e., for these output formats Origin will use its default logic).
  • Documentation: CPIX Document Requirements
  • Impact: none other than as described.
  • packager, origin, remix: use the shortest time interval that overlaps all available media segments to determine the offset and duration of an MPD, following DASH-IF guidelines (#4901).
    • In prior versions an MPD's mediaPresentationDuration was calculated as the difference between the earliest start time and latest end time of all media timelines (taking audio, video and subtitles into consideration). This caused problems when either audio or video started later or ended earlier, as that would result in a gap at the start or end of that media's timeline, compared to the mediaPresentationDuration. This is a common scenario when using Virtual subclips or when using Capturing VOD without frame accuracy, if your audio and video segments are not perfectly aligned (which is often the case). The newly implemented behavior no longer takes the subtitles timeline into consideration and calculates the mediaPresentationDuration as the difference between the latest start time and earliest end time of the audio and video timelines. In addition, a presentationTimeOffset is added were necessary. This aligns with the requirement specified in DASH-IF implementation guidelines - Necessary segment references in static presentations.
    • Impact: Although the newly implemented behavior is according to spec and we have tested it to solve several issues, you may still experience unexpected behavior because of it, as it might be that the player you use does not follow the spec on this point. Case in point is DASH.js, for which a fix to align it with spec was implemented only recently: dash.js GitHub issue 3152. Therefore, it is highly recommended to thoroughly test the behavior of the player that you use in your setup, in relation to this change.

Fixed

  • live: fixed intermittently disappearing Cache-Control and Expires headers for client manifests (#7843).
    • This fix partially reverts behavior that was introduced in 1.10.4 and present in the previous GA. Whereas Origin used to expire content that it expected to be updated (e.g., an MPD or HLS Media Playlist) at least 1 second from when the request was made (i.e., it counted the content's max-age down to 1 and then let it stay at 1 until there was an actual update to the content), the behavior in the previous GA tried to be more 'truthful'. It counted the content's max-age down to 1 and then did not add any expiry information to the content until the content was actually updated and a new expiration could be set. Unfortunately, the intermittently disappearing headers introduced confusion. Therefore, Origin will again expire content that it expects to be updated at least 1 second from when a request was made. As updating content is only relevant within a Live streaming context, this change does not affect VOD scenarios (for which Origin does not add cache headers at all).
    • Documentation: Expires and Cache-Control: max-age="...".
    • Impact: if you update from a version prior to the previous GA, please be aware that the previous GA also introduced other, more significant changes to the cache related headers that Origin adds in Live streaming scenarios. However, when you update from the previous GA the impact of this fix should be more reliable caching behavior, although this naturally depends on the exact configuration of your caches.
  • live: closing an archive segment always writes an "mfra" box and a "tfra" box for each track (#8109).
    • When streaming Live, Origin writes a Live archive to disk in archive segments of a user defined length. When the archive segment that Origin is writing to reaches the defined length, Origin closes the archive segment and starts writing to a new one. Prior to this change, when closing an archive segment, Origin would not write a "mfra" and "trfa" box to tracks that did not contain any content for the duration of the archive segment. This is a likely scenario for Timed Metadata tracks, which may not be updated for longer stretches of time. Although it wasn't the cause of any issues, the behavior was changed because the result did not align with how we expect a valid MP4 to be structured.
    • Impact: none other than as described.
  • origin, remix, transcode: make web server module RPM packages depend on a specific version of mp4split, to avoid mismatches (#7921).
    • When installing our software on RPM-based Linux distributions, a version mismatch between our different packages might occur (e.g., when upgrading or installing a previous version). This was caused by the fact that for dependencies on our own packages no explicit version was specified. This has now been fixed.
    • Impact: none other than as described.
  • libfmp4: fixed channelcount in stsd for DTS:X (#8085).
    • Fixes a small mistake in the implementation of support for the DTS:X codec, that caused the channel count to not be correctly signaled in the stsd box of the MP4.
    • Impact: none other than as described.
  • remix: fixed support for large gaps between subtitles (#7933).
    • When remixing clips, Remix will fill significant gaps on the timeline of a subtitles tracks to mitigate playback issues. It used to fill such gaps with a single empty cue. In edge cases where the gap on the timeline was a little over 20 minutes and the content used a high enough timescale, this caused problems. This issue has now been fixed by using multiple cues to fill larger gaps.
    • Impact: none other than as described.
  • live: ignore Timed Metadata tracks when determining live edge (#8078).
    • In edge cases where Origin was configured to use a DVR window that wasn't much bigger than the break duration announced in the Timed Metadata track of a stream, Origin could sometimes return an empty MPD. This was caused by the fact that the timeline of the Timed Metadata track was taken into account when calculating the live edge of the stream. This has now been fixed by ignoring the Timed Metadata tracks when determining the live edge.
    • Impact: none other than as described.

Version 1.10.15 (2019-11-21)

Added

  • libfmp4: added support for DTS-UHD / DTS:X profile 2 (#5257)
    • The DTS:X audio codec is now supported for DASH output from both Origin and Packager. Playback from other output formats like fMP4 HLS might work too, but is not supported, since DASH is the only format for which streaming DTS:X is actually specified.
    • Impact: none other than as described.
  • origin: added --time_signal option (#7316).
    • The SCTE 35 splice_insert() is considered legacy and a better alternative is to use the SCTE 35 time_signal() command to signal splice events. This is now supported and can be enabled using the --time_signal option. Enabling the use of time_signal() disables the use of splice_insert(), which is the default.
    • Documentation: --time_signal.
    • Impact: none other than as described, although thorough testing of any workflow that employs SCTE 35 time_signal() functionality is highly recommended, since it offers such a wide variety of options.
  • libfmp4: added --mpd.segment_template option (#3894).
    • It is now possible to override Origin's default behavior regarding the 'SegmentTemplate' format it uses to signal the media's timeline in the MPD it generates. The main use case for this option is to be able to specify --mpd.minimum_fragment_length but still get a 'SegmentTemplate' using $Time$ instead of $Number (which Origin switches to by default when specifying a custom length for the DASH segments it outputs). In general, it is recommended to use $Time$ for reasons described in SegmentTimeline blog.
    • Documentation: --mpd.segment_template.
    • Impact: none other than as described.
  • origin: add <Label> elements to DASH output for tracks which have --track_description specified (#5622).
    • When the --track_description option is used to specify a 'description' for a track, Origin will now also add this information to its DASH output in the form of a <Label> element that signals the description for the track in the MPD. This description may be used by a player to more clearly distinguish between the different kinds of tracks that a users can choose between.
    • Documentation: --track_description.
  • remix: added support for audio silence for ac3, ec3 and dts (core hd and dts:x) codecs (#1288).
    • When remixing content, Remix now automatically adds silent padding to audio tracks if any gaps occur in the audio timeline. This works for audio tracks encoded in AAC, AC3, EC3 or DTS (Core HD and UHD). It makes a Remix workflow more robust and should further minimize playback issues when concatenating clips.
    • Impact: none other than as described.
  • remix: added s3 authorization command-line options.
    • Unified Remix' command-line interface (unified_remix) now supports authentication when making requests to S3. Enabling it works the same as for mp4split.
    • Documentation: :ref: Authenticate requests to AWS S3.
    • Impact: none other than as described.
  • package_hls: set FORCED attribute for subtitles when packaging WebVTT and specifying --track_role=forced-subtitle (#7562).
    • In 1.10.7 and as part of the previous GA, support was added to set the 'FORCED' attribute to equal 'YES' for output from Origin when a track's role was set to forced-subtitle. However, this functionality did not work when statically packaging HLS using Packager. This has now been fixed.
    • Impact: none other than as described.
  • origin: added serving of tiled thumbnail jpegs, and generation of dynamic DASH manifests including these (#7498).
    • After support for Tiled Thumbnails was added to Packager in 1.9.5, Origin now also supports it. This means that Origin can ingest a Tiled Thumbnails track and add it to its DASH output (as that's the only output format that support this specific implementation of trick play at the moment). In addition to support for Origin, several configuration options have been added as well, which allow to specify how you want Packager to create the Tiled Thumbnails track.
    • Documentation: --trickplay --fourcc=jpeg.
    • Impact: none other than as described.
  • cpix: USP-specific schemeType attribute added to the <ContentKey> element to select the Common Encryption scheme type for fMP4 HLS and DASH output (#7278).
    • Important: attribute name changed to commonEncryptionScheme in 1.10.16!
    • To override the default CENC encryption scheme that is used for Origin's fMP4 HLS ('cbcs') and DASH ('cenc') output, support for a USP-specific attribute for the <ContentKey> element was added. However, note that this attribute's name was changed to commonEncryptionScheme in 1.10.16, after DASH-IF agreed on the use case of this attribute and added it to the CPIX specification under this new name.
    • Impact: not supported, use the updated implementation as added in 1.10.16.
  • remix: support for SCTE 35 Auto Return Mode. Auto Return Mode do not require cue messages at the end of the break with out_of_network_indicator set to 0.
    • It is now possible to use the SCTE 35 Auto Return Mode with Remix, which allows you to signal the start and end of a break in one SCTE 35 message.
    • Impact: none other than as described.
  • remix: allow downward relative dref URL creation (#7463).
    • Before, when a SMIL playlist that was used as input for Remix would contain relative references to tracks, using downward paths, the remixed MP4 generated by Remix would not include the downward paths, only the filenames. This has been fixed, so that it is now possible to create a remixed MP4 from a SMIL playlist that references tracks in subdirectories.
    • Impact: none other than as described.

Fixed

  • cpix: when statically packaging fMP4 HLS, playready and widevine signaling is retained when adding sample-aes with --encrypt-key-url (#6976).
    • This fixes a regression that made it impossible to statically package fMP4 HLS with a combination of PlayReady, Widevine and FairPlay protection. In such cases, the signaling for PlayReady and Widevine would not be present in the output. This has now been fixed.
    • Impact: none other than as described.
  • libfmp4: fixed overflow when truncating a progressive MP4 with vbegin/vend values over 4GB.
    • Creating a virtual subclip from a progressive MP4 source did not work when the specified start time was located more than 4GB 'into' the source. This has now been fixed.
    • Impact: none other than as described.
  • origin: allow for missing "mdat" when all data is referenced externally (#7791).
    • Origin no longer requires an "mdat" to be present alongside a "moov" in an MP4, as this is not a ISO BMFF requirement and it caused problems with dref MP4's generated with older versions of mp4split, which did not yet add an "mdat" when generating a dref MP4.
    • Impact: none other than as described.
  • package_hls: changed the default generation of GROUP-ID for subtitles to exclude the codec fourcc code.
    • Prior to this change, Packager appended the codec's FourCC code to the 'GROUP-ID' it associates with each subtitles track, i.e., a WebVTT encoded subtitles track would be assigned textstream-wvtt as its 'GROUP-ID'. When statically packaging a HLS stream that combines differently encoded subtitles tracks (i.e., IMSC-1 and WebVTT), this lead to these tracks being in different 'groups'. This change results in all subtitles tracks being in associated with the same 'GROUP-ID', textstream.
    • Impact: this may impact the way a player presents the selection of subtitles that are present in a statically packaged HLS stream. If this is the case and you're unhappy with the result, or if there are any other reasons why you want to override the default way in which Packager assigns a 'GROUP-ID' to tracks, you can make use of the --track_groupid option as described in: Overriding default playlist values.
  • package_hls: fixed encrypting of AC3 tracks in .ac3 files (regression introduced in 1.10.8) (#7536).
    • Fixed a regression that was part of the previous GA, which caused a precondition failed error message to be thrown when statically packaging an AC3 track for HLS TS with encryption. This use case now works properly again.
    • Impact: none other than as described.
  • metadata: always passthru Timed Metadata when 'timed_metadata' is defined (even when it's not part of a ?filter= query (#6189)).
    • Using Using dynamic track selection it is possible to filter a stream so that it will only contain tracks that comply with a (set of) filter rule(s). The fact that any track that is not explicitly included by the filter, is excluded from the stream caused problems because the need to also explicitly include Timed Metadata tracks is less apparent than it is for audio, video and text tracks, breaking workflows that relying on Timed Metadata and including filter(s) to dynamically select tracks. To avoid these problems, Timed Metadata tracks are now always included.
    • Impact: dynamically excluding a Timed Metadata tracks using the Using dynamic track selection option is no longer possible. We recommend to use separate server manifests for such scenarios instead (e.g., using Overview).
  • libfmp4: changed schemeURI for binary SCTE 35 data to urn:scte:scte35:2013:bin (#7354).
    • For inband event messages containing SCTE 35 messages in binary form, we used to mistakenly signal urn:scte:scte35:2014:bin as the schemeURI. This has now been changed to urn:scte:scte35:2013:bin instead, to comply with the SCTE 35 specification as well as DASH-IF IOP 4.2.
    • Impact: none other than as described.
  • libfmp4: correctly evaluate "und" systemLanguage when dynamically filtering (#7471).
    • Using Using dynamic track selection, it is now possible to filter tracks that have no specified 'systemLanguage' by filtering on systemLanguage==und.
    • Impact: none other than as described.

Version 1.10.14 (2019-08-22)

Fixed

  • package_mpd: output SCTE 35 <Event> using urn:scte:scte35:2014:xml+bin scheme (#7354, #7438).
    • Before, when statically packaging DASH with SCTE 35 the MPD would signal urn:scte:scte35:2014:bin as the scheme for the <Event> and use base64 encoding for the actual SCTE 35 message signaled in the event. This has now been changed to use the correct urn:scte:scte35:2014:xml+bin scheme with binary encoded SCTE 35 messages, as recommended in DASH-IF IOP 4.2.
    • Impact: Although the updated implementation as described above is according to spec, workflows that depend on the SCTE 35 signaling in DASH as produced by Packager prior to this fix might break and should be tested.
  • cpix: in accordance with version 2.2 of the CPIX specification, the ContentProtectionData element is now interpreted as "the full well-formed standalone XML fragment to be added to the DASH manifest under the ContentProtection element". The 'name' attribute of the CPIX DRMSystem element may be used to specify the 'value' attribute in the DASH manifest's ContentProtection element (#5786).
    • Prior to this change, our implementation of the ContentProtectionData element differed from the CPIX specification. It used to be interpreted as the base64-encoded, well-formed XML data to be added to the DASH manifest under the corresponding <ContentProtection> element. This has now been changed as described above to fully align with the CPIX specification.
    • Documentation: CPIX Document Requirements.
    • Impact: CPIX documents specifically prepared to be compatible with our previous implementation of this element will need to be updated.
  • cpix: in accordance with version 2.2 of the CPIX specification, the HDSSignalingData element is now interpreted as "the full drmAdditionalHeader element to be added to the HDS playlist (including the beginning and ending tags)" (#5828).
    • Prior to this change, our implementation of the <HDSSignalingData> element differed from the CPIX specification. It used to be interpreted as the base64-encoded data that falls under the drmAdditionalHeader element to be added to the HDS playlist. This has now been changed as described above to fully align with the CPIX specification.
    • Documentation: CPIX Document Requirements.
    • Impact: CPIX documents specifically prepared to be compatible with our previous implementation of this element will need to be updated.

Version 1.10.13 (2019-08-02)

Fixed

  • capture: fixed segfault on malformed media (#7197).
    • Using Capture to decrypt certain malformed, encrypted media resulted in a segmentation fault. This now results in an error message instead.
    • Impact: none other than as described.
  • capture: insert edit list in metadata track when capturing archive with --copy_ts or --remix option (#7234).
    • Before, capturing a stream with SCTE 35 markers while maintaining the original timestamps of the stream (i.e., using Capture's --copy_ts or --remix option) would break the SCTE 35 markers in the captured clip because the offset that was added to the tracks for video, audio and text through an edit list, was not added to the Timed Metadata track. This has now been fixed for these scenarios, by also adding an edit list to the Timed Metadata track.
    • Impact: none other than as described.

Version 1.10.12 (2019-07-25) GA

This is a maintenance release that focusses on fixes and updates that improve compatibility.

Warning

This version introduces significant changes to the headers that are set for caching purposes. When upgrading, ensure that you take these changes into account and align your configuration accordingly. If you do not do so, your cache will be invalidated. More info: Expires and Cache-Control: max-age="..." and ETag.

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

Note

As Debian 8 and Ubuntu 14 have reached end of life, we will stop supporting these operating systems starting with the release of the next GA version.

The highlights of this release are the following:

Packager and Origin

  • Implemented changes from DASH Amendment 5.

Origin only

  • Additional DRM use cases covered with CPIX.
  • Functionality to configure URL aliases based on Apache's Rewrite Map.
  • Improved caching header logic.

Capture

  • Improved clipping functionality.

CPIX

Packager

  • When statically packaging fMP4 HLS content with multiple DRM systems, adding FairPlay leads to the signaling for the DRM systems not being included.

Capture

  • When using the copy_ts or remix option, capturing SCTE 35 messages is currently not supported.

Notes

  • capture: when capturing for Remix nPVR with --remix write the sample data in a single contiguous block (instead of interleaved) (#7221).
    • When Unified Capture capture's a stream using the --remix option, it stores it on disk as a progressive MP4. Before, it used to interleave the media data. This caused a lot of requests to be made for subtitle information when Remix would be used to generate a clip from the captured content (like in nPVR use cases). This is because the timing information for subtitles is contained within the subtitle samples themselves instead of in an index, and with interleaved media these samples were spread out across the file. By storing media in a single contiguous block when capturing using the --remix option, this has been mitigated.
    • Impact: none other than as described.

Version 1.10.11 (2019-07-16) RC2

  • dash: fixed capitalization of IsEncrypted attribute.
    • Adjusted formatting according to PlayReady specification. Where IsEncrypted was used in the PlayReady related signaling in a DASH client manifest, this has now been changed to IsEncrypted.
    • Impact: None other than as described.
  • dash: added EventStream@presentationTimeOffset according to DASH Amendment 5 (#6245).
    • When a virtual subclip with a start and end time in the past is requested from a livestream, Origin generates an on-demand clip in response. To not rewrite the media's UTC-based timestamps and retain the original URLs to all media data, offsets are added to ensure correct timing for text, audio and video tracks. Based on changes introduced in DASH Amendment 5, an offset like this is now also added to the EventStream element, so that the timing information for event messages does no longer break in a Live2VOD workflow.
    • Impact: none other than as described.
  • remix: support use cases where subtitles may have arrived out of order (#7275).
    • In certain use cases for Live streaming subtitles may arrive out of order. Remix can now handle this.
  • cpix: generate Widevine and Marlin signaling for DASH when PlayReady DRM information is available (#5947, #6282, #6900).
    • In 1.10.9 RC1, a regression was introduced that kept Origin from generating DRM information for Widevine and Marlin for use cases where only PlayReady DRM information was provided. This has been fixed, such that it is working as it used to again.
    • Impact: none other than as described.
  • origin: added 'EXT-X-GAP' tag to fix media sequence discontinuities (#5818).
    • Before, discontinuities in media sequence numbers where signaled using 'EXT-X-DISCONTINUITY'. Now, the missing segment is added anyway, with a the 'EXT-X-GAP' to indicate that the segment URL to which it applies does not contain media data and should not be loaded by clients.
    • Impact: This fix is only expected to work on clients that support HLS protocol version 8. On older devices, playout will remain broken because they will ignore the 'EXT-X-GAP' and download the empty media segment that follows it.
  • origin: fixed time-based query parameters not being removed from HLS playlist when using --suppress_query_parameters (#6974).
    • In 1.10.9 RC1, Origin did not remove time-based query parameters when the --suppress_query_parameters option was used. This has now been fixed.
    • Impact: none other than as described.
  • origin: do not assert on empty MP4 tracks (#6928).
    • In 1.10.9 RC1, Origin failed to generate a client manifest in edge cases where the source content did not contain media for all tracks.
    • Impact: none other than as described.
  • origin: added --show-license option which prints license information (#6254).
    • Using --license-key and --show-license with no other command line arguments prints all license information to the terminal including expiry date and supported features
    • Impact: none other than as described.

Version 1.10.10 (2019-06-17)

  • origin: fixed CMAF backend to support video tracks with positive composition time offsets and an edit list.
    • CMAF content packaged by a third-party packager would in some edge cases use a combination of positive composition time offsets and an edit list that caused problems when used as ingest for Unified Origin. This has been fixed by making Origin properly handle such content.
    • Impact: none other than as described.

Version 1.10.9 (2019-05-27) RC1

Added

  • capture: clipping in unified_capture now uses Remix API (#6303).
    • Clipping of timespans is improved and now uses the same logic as Remix. This means that audio clipping is always right-aligned, while video clipping is always left-aligned on GOPs, or on frames when the frame_accurate option is enabled. That is, for video Capture will scan the timeline from the specified timestamp to the left until it arrives at the start of either the start of a GOP or a frame. While for audio it will scan to the right until the start of an audio frame. This is true for both the specified start and end time of a clip.
    • Impact: None other than as described.

Version 1.10.8 (2019-04-15)

Added

  • packager: reduce memory consumption when decrypting (#4625).
    • Instead of decrypting a complete file at once, this is now done in chunks. This leads to a significant decrease in the memory that is required, especially when decrypting very large files.
    • Impact: None other than as described.
  • packager: allow downward relative dref URL creation from file input (#5613).
    • It is now possible to create a dref MP4 that references content in a directory lower down its path. As the dref MP4 will reference the content using a relative path, it can be created locally, after which both the dref MP4 and the content that it references can be copied elsewhere, e.g. to an object storage. For security reasons, packager will continue to refuse creating upward relative data references.
    • Impact: None other than as described.
  • dash: add @presentationDuration when using sidx addressing.
    • Additional behavior for this attribute is implemented from DASH Amendment 5. Now, if a Segment Index (sidx) box is present in the source content the value of this attribute will be the sum of the value of the earliest presentation time and the values of all SubsegmentDuration fields in the first sidx box of the media segment.
    • Impact: None other than as described.
  • package-mpd: add @eptDelta when using SegmentTemplate $Number$ addressing.
    • This attribute is implemented from DASH Amendment 5. It specifies the difference of the earliest presentation time of the first media segment in the representation minus the value of the @presentationTimeOffset. This only affects contents packaged with fixed fragment duration.
    • Impact: None other than as described.
  • libfmp4: scan for SEI embedded captions in HEVC tracks. (#5816).
    • Embedded captions are now also detected and signaled when present in HEVC tracks. Identical to the behavior for embedded captions in AVC tracks, the captions will only be passed through and not processed in any way except that signaling for the tracks is added to the client manifest.
    • Impact: None other than as described.
  • origin: added --presentation_name to customize URL prefix in client manifests (#5977).
    • The option presentation_name overrides the name prefix used in URLs (or URL templates) in client manifests. It was implemented in order to support the use of Apache's RewriteMap based on URL aliases.
    • Documentation: --presentation_name and Using Rewrite Map for URL aliases.

Fixed

  • libfmp4: added VIDEO-RANGE attribute for Dolby Vision dvh1 (#6205).
    • For dvh1 encoded Dolby Vision tracks the 'VIDEO-RANGE' attribute with the 'PQ' value was not added to HLS Master Playlist. This has now been fixed, making the behavior consistent for both dvh1 and dvhe encoded Dolby Vision tracks.
    • Impact: none other than as described.
  • origin: fix TS ingest with HLS encrypted AAC playout (#6009).
    • When requesting encrypted HLS TS output from VOD content ingested as HLS TS, the Media Playlists for the AAC audio that Origin would generate incorrectly referenced the audio as .aac instead of .ts segments. This has now been fixed.
    • Impact: None other than as described.
  • hls: adjust DTS in MPEG TS when audio priming is present in an edit list (#5248).
    • The 10 seconds offset added to media when packaging HLS TS is now adjusted for audio by taking into account the amount of audio needed for priming, as signaled in the audio track's edit list. This fixes a rare issue where an audio track that requires considerably more samples for priming would be out of sync with the video when packaged as HLS TS.
    • Impact: None other than as described.
  • origin: fix incorrect segment duration in HLS manifests when splice media is used (#5810).
    • In 1.9.x, an event message would be truncated from a HLS Media Playlist just before the media segment that it applied to would. This lead to the problem that the media segment would no longer be spliced at the moment that is was about to fall outside of the DVR window (and therefore be truncated from the HLS Media Playlist). This behavior has now been fixed.
    • Impact: None other than as described.

Version 1.10.7 (2019-03-05)

Added

  • dash: add @endNumber (the number of the last segment provided in the Period) when different from the nominally derived number.
    • This attribute is implemented from DASH Amendment 5. In a scenario of streaming DASH with a timeline that uses numbers instead of timestamps a player is normally unable to determine whether a track covers the full media's duration or not, which may lead to requests for segments that are not there. With the number of the last segment for each track explicitly signaled a player can potentially avoid such requests.
    • Impact: Given the fact that this attribute is a very recent addition to DASH, most players will not recognize and instead ignore it.
  • capture: support positive composition time offsets when transcoding a media segment with --frame_accurate (#5608).
    • The transcoding back-end has been rewritten and can now handle positive composition time offsets when capturing a stream using --frame_accurate.
    • Impact: The updated transcoding back-end uses version 2018 R1 of Intel's Media SDK. Please refer to the installation instructions on how to update.
    • Documentation: Intel Media SDK.
  • dash: updated DASHEventMessage according to Amendment 5.
    • In accordance with DASH Amendment 5, the content of event messages will be base64 encoded for signaling in the DASH MPD. The only exception to this are SCTE 35 messages, of which the contents will still be represented in XML. The reason for this exception is to not break backwards compatibility.
    • Impact: None other than as described.
  • capture: added support to use CPIX as decryption option --decrypt_cpix (#5749).
    • Capture can now process a CPIX document to decrypt a stream. This is especially useful when working with streams that use multiple keys.
    • Documentation: Decrypt using CPIX with --decrypt_cpix.
  • cpix: added support for using DASH, ISS, HDS signaling for playout manifests (#5584, #5811).
    • In addition to explicitly specifying the DRM signaling for HLS, it is now possible to do this for all the other playout formats as well. For more info, please refer to the relevant documentation that is linked to below.
    • Note: It is recommended to add as little explicit signaling to a CPIX document as necessary, and rely on Origin or Packager generating it instead.
    • Documentation: Using implicitly generated signaling.
  • cpix: added support for generating DASH, HLS, ISS, HDS signaling for playout manifests (#5564).
    • When an empty content protection element for a specific playout format is present in a <DRMSystem> element in a CPIX document, Origin will interpret this presence as a request to generate the necessary signaling. This behavior works for all play-out formats. For more info, please refer to the relevant documentation that is linked to below.
    • Documentation: Using implicitly generated signaling.
  • cpix: no longer converts a given <PSSH> version 1 to 0, or vice versa for DASH init segment (#5620).
    • The version of a PSSH box inside the <PSSH> element of a <DRMSystem> of a CPIX document is no longer converted. The PSSH box is now used as-is instead, regardless of whether it is version 0 or 1 and regardless of use case.
    • Impact: None other than as described.
  • libfmp4: the id attribute of a DASHEventMessage is hashed from the message_data and presentation_time fields.
    • This change has been implemented to support SCTE 35 messages that signal a cue out event with implicit start time (e.g., splice_insert() with splice_immediate_flag=1).
    • Impact: None other than as described.
  • libfmp4: write 'EXT-X-MEDIA' attributes in order as listed in RFC8216.
    • Formerly, HLS playlists presented attributes for '#EXT-X-MEDIA' in no specific order. Now, the order used in the examples of RFC 8216 is used.
    • Impact: None other than as described.
  • libfmp4: added forced-subtitle, easyreader and karaoke roles.
    • It is now possible to specify forced-subtitle, easyreader and karaoke, using --track_role. These new DASH roles are specified in Amendment 5 to the DASH specification. One role also affects HLS output: When using the forced-subtitle role for a track, it will be signaled as 'FORCED=YES' in a HLS Master Playlist.
    • Impact: None other than as described.

Fixed

  • origin: added 'VIDEO-RANGE' attribute to 'EXT-X-I-FRAME-STREAM-INF'.
    • In earlier versions the 'VIDEO-RANGE' attribute was mistakenly omitted in the information signaled for I-frame Playlists in the 'EXT-X-I-FRAME-STREAM-INF' of the Master Playlist.
    • Impact: None other than as described.

Version 1.10.6 (2019-02-15)

Added

  • dash: For AC-3 the Audio Channel Configuration with schemeURI "tag:dolby.com,2014:dash:audio_channel_configuration:2011" is added.
    • No specific audio channel configuration was added for AC-3 before. Now, it uses the same updated scheme for signaling as E-AC-3 tracks.
    • Impact: As specific signaling for AC-3 was not present before and because players should ignore signaling that they don't understand, this change should not have any impact.
  • apache: write more debug logging when enabled (#5526).
    • Increased the information that Origin logs when its log level is increased. Output now includes all the info that Packager writes to the error log when running similar commands on the command-line, instead of through Origin.
    • Note: the recommended log level is warning.

Fixed

  • capture: when capturing for Remix nPVR with --remix use DTS instead of PTS (#5489).
    • Capturing a stream with B-frames could result in bad output because later frames on which a B-frame relied for proper decoding would not necessarily be part of the capture clip. This has been fixed by now capturing based on the decode instead of presentation time of samples.
    • Impact: None other than as described.

Version 1.10.5 (2019-02-01)

Added

  • hls: added support for multiple DRM signalings.
    • It is now possible to signal multiple DRM systems in a single HLS playlist. This allows for the combination of PlayReady and Widevine, for example.
    • Impact: None other than as described.
  • package-mpd: added support for ISO BMFF Live profile urn:mpeg:dash:profile:isoff-live:2011 (#5441).
    • It is now possible to statically package DASH according to the urn:mpeg:dash:profile:isoff-live:2011 profile. This profile has always been the default profile for Origin's dynamically generated output, but is now supported by Unified Packager as well.
    • Note: When using this feature, note that Packager will create separate files for all of the stream's DASH segments in order to make the output comply with the requirements of the profile.
  • origin: strip version tag from output used to generate ETag & sitemap hash (#5531).
    • The version tag is now omitted to ensure that identical content generated by different versions does not result in a different ETag and sitemap hash.
    • Impact: This change is in addition to other changes to caching headers introduced in 1.10.4. Please take into account all of these changes together and determine how they will impact your setup before upgrading, as well as what configuration changes they may require.
    • Documentation: ETag.

Fixed

  • origin: fixed duration overflow of a SCTE 35 message that occurred with a duration longer than 429.5 seconds (and a 10MHz timescale) (#5533).
    • As the duration of a SCTE 35 message is stored as 32 bit value, an overflow would occur when the number representing the duration would get very high. To work around this issue, events that use a timescale of 10MHz are now rescaled.
    • Impact: None other than as described.
  • origin: fixed bug where additional DRM data signaling in HLS Media Playlist is not updated for key rotation (#5503).
    • For use cases employing key rotation with HLS, the additional DRM signaling data in a HLS Media Playlist would not be updated over time. This has now been fixed.
    • Impact: None other than as described.
  • origin, capture: fixed bug where Irdeto PlayReady Protected HLS was not using a 0x0 IV (#5503).
    • For use cases where Irdeto PlayReady Protected HLS as the DRM system, an incorrect Key Initialization Vector was used. This has now been fixed.
    • Impact: None other than as described.

Version 1.10.4 (2019-10-22)

Added

  • packager: when no Widevine or Marlin DRM is provided, Widevine and Marlin DRM is no longer generated for DASH (#5486).
    • In earlier versions, signaling for Widevine and Marlin DRM would automatically be added when statically packaging DASH with PlayReady DRM. This behavior has been removed.
    • Impact: In order to get Widevine or Marlin DRM signaling added when statically packaging DASH, this signaling has to be explicitly added now.
  • libfmp4: DASH Manifest DRM signaling is now sorted by DRM System ID (#5455).
    • The order in which DRM systems in the DASH MPD are signaled is now based on DRM System ID.
    • Impact: As the order in which DRM systems are signaled does not have any meaning, it is not expected that this has any impact other than as described.
  • packager: allow fraction syntax for --fragment_duration (default is still ms) (#5460).
    • When statically packaging content, the fragment duration can now be specified using fractions. This allows higher accuracy. When fractions are used, the specified value is interpreted in seconds. The default, when not using fractions, is to interpret the specified value in milliseconds.
    • Impact: None other than as described.
  • origin: improved HTTP headers Last-Modified, ETag (#2662, #3550).
    • For requests beyond the DVR window (but within the archive) no Cache-Control or Expires headers are set anymore. Prior versions of Origin had different behavior and would always expire at least 1 second ahead of request time, which mitigated instantly flushing a downstream (CDN) cache. ETag header is now based on (a hash of) the Origin-generated payload.
    • Documentation: Expires and Cache-Control: max-age="..."
    • Impact: As proper caching is crucial in video streaming, please make sure that your CDN and player operate correctly with the new Origin headers. Specifically, be aware that an in-place upgrade of Origin invalidates all assets, which may cause flushing your entire (CDN) cache.
  • cpix: added HLSSignalingData for Master Playlist.
    • It is now possible to explicitly add the DRM signaling for a HLS Master Playlist to a CPIX document. For more info, please refer to the relevant documentation that is linked to below.
    • Note: It is recommended to add as little explicit signaling to a CPIX document as necessary, and rely on Origin or Packager generating it instead.
    • Documentation: Using implicitly generated signaling.
  • libfmp4: read transformation matrix from tkhd.
    • Before, transformation information present in the tkhd was ignored. An example of the way in which such information may be used is to signal that a horizontally encoded clip should be turned 90 degrees on playout.
    • Impact: None other than as described.

Fixed

  • ingest: fixed regression introduced in 1.7.32 (#5302) where a fragment

    (with a different bitrate) from the second encoder may overwrite the fragment from the first encoder.

    • This is a fix for failover setups that use two encoders to push to the same publishing point. In such cases, when two different fragments would be received at exactly the same time, the second fragment would overwrite the first.
    • Impact: None other than as described.

Version 1.10.3 (2018-12-10)

Added

  • capture-hls: added decryption support for fMP4 from identity URL in EXT-X-TAG tag (#4620).
    • If an identity URL that points to a encryption key is signaled in the EXT-X-TAG of a fMP4 HLS stream, Capture can now process this information to decrypt the stream.
    • Impact: None other than as described.

Version 1.10.2 (2018-12-03)

Added

  • libfmp4: dynamic track filtering of systemLanguage is now case insensitive (#4962).
    • When filtering tracks, language tags are now treated case insensitive, as defined in RFC 5646.
    • Impact: None other than as described.
  • libfmp4: Language tag formatting is now enforced (#4962).
    • Regardless of the capitalization specified on input, language tags will will be formatted as defined in RFC 5646. This means that en-us will become en-US and zh-hans will become zh-Hans, and so on.
    • Impact: In case you have been using non-conformant formatting of language tags, your output will change to comply with RFC 5646's specification. This may impact playout behavior, if your player somehow does not fully support this standardized way of formatting.
  • package-hls: support packaging of WebVTT straight from TTML (#5080).
    • When statically packaging HLS it is now possible to generate a HLS Media Playlist with WebVTT subtitles directly from TTML. Before, this was only possible from an fMP4, as the language information would not be present when using TTML as the direct source.
    • Impact: None other than as described.
  • remix: SMIL parser is now namespace aware.
    • Remix uses SMIL formatted playlists as input. It is now aware of namespaces defined within such a playlist.
    • Note: Please take this into account when adding DASH event messages to your playlist.
  • capture: MPD parser is now namespace aware.
    • To capture DASH an MPD is used as input for Capture. When processing such an MPD, Capture will now be aware of any namespaces defined within it, and process the MPD accordingly.
    • Impact: None other than as described.
  • libfmp4: added a new Dynamic Track selection using ScanType i (#4644).
    • It is now possible to dynamically filter tracks based on their scan type. This allows for filtering between progressive and interlaced tracks.
    • Impact: None other than as described.
  • package: aligned --encrypt_key_url to have the same behavior as origin, the license acquisition url should be absolute, the relative url is no longer resolved (#4603).
    • Since version 1.9.1, Origin no longer allows the use of a relative URL to specify the HLS license acquisition server. Similar behavior has now been implemented for Packager.
    • Impact: None other than as described.

Fixed

  • origin: removed discontinuities in sequence numbers for HLS/HDS when using [hls|hds].minimum_fragment_length in VOD presentations.
    • This is a fix for edge cases where, using [hls|hds].minimum_fragment_length, a HLS or HDS segment length shorter than fragment length of the source content was specified. Doing so lead to discontinuities in the sequence numbers of the output, which in turn could lead to playback problems.
    • Impact: None other than as described.
  • cpix: use base64 (instead of hex) for the explicitIV attribute (#5067).
    • In 1.9.x, support for CPIX was added. This current release corrects an issue where the explicitIV attribute in a CPIX document was wrongly encoded as hex, instead of base64.
    • Impact: This will break workflows that rely on CPIX documents with a hex encoded explicitIV attribute.

Version 1.10.1 (2018-11-13)

Added

  • dash: updated Dolby Vision codec signaling to 'Dolby Vision streams within the MPEG-DASH format v1.1'.
    • Signaling of codec string for Dolby Vision tracks is now compliant with Dolby's updated specification, e.g., dvhe.stn has been changed to dvhe.05.06.
    • Impact: If you make use of Dolby Vision tracks, ensure that players on the client devices that you support are compatible with this updated signaling.
  • package: add sequence headers to sample entry for hev1 when not present.
    • To guarantee broader compatibility, information from in-band parameters sets in media that is encoded according to the HEVC hev1 subcodec is now added to sequence headers, if such headers are not present.
    • Impact: None other than as described.

Fixed

  • libfmp4: added sub-sample encryption to Dolby Vision tracks.
    • Before, full sample encryption was incorrectly used for Dolby Vision tracks. This behavior has been corrected to use sub-sample encryption instead, to be fully compliant with the Dolby Vision specification.
    • Impact: None other than as described.

Version 1.10.0 (2018-11-08)

Added

  • package-hls: offset the timestamps of generated MPEG-TS and AAC/AC3/EAC3 audio elementary streams by --timestamp_offset (#4791).
    • When statically packaging HLS Transport Streams (TS), the default is to offset media by 10 seconds (since version 1.6.5). This follows Apple's practical implementations of HLS, as well as those within the broader industry. However, if this default does not suit your needs you can now use --timestamp_offset to override it.
    • Note: As the offset of 10 seconds is widely used and supported within the industry we strongly recommended against changing this default.