Release notes version 1.7.*

Version 1.7.25 (2016-10-14) - GA

  • package: clear sub-sample information when running preprocessing step.
  • hls: added EXT-X-SESSION-KEY in master playlist.
  • libfmp4: fixed regression of reading > 4GB "mdat" boxes.

Version 1.7.24 (2016-10-06)

  • origin: added support for inserting Timed Metadata (ID3 tags) in HLS.
  • packager: added support for reading Timed Metadata from a meta-macro-file.
  • origin: added playout support for basic WebVTT styling (#1213).
  • packager: fixed precendence --track_language over TTML file xml:lang attrib.
  • libfmp4: fixed reading number of bits in slice_group_change_cycle.
  • libfmp4: added support for VP9 ISO-BMFF packaging and DASH application. This is according to the draft document titled VP Codec ISO Media File Format Binding (2015.12.3).
  • libfmp4: added --hls.no_elementary for devices (e.g. Abox 42 M20) not supporting audio elementary streams.

Version 1.7.23 (2016-09-06)

  • libfmp4: Common Encryption leaves slice_header() in the clear for AVC.
  • libfmp4: added CHANNELS attribute for AUDIO groups in HLS.

Version 1.7.22 (2016-08-22)

  • libfmp4: added support for MM:SS.mmm WebVTT timestamps (#1174).
  • packager: added preprocessor step when loading "avc1" video from MP4 files. Ignoring any AUD/SPS/PPS NAL units that are present in the access units.
  • libfmp4: set sample_is_depended_on to unknown for P and B frames.
  • libfmp4: merge multiple unprotected NALs into a single Subsample clear range for efficient representation.
  • packager: only create sub-sample information ("subs" box) for unencrypted video tracks and dref-ed files.
  • package-hls: when --hls.optimized (optimized PES placement) is used, we only write a 3-byte startcode (instead of the required 4-byte startcode) for the AUD NAL.
  • package-iss: only write a single entry for each fragment in the "tfra" box. Multiple CDNs do not support multiple random-access samples and fail to deliver the media fragments.
  • origin: fixed parsing of Smooth Streaming URL for trackNames including a period ('.').

Version 1.7.21 (2016-07-15)

  • libfmp4: added support for reading/writing scaling matrix in AVC (#1077).
  • package-hls: Fixed Adobe Primetime DRM issue #1081 where IV was missing from hls playlists.
  • origin: Fixed Adobe Primetime DRM issue #1081 where IV was missing from hls playlists.

Version 1.7.20 (2016-06-30)

  • package-mpd: added option --segment_list to include SegmentList and SegmentTimeline elements in the MPD that are derived from the "sidx" box.

Version 1.7.19 (2016-06-01) - GA

  • nginx: fixed header response to correctly calculate expires time.
  • libfmp4: filter expressions use the definitions of FourCC as specified in the server manifest file.
  • libfmp4: added support for Latens DRM for DASH.
  • libfmp4: fixed display last captions in each segment (#1057).
  • libfmp4: improved rounding of sample durations when changing media timescales (creating better compressed timelines for Smooth Streaming and MPEG DASH).
  • origin: added EXT-X-PROGRAM-DATE-TIME for VOD media playlists (when date >= year 2014).
  • package-hls: added support for Discretix DRM.
  • origin: added support for "framerate" variable to filter expression.

Version 1.7.18 (2016-04-11)

  • package-mpd: added Dolby Vision Support for packaging to fragmented mp4 suitable for MPEG-DASH.
  • origin: added support for Irdeto Protection System for MPEG-DASH.
  • origin: added support for Adobe Primetime DRM for MPEG-DASH.
  • origin: added support for Blanking.
  • libfmp4: remove dependency on the movie "trex" box by always specifying default values (if any) for samples in the "tfhd" box.
  • origin: fixed last modified time for proxied VOD content to be last modified time of manifest file.
  • capture: added support for multiple SPS/PPS headers.
  • libfmp4: added support in "tfra" box for multiple random-access points in a single "moof".
  • package-hls: calculates and writes the max_bitrate for all tracks.
  • dash: removed default "org.w3.clearkey" ClearKey signaling. Use --clearkey.drm_specific_data= to add the signaling specifically.
  • package-hls: added AVERAGE-BANDWIDTH to I-FRAME-STREAM-INF.
  • package-hls hls: calculate bandwidth on a per media segment basis.
  • packager: override the default "subt/stpp" with "text/dfxp" when --brand=piff is specified.
  • mp4split: a license key file name must contain a '.' e.g. 'licence.key', otherwise the input is interpreted as base64.
  • libfmp4: fixed transdrm for HDS + Adobe Access.

Version 1.7.17 (2016-02-15)

  • package-hls: fixed ismt -> webvtt playlist packaging
  • packager: when specifying drm_specific_data with a file path, the file name must contain a '.' for example: drm_specific_data.bin
  • dash: added "org.w3.clearkey" ClearKey signaling.
  • libfmp4: fixed reading of version 1 "pssh" boxes.
  • nginx: fixed error handling http response (#998)
  • package-hls: added support for Adobe Primetime DRM SAMPLE-AES
  • origin-hls: added support for Adobe Primetime DRM SAMPLE-AES
  • libfmp4: fixed DFXP style attribute bug (#997)
  • packager: when generating output MP4 files, we now keep the order of the source audio and text tracks as given on the commandline.
  • download-to-own: added support for resume, and byte-range requests.
  • libfmp4: added support for sub-sample information (for smpte-tt image based subtitles).
  • hls: When playing back SAMPLE-AES encrypted HLS content, Adobe Flash requires the private_data_indicator_descriptor to be listed first.
  • live: fixed announcement of last HLS fragment when specifying an ending time in the future.
  • libfmp4: use Last-Modified header from server manifest file when using IsmProxyPass.
  • hls: use the three-character (ISO 639-2) language when no two-character (ISO 639-1) language is assigned.
  • origin: extended the Publishing Point API, added create, read, update and delete (CRUD) functions.

Version 1.7.16 (2015-12-02) - GA

  • hevc: use aspect ratio information from video codec to determine the visual presentation size (instead of the width and height from the "tkhd" box).
  • dash: group audio representations according to dvb-dash rules.
  • capture: set retry time to 60 seconds (was 6) when running as --daemon.
  • capture: when running as --daemon, only sleep and ignore stdin.
  • live: added Restart and Catch-up TV options.

Version 1.7.15 (2015-11-09)

  • hls: updated HTTP Live Streaming (HLS) variant sets to use expressions.
  • libfmp4: fixed WebVTT to DFXP conversion when missing cue identifiers.
  • origin-hls: added AVERAGE-BANDWIDTH to EXT-X-STREAM-INF.
  • origin-hls: use same targetduration for media playlists and iframe playlists.
  • libfmp4: use external PlayReady Object when passed as iss.drm_specific_data.

Version 1.7.14 (2015-10-16)

  • package-hls: fix for calculating the bandwidth over media segments.
  • transdrm: fixed an issue with too agressive optimization of buckets causing the error FMP4_500 precondition failed 'aux_bucket->size == sample.aux_size'.
  • package-hls: added Playready Envelope encryption.
  • hls: added --fixed_gop option for HLS I-frame playlists.
  • hls: refactored master playlist generation.
  • hls: only output lowest bitrate i-frame playlist for video tracks that have the same spatial resoltion.
  • dash: added DFXP fourcc as supported text track.
  • hls: write elementary audio streams for ec3 instead of mpeg-ts when using --hls.no_multiplex.
  • live: fixed announcement of embedded c608 captions when encoder restarts.
  • dash: when using SegmentTimeline (this is the default for the isoff-live profile), then default to use fragment addressing. This is required for signaling of discontinuities, missing fragments, use of variable durations of encoded fragments.
  • dash: do not use a @presentationTimeOffset for live when using SegmentTimeline.
  • dash: added Adobe Access "pssh" box for Common Encryption.

Version 1.7.13 (2015-09-25)

  • mpd: added cenc:pssh to mpd when using --mpd.inline_drm.
  • hls: subtitles served as SMPTETT now use the start time of the track as reference point (instead of the fragment time).
  • package-hls: write elementary audio streams for ec3 instead of mpeg-ts.
  • capture: added support for decryting sample-aes elementary audio streams.
  • hls: added sample-aes for ec3.
  • nginx: feature parity with apache: adding usp_handle_f4f, usp_disable_mmap, s3_secret_key and s3_access_key; renamed keyword ism to usp_enable_ism; but no download to own or progressive download (for nginx lacking an extensible bucket api like apache has).

Version 1.7.12 (2015-09-11)

  • packager: added --disable_selective_nal_encryption option.
  • libfmp4: Set the PacketSize for Smooth Streaming to the constant sample size for ac3 audio.
  • libfmp4: use nAvgBytesPerSec from "wfex" box to set average bitrate.
  • --hls.no_multiplex: output elementary audio streams and mpeg-ts video.
  • dts: added support for 96KHz and 192KHz audio tracks.
  • live: scan avc video tracks for embedded c608 subtitles.
  • packager: do not add empty playready embedded license store.
  • nginx: updated configuration Options to be on par with Apache
  • libfmp4: fixed TTML namespace prefix in DFXP caption markup (#902)
  • piff: encrypt all NAL units with a fixed clear prefix.
  • hls: round TARGETDURATION to nearest integer (instead of ceil).
  • origin-hls: added EXT-X-I-FRAMES-ONLY to keyframe only playlist.
  • origin-hls: added CLOSED-CAPTIONS=NONE attribute.
  • hls: removed #EXT-X-DISCONTINUITY from VOD WebVTT subtitle playlists (#859)
  • mpeg-dash: subtitles served as fragmented MP4 now use the start time of the track as reference point (instead of the fragment time).
  • libfmp4: added "pasp" box (PixelAspectRatio).
  • mpeg-dash: added @presentationTimeOffset.
  • package-mpd: add support for external sidecar files, like WebVTT and TTML.
  • hls: scan avc1 payload for sps and pps and only insert sequence header when absent.
  • package-hls: fixed zero duration in iframe playlist when presentation ends with a fragment containing a single keyframe.
  • dvb-dash: added common encyption support.
  • hls: added FRAME-RATE attribute.
  • hls: skip NAL FILLER padding data.
  • libfmp4: added writing of delay edit for fMP4.
  • libfmp4: add explicit edit box when it is missing and composition time offsets are used.
  • libfmp4: when writing fMP4, replace the edit list entry MediaTime=ct_offset by negative-composition-time offsets.
  • libfmp4: added support for decrypting f4f files allowing adkm to clear and transdrm from adobe protected to other formats.
  • packager: when writing progressive MP4 rescale the timescale to a sensible value when the source timescale is 10.000.000.
  • packager: added "tfxd" box for fragments when brand "isml" is used.
  • hls: added --hls.subtitles_subformat=SMPTETT option.
  • package-hls: do not switch to audio elementary stream output (.aac, .ac3) when audio stream is longer than video stream.

Version 1.7.11 (2015-07-06) - GA

  • transdrm: fixed transdrm for HDS playout (#847).
  • dash: only use a KID:CEK pair of a CENC compatible system (#850).
  • origin: added work around for Inlet encoder that pushes a "moov" box with duplicate trackIDs.
  • capture: read license-key from file.
  • libfmp4: disable negative composition time offsets (and use edit list to compensate for the ct_offset) by forcing --brand=iso2.
  • libfmp4: use "iso4" when creating (progressive) mp4 files with negative-composition-times.
  • origin: added Playout Control similar to Using different manifests for VOD.
  • libfmp4: when encrypting for PIFF/CENC, treat each NAL unit as a separate subsample.
  • origin: return samplerate from server manifest for ec-3 when no fourcc data is specified in the (1.4.57) server manifest.
  • packager: when a key IV value is specified, use it as-is.
  • libfmp4: fixed KeyFrames for Smooth Streaming for encrypted content on disk.
  • libfmp4: only write PlayReady ProtectionHeader in Smooth Streaming client manifest.
  • origin: fixed transdrm issue when re-encrypting subsample.

Version 1.7.10 (2015-05-04)

  • origin: added --hds.no_onfi flag. Setting this flag skips inserting any onFI message.
  • origin: add EXT-X-ENDLIST when live event is finished and we are not archiving.
  • origin: do not encrypt text/subtitle tracks for HLS.

Version 1.7.9 (2015-04-24)

  • libfmp4: upgraded AES backend to OpenSSL >= 1.0.1 to allow AES-NI hardware acceleration.
  • origin: use AAC-LC base samplerate for AAC SBR and AAC SBR+PS for Smooth Streaming.
  • live: updated announcement of media segments in HLS playlists. Now taking into account only the group of tracks that have identical trackname(s).

Version 1.7.8 (2015-04-02)

  • origin: remove dvr_window_length and time_shift from the query parameters for media segments (for ISS, HDS and DASH).
  • package: always interpret WebVTT as UTF-8 (but use BOM for SRT files)
  • libfmp4: use aspect ratio information from video codec to determine the visual presentation size (instead of the width and height from the "tkhd" box).
  • capture: use DiplayWidth and DisplayHeight in Smooth Streaming manifest as ratio to set the "tkhd" fields.

Version 1.7.7 (2015-03-26)

  • origin: fixed reading sample encryption data for files over 4GB.
  • libfmp4: better file/http buckets merge, combining many single reads into one.
  • hls: fixed stuffing of PAT and PMT.
  • hls: removed PROGRAM-ID and EXT-X-ALLOW-CACHE.
  • libfmp4: fixed comparison of fractions for large denominators.
  • package-hls: added AVERAGE-BANDWIDTH to EXT-X-STREAM-INF.
  • origin-hls: added EXT-X-INDEPENDENT-SEGMENTS. This is just for protocol version 3 and higher. We may change this in the future to always add it for all protocol versions.
  • dvb-dash: use application/mp4 as mime-type for subtitles.
  • libfmp4: use "subt" as handler type and "stpp" as fourcc for XML based subtitles (ttml, dfxp, smpte-tt, ebu-tt).
  • origin: do not encrypt text/subtitle tracks for Smooth Streaming and MPEG-DASH.
  • remix: create m3u8 master playlist from MPD.

Version 1.7.6 (2015-03-09)

  • dash: keep MPD@availabilityStartTime fixed.
  • libfmp4: fixed io_cached_range hit for "mfra" box.
  • origin-hls: when muxing audio/video, prefer to use the same source URL.
  • origin: fixed duplicate query arguments when using HTTP as source.
  • dvb-dash: remove SPS/PPS from avcC record for avc3.
  • dvb-dash: added @contentType attribute.
  • mp4split: only scan for embedded subtitles when the track id matches the predicate track id (when given).
  • mp4split: only read a single batch when we are interested in a single sample.
  • origin: doubled samplerate for SBR, set FourCC to AACP for AAC SBR+PS, use maximum values of SPS for avcC.
  • origin: added tfxd box for live smooth (required by osmf smooth plugin)
  • dvb-dash: added @minFrameRate and @maxFrameRate in Adaptation Set.
  • dvb-dash: write @scanType always for all Representations.
  • dvb-dash: updated @minWidth and @maxWidth to take @sar into account.
  • dash: grouping of representations incorrectly used the pixel aspect ratio, instead of the picture aspect ratio.

Version 1.7.5 (2015-02-13)

  • packager: fixed writing a single bucket larger than 4GB.
  • dvb-dash: move common Representation attributes and elements to Adaptation Set.
  • dvb-dash: added @startWithSAP=1 for Audio Adaptation Set.
  • hds: only add onFI messages to primary renditions and never for alternate renditions.
  • origin: when ingesting a (DVR) archive, calculate the created_at instead of using wallclock time NOW.
  • origin: use the maximum window length to calculate the expiry time instead of only the dvr_window_length.
  • origin: remove dvr_window_length and time_shift from the query parameters for media segments.
  • mp4split: don't scan the complete file for embedded subtitles.
  • package-hls: create a set of audio-only variants based on group_id.
  • dvb-dash: insert SPS/PPS after AUD for avc3.
  • packager: added support for importing older VC1/WMA fragmented isma/ismv files that have missing "trex" boxes or signal an incorrect "trex" version.
  • origin: fixed bitrate calculation for 64-bit MP4 files.
  • dvb-dash: group audio representations using @codecs, @audioSamplingRate and AudioChannelConfiguration.
  • origin: added --mpd.minimum_update_period option (defaults to 8 hours).
  • origin: added --mpd.availability_start_time option (default to unix epoch).
  • origin: fixed parsing of HDS SegN-FragM URL when the presentation name contains a period "." character.
  • origin: fixed 'missing drm options for hls' for Marlin encrypted HLS.
  • package-hls: fixed path resolving for --iframe-index-file option (resolved against path of the output filename).
  • dash: add signaling for all known DRM systems.
  • libfmp4: synthesize Widevine and PlayReady "pssh" box when possible.

Version 1.7.4 (2015-01-15) - GA

  • packager: added decryption support when packaging to (fragmented)-mp4.
  • live: only announce fragments so that multiplexed audio and video is completely available.
  • packager: synthesize "pssh" box for Widevine when no drm_specific_data is given.
  • http: fixed crash when HTTP backend returns an empty Content-Type header.
  • origin: added Irdeto PlayReady DRM support for HLS playout (Irdeto Control API, #475)
  • package-hls: fixed variants to only use unique groups.
  • package-hls: support win32 backslashes for encrypt-key-file option.
  • remix: write EXT-X-DISCONTINUITY by checking clip alignment.
  • fixed time_to_sequence to support large denominators.


Please note that an update to 1.7 also requires a new key.

Version 1.7.3 (2014-12-08)

  • ingest: fixed race condition with file locking and dual-ingest setup.
  • ingest: fixed "404 stream not found" error when a second encoder starts pushing while the first encoder has not announced the streams yet.
  • packager: added support for converting (basic) WebVTT to dfxp.
  • libfmp4: fixed bug when creating HLS V4 video only playlist. Work-around is to use --hls.no_audio_only.

Version 1.7.2 (2014-11-25)

  • origin: added extended EXT-X-KEY statement in m3u playlists for Marlin (Marlin DRM, #663)
  • capture: try harder when configuring the encoder. The Intel Media SDK returns an error instead of a warning on some SDK versions. In the case of a warning or error we now continue trying more settings.
  • origin: added new playout format --hls.playout=SAMPLE_AES_STREAMINGKEYDELIVERY. This adds signaling for the KEYFORMAT="" to the m3u8 playlist.
  • libfmp4: avoid the loading of all the samples when scanning for embedded captions. Only scan the first AVC sample for SEI message.
  • libfmp4: option to combine multiple reads (maxRanges) into a single GET request. currently maxRanges is set to 1 since S3 doesn't support multiple ranges.
  • origin: added ingest of VOD HLS. See the specific documentation for the Using HTTP Live Streaming (HLS) as source requirements.
  • packager: added support for writing "dref"-ed fragmented MP4.
  • origin: added support for reading "dref"-ed fragmented MP4.
  • origin: added "piff" to "cenc" PIFF to CENC (Multi DRM) support.
  • package-hls: added --create-iframe-playlist option.
  • origin: fixed PES size of metadata stream.
  • mp4split: added key=KID:CEK option.
  • origin: added progressive download of fragmented MP4 (.ismv), also known as Download to own, from a server manifest. Note that you will need the package_iis policy as well as the option --progressive_playout. This is only available in Apache since it uses "Transfer-Encoding: Chunked" and also requires a HTTP 1.1 client. HTTP Range requests are not supported. When a range is requested the reponse is a 200 and the complete file is returned.
  • hls: added playready-envelope encryption.
  • dash: added --mpd.profile option for specifying the URN of the "Interoperability Point"
  • hls: tightly pack keyframes in MPEG TS. This fixes the BYTERANGE sometimes being off by the size of a TS packet.
  • hds: do not use @alternate attribute in version 2 manifests when the audio is the "primary rendition".
  • live: fixed purging for archive_segment_length/dvr_window_length greater than 429 seconds in combination of a large timescale (10.000.000).
  • libfmp4: added support for "ttml" in "stsd" as output by Carcon Coder.
  • hls/hds: added support for "avc3".
  • hds: OSMF 2.0 based players crash/stop-responding when SCRIPTDATA is present in the alternate audio track. Do not add onFI messages in alternate audio fragments.
  • package-hls: calculate the BANDWIDTH for iframe-index playlists using the duration of the media segment. This makes sure that the BANDWIDTH in the iframe-index is never larger than the one specified in the prog-index.
  • package-mpd: added Widevine ("cenc" encryption, plus Widevine signaling).
  • origin: fixed the one sample missing in each audio fragment bug. This happened when using MP4 as source and Smooth Streaming as playout due to a rounding error caused by different source and destination timescales. A possible workaround is to use the option --iss.minimum_fragment_length=N and set N to the GOP duration.

Version 1.7.1 (2014-07-04)

  • origin: added Irdeto SKE DRM support for HLS playout (Irdeto Control API, #449)
  • package-hls: skip consecutive I-frames when generating the iframe playlist.
  • use "cenc" instead of "piff" in "schm" box (except for "isml"/"piff" brands).
  • package-hls: added EXT-X-INDEPENDENT-SEGMENTS
  • capture: 404/412 status codes now return exit failure after retrying 3 times.
  • mp4split: added support for specifying fractions (numerator / denominator) for minimum_fragment_length options. For example you can now exacly specify 29.97002997 by using 30000/1001.
  • capture: updated to Media SDK 2014 R2
  • package-hls: made ID3 tags compatible.
  • package-hls: added --encrypt-iv to specify IV.
  • package-hls: fixed length of audio_setup_information in ID3 tag.
  • mp4split: Lowered memory requirements when decrypting content.
  • package-hls: added option "iframe-index-file"
  • package-hls: fixed byterange offset in iframe-index when used in combination with --output-single-file.
  • mp4split: added HEVC as supported codec for Smooth Streaming.
  • cff: removed "free" box (used for padding) after "ftyp".
  • added Conax Contego HLS encryption with PlayReady DRM. (--conax.key_id, --conax.content_key, --conax.license_server_url, --conax.key_iv=<8 BYTES, NONCE ONLY!>).

Version 1.7.0 (2014-05-15)

  • hls: updated ID3 Tags to use sps_rbsp and sei_rbsp
  • mp4split: Changed console output from stdout to stderr (DEBUG build only).
  • Fixed #518 (purging audio timestamps from db). This occured when multiple tracs were posted as a single stream. A possible work-around is to publish audio/video streams separately to the publishing point.
  • libfmp4: moved Smooth Streaming client manifest reader into library.
  • mp4split: Lowered memory requirements when packaging encrypted content.
  • corrected writing of relative URLs with a ":" in the first segment.
  • mp4split: added pdin/bloc/ainf/meta/trik boxes for CFF.
  • mp4split: set duration in mvhd box (as well as mehd box) for PIFF compatibility.
  • Added hashing to IV when creating a fragmented-MP4 file and dynamic playout of smooth/dash fragments.
  • Do not try and update live server manifest files when they are missing meta-data. This may happen with live streams pushed by FFmpeg using -vcodec copy. The @systemBitrate attribute is zero in that case.
  • hls: signal version 2 protocol when IV is used.