Release notes version 1.8.*
origin: fixed missing 2 seconds of audio when ingesting M3U8 and outputing a multiplexed HLS stream (#4165).
remix: fixed padding audio tracks having a different timescale (#4182).
remix: added support for referencing more than 4GB external sample data.
origin: return 404 instead of 500 when requesting a fragment that is not available (when using progressive mp4 as storage format) (#3892).
hevc: set short_term_ref_pic_set_idx to zero when not present (#3569).
hevc: updated HEVC profile_tier_level() parser.
Included support for combinations of profiles, tiers and levels that were added to the HEVC standard more recently, for advanced use cases like 4:2:2 chroma subsampling.
dash: when requesting a 'start again' MPD for a Live presentation that is still in progress (i.e. specifying the begin time of the program with "?t=<utc-time>"), the MPD@TimeShiftBufferDepth is not set. (#3857)
In 1.8.3 behavior was introduced that set
MPD@TimeShiftBufferDepthto the duration of the archive in situations as described above. This has been changed back to the
MPD@TimeShiftBufferDepthnot being set at all.
dash: correctly set MPD@availabilityStartTime for Live events. (#3834)
In 1.8.3 behavior was introduced that made
MPD@availabilityStartTimedefault to the Unix epoch for Live events. This has been changed to the
MPD@availabilityStartTimereflecting the first available segment.
origin: fixed incorrect signaling of chunk offsets in progressive MP4. This occurred in very infrequent edge cases when referencing 4GB files.
Choice between 32 or 64 bit adressing used to be based on size of media data in MP4 only. In edge cases where media data was just below 4GB, but the initliazation data pushed the total size beyond that boundary, this caused problems.
package-hls: do not write empty CHANNELS attribute in the master playlist when attribute is not available in the media playlist. (#3909)
origin: for hls, never write a BANDWIDTH attribute with a zero value since that is not allowed (write a value of 1 instead).
origin, packager: improved HLS playlist 'NAME' tag generation for languages.
The HLS playlist
NAMEtag will now include track roles if present, e.g.
NAME="English (commentary)". It will also include region languages and scripts if present, e.g.
Impact: this behavior ensures that two tracks of the same language that differ in their role, script or region, will have a different
NAMEtag. Before, this was not the case and tags of such tracks needed to be differentiated manually (which can be done using
origin: added rational number support to filter expressions.
It is now possible to use rational numbers, i.e. integer fractions, in filter expressions for dynamic track selection.
Documentation: Rational number support
origin: updated REST API purge, update and delete behavior.
The REST API now supports updating the configuration of a publishing point regardless of its state. The possibility to delete a publishing point in a 'starting' state has also been added. In addition, it is now an option to completely purge a publishing point using
Impact: scripts that make use of the REST API might result in different behavior in some cases, as certain commands are now valid in more publishing point states.
origin, mp4split: added presentation time offset for DASH.
Added mp4split command line option
--mpd.presentation_time_offsetthat can be used to change
@presentationTimeOffetin all 'SegmentTemplate' elements.
origin, packager: added support for CMAF.
origin, packager: added support for fMP4 HLS.
Unified Packager can now use CMAF packaged content to create Master, Media and I-frame playlists to stream fMP4 over HLS, in accordance with HTTP Live Streaming specification. In addition, Unified Origin can now dynamically package and output fMP4 HLS.
Documentation: Packaging HTTP Live Streaming with fragmented MP4 (fMP4 HLS) and --hls.fmp4
origin, packager: added support for 3rd eds cenc, 'cbcs' scheme.
With support added to Packager as well as Origin, it is now possible to encrypt content statically or on-the-fly, using the 'cbcs' scheme specified in Common Encryption 3rd Edition. Encrypting according to this scheme is a requirement when you want to add FairPlay DRM to fMP4 HLS. The 'cbcs' scheme is also supported by PlayReady 4.
origin, packager: added support for RFC 5646 language tags, using --track_language.
Both Packager and Origin now support the use of extended language tags. This allows for the signaling of regional varieties of a common language, for example. By default a track's language is taken from the input track's media info, but it can also be specified using the
packager: package CMAF file with sync-samples only, using --trickplay.
It is now possible to package a CMAF compliant MP4 that contains only sync-samples, including proper signaling. Such a file can be used to add trick play features to a stream.
Documentation: Adding trick play to a DASH or HLS stream
origin: verify and validate the track specification given in the request URL.
When a request URL contains track specifications, e.g. using Using dynamic track selection, these specifications are now verified and validated, adding a basic form of security.
Impact: although the added verification and validations is a basic form of security, it is strongly advised to add additional security measures regarding the requests that can be made.
origin: added option --mpd.suggested_presentation_delay.
Can be used to configure the suggested delay of the presentation compared to the Live edge, as represented by
MPD@suggestedPresentationDelayin the MPD.
origin: added Custom HTTP Status codes (Apache) for HLS and MPD.
origin: MPEG-DASH Live with Live2VOD.
When a Live event has finished the updated MPD remains 'dynamic' and the
MPD@MediaPresentationTimeis set to the total duration of the event. A 'static' MPD of the finished Live event is available by requesting the MPD with the additional query parameter
origin: MPEG-DASH Live with 'start again'.
When requesting a 'start again' MPD for a Live presentation that is still in progress (i.e. specifying the begin time of the program with
MPD@TimeShiftBufferDepthis set to the duration of the archive.
Impact: some players incorrectly use the
MPD@TimeShiftBufferDepthto control the size of the scrubbar. This value should only be used to calculate the availability times of the segments.
origin: for hls, no longer add track role to value of 'GROUP-ID'
Before, tracks with a specific role (like 'commentary', or 'caption') were put into their own group. This behavior has been changed because it was not compliant with the HTTP Live Streaming specification.
origin: fixed missing cache header when publishing point is in stopping state.
When an encoder POSTs an End of Stream (EOS) signal to at least one track of a livestream, the publishing point will switch from a 'started' to a 'stopping' state, until an EOS signal is received on all tracks and the publishing point switches to a 'stopped' state, which results in the stream being advertised as VOD. Formerly, cache headers were already omitted in the 'stopping' state. Documentation: Overview of possible publishing point 'states'
origin: fixed iso8601 deserialization which lead to a non-valid value when not using UTC to specify --mpd.availability_start_time. (#1735)
libfmp4: never write zero sample durations.
libfmp4: fixed bug where language code "qaa" was translated to "qtz". (#2922)
packager: changed error on empty VTT cue payload to warning + fixup (#2863)
packager: added --timestamp_offset command line option.
This option allows you to add a specified offset to a track's timeline. It has been added to allow for synchronization between WebVTT tracks that already contain an offset and other media tracks that do not. We recommend to fix the offset in the WebVTT tracks, but, using this new option, you can now also add an offset to all other tracks. Documentation: --timestamp_offset
package-mpd: track duration is the sum of all subsegment_durations in sidx.
origin-live: fixed incorrect Expires Cache header on live subtitle HLS playlist when input is text/dfxp. (#2301)
package-hls: do not include bitrate in GROUP-ID field for text streams.
Before, a bitrate was added to the value of a text stream's
GROUP-IDfield. This resulted in text streams being assigned different groups if their bitrates differed only slightly, resulting in stream's that are not compliant with Apple's HTTP Live Streaming specification. This was fixed because the bitrate signaled in a text stream should not have such big impact.
packager, origin: adding a --track_role=caption to a subtitle track signals that track is intended to provide accessibility for the deaf and hard of hearing.
In addition to the accessibility features that were added in 1.7.31 using the
--track_kindoption, specifying the role of a track as 'caption' will now also result in accessibility related signaling when generating the client manifest. In HLS' Master Playlist for example, the signaling of
CHARACTERISTICS="public.accessibility.describes-music-and-sound"will be added to the specific track.
ingest-mp4: fixed trackName when multiple switching sets are present in a single MP4 file and the MP4 file is directly used for playout. A work-around is to create a server manifest file.
origin-hls: fixed EXT-X-STREAM-INF to include correct default audio track (when multiplexing) in Master playlist.
capture: a license check has been added for frame accurate capturing, please contact sales for an updated license (email@example.com)