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)¶
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
- 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="com.apple.streamingkeydelivery" 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.