Skip to content

Releases: shaka-project/shaka-packager

v2.5.0

10 Jun 00:30
Compare
Choose a tag to compare

Added

  • Support HTTP PUT to upload packaging outputs to cloud (#149).
  • Support Dolby Vision backward compatible profiles (#341).
  • Support different IVs for each track (#543).
  • Support dash_only and hls_only parameters
    (dash_only=0|1, hls_only=0|1) (#651).
  • [HLS] Allow custom EXT-X-MEDIA-SEQUENCE number (--hls_media_sequence_number)
    (#691).
  • [MP4] Allow specifying protection pattern for pattern encryption
    (--crypt_byte_block, --skip_byte_block) (#710).
  • [MP4] Allow write |mvex| before |trak| (--mvex_before_trak) (#711).
  • [DASH] Support signalling of last segment number
    (dash_add_last_segment_number_when_needed) (#713).
  • [DASH] Allow adaptive switching between different codecs
    (--allow_codec_switching) (#726).
  • [DASH] Include mspr:pro alongside to cenc:pssh for PlayReady (#743).
  • Support Dolby DD+JOC in DASH and HLS (#753).
  • Support AC-4 codec (#754).
  • Support inclusion of extra PlayReady header data
    (--playready_extra_header_data) (#756).
  • Support MPEG-1 Audio in mpeg2ts I/O and packed-audio / mp4 output (#779).
  • Support more text input and output formats, including DVB-SUB input (#832) and
    TTML in MP4 output (#87).
  • Support segment_list for DASH on-demand profile (--dash_force_segment_list).

Fixed

  • DASH / HLS spec compliance issues
    • [HLS] Add support for independent segments tag (#564).
    • [TS] Improve frame rate calculation for TS streams (#751).
    • [MP4] Change major brand from isom to mp41 (#755).
    • [MP4] Always set ES_ID to 0 when writing ES Descriptor (#755).
    • Properly handle AVC profiles with SPS extension (#755).
    • [HLS] Don't include FRAME-RATE in EXT-X-STREAM-INF (#816).
    • [HLS] Fix missing FRAME-RATE in playlists with TS streams (#816).
  • [DASH] TrickPlay using separate trick play specific streams (#732).
  • Don't fail if input contents contain SampleGroupDescriptionBox with 0 entries
    (#812).
  • [HLS] Fixes attributes for DVS tracks (#857).
  • Fix trick-mode property values (space instead of comma).
  • Properly handle SkipBytes with num_bytes as 0 (#875).
  • [MPEG-TS] Fix PCR reserved bits not being set correctly (#893).
  • [HLS] Explicitly signal the lack of CEA captions (#922).

Changed

  • Change AV1 cbcs to protect all bytes of decode_tile structure (#698).
  • [MP4] Allow not to generate 'sidx' box for single-segment too (#862).
  • [WebM] Ignore matroska projection metadata instead of fail parsing (#932).
  • Changed default HTTP UserAgent to ShakaPackager/ (#939).

v2.4.3

05 Aug 06:17
Compare
Choose a tag to compare

Fixed

  • Fix playback issue of HEVC content with cbcs encryption in AVplayer (#717).
  • Fix possible incorrect resolutions with avc3 (#750).

v2.4.2

30 Mar 19:43
Compare
Choose a tag to compare

Fixed

  • Fix truncation of timestamp to 32bits in segment file names for MPEG2-TS
    output (#701).
  • [DASH] Fix "roles" stream descriptor support for WebVTT text streams (#708).
  • Fix potential deadlock when reading WebVTT from a pipe.

v2.4.1

17 Jan 23:24
Compare
Choose a tag to compare

v2.4.1 is identical to v2.4.0 other than fixing Windows buildbot.

v2.4.0

27 Dec 03:15
Compare
Choose a tag to compare

Added

  • Support hardware accelerated AES (#198).
  • Support various HDR formats for HEVC (#341, #632).
  • Add more loggings for GAPs (#474).
  • Retry file deletion if it fails (#533). Only applicable to live packaging.
  • Simplify the dependency for pssh-box utility (#538).
  • Add crypto_period_duration to Widevine key requests (#545).
  • Include pssh-box.py in docker image and release (#550).
  • Support encryption using IV from Widevine key server (#555).
  • [DASH] Support custom Accessibillity and Role elements (#565). This is needed
    to support DVS Accessibillity audio in DASH.
  • Support CMAF file extensions (#574).
  • Support PlayReady PSSH generation with CBCS protection scheme (#602).
  • [HLS] Generate FRAME-RATE attribute in EXT-X-STREAM-INF tag (#634).
  • Add --quiet to suppress LOG(INFO) outputs (#661).

Fixed

  • Handle large descriptor header size in 'esds' box (#536).
  • Improve the handling of corrupted timestamp in live streams (#563).
  • Fix problems that target duration is not set in mpd/hls params, which then
    results incorrect bandwidth estimates (#498, #581).
  • Allow absolute path in playlist name (#585).
  • [HLS] Fix possible zero bandwidth for EXT-I-FRAME-STREAM-INF (#610).
  • Supports encryption of streams with parameter sets in frames, i.e. avc3, hvc1
    etc (#621, #627).
  • [HLS] Segments not deleted with $Time$ in segment_template when output HLS
    segments only (#625).
  • [HLS] ID3 payload for transportStreamTimestamp not truncated to 33 bits
    (#629).
  • Fix UDP sockets support in Windows (#643).
  • Fix possible packager hangs when reading mp4 files from FIFO (#664).

Changed

  • [HLS] Replace hev1 in codec with hvc1 and avc3 with avc1 (#587).
  • Rename --generate_static_mpd to --generate_static_live_mpd (#672).

Doc

  • Added documentation for pssh-box utility (#500).

v2.3.0

21 Dec 00:53
Compare
Choose a tag to compare

Added

  • Alpine Linux support (#164).
  • WebVTT style and region support (#344).
  • Marlin DRM support (#381).
  • HLS CHARACTERISTICS attribute on #EXT-X-MEDIA (#404).
  • Default text language support ('--default_text_language') (#430).
  • AV1 support (#453).
  • HLS audio only master playlist support (#461).

Fixed

  • MPEG-TS demuxing with AC-3 / E-AC-3 (#487). kFrameSizeCodeTable were reversed
    results in wrong frame size being detected except for 44.1kHz.
  • HLS peak bandwidth calculation with very short segments (#498). The short
    segments should be excluded from peak bandwidth calculation per HLS
    specification.
  • Output directory permission (#499). The new directory permission was fixed to
    0700.
  • Workaround access units with extra AUD (#526). VLC inserts an extra AUD in the
    key frames, which caused packager to delay emitting the frame. The delays
    accumulated and became noticeable after running the live packaging for some
    time.
  • Problem when using Trick Play with Ad Cues (#528).

Changed

  • Disable bundled binutil and gold on Linux by default. There may be a slight
    increase in binary link time.
  • Reduced official Docker image size from ~1GB to ~15MB (#535). The new image
    is based on Alpine and contains only result binaries (packager and
    mpd_generator).

v2.2.1

20 Sep 20:41
Compare
Choose a tag to compare

Added

  • Added support for seek preroll in AAC and other audio codecs (#452). This also
    addressed 'Unexpected seek preroll for codecs ...' warnings.
  • Computes and sets VP9 Level in the codec config if it is not already set
    (#469). This fixed VP9 in ISO-BMFF files generated by FFmpeg v4.0.2 or earlier
    which does not have level set in the codec config.

Fixed

  • Added a workaround for TS contents with dts moving backwards (#451). So
    instead of generating a sample with negative duration, which ExoPlayer does
    not handle, use an arbitrarily short duration instead.
  • Fixed pattern signaling in seig for key rotation with cbcs (#460).
  • Fixed incorrect segment name with $Time$ in segment_template (#472). This
    resulted in the first segment being overwritten and led to playback problems.
  • Fixed TTML text input passthrough in DASH (#478). This is a regression
    introduced in v2.2.0.

v2.2.0

16 Aug 23:35
Compare
Choose a tag to compare

Added

  • EditList support in ISO-BMFF in both input and output (#112).
  • Improved Multi-DRM support with --protection_systems flag (#245).
  • HLS AVERAGE-BANDWIDTH support (#361).
  • Dynamic Ad Insertion preconditioning support with Google Ad Manager (#362, #382, #384).
  • Configurable UDP receiver buffer size (#411). This can help mitigate or
    eliminate packet loss due to receiver buffer overrun.
  • Allow non-zero text start time (#416). Needed for live text packaging.

Changed

  • Deprecated --mp4_use_decoding_timestamp_in_timeline.
  • Deprecated --num_subsegments_per_sidx.
  • Generate DASH IF IOP compliant MPD with mpd_generator by default.
  • Adjust timestamps in ISO-BMFF if there is an initial composition offset
    as we believe that an EditList is missing in this case (Related to #112).
  • Add an adjustable offset to transport streams (MPEG2-TS, HLS Packed Audio)
    (Related to #112). The offset is configurable with
    --transport_stream_offset_ms. The default is 0.1 seconds.
  • Set default --segment_duration to 6 seconds.
  • Set default --clear_lead to 5 seconds. Shaka Packager does not support partial encrypted segments,
    so if segment_duration is 6 seconds, then only the first segment is in clear, with all the
    following segments encrypted.
  • Set default --io_block_size to 64K.
  • Disable Legacy Widevine HLS signaling for HLS with Widevine protection system by default. Use flag
    --enable_legacy_widevine_hls_signaling to enable it if needed.

Fixed

  • Build failures in Windows with CJK environment (#419).
  • Segmentation fault when processing WebVTT with out of order cues (#425).
  • Support WebVTT cues without payload (#433).
  • segmentAlignment is not set correctly in static live profile for multi-period
    content (#435). Theoretically it could happen for single period content as
    well, but with very low possibility of occuring.
  • Segmentation fault when packaging with an empty VTT file (#446).
  • Possible file name collision when --temp_dir is used (#448).

Doc

  • Added documentation for PlayReady and FairPlay (#306).
  • Added examples for TrickPlay.
  • Fixed live HLS example (#403).
  • Fixed DockerHub instructions link (#408).
  • Added documentation for Dynamic Ad Insertion preconditioning.
  • Added instructions for missing curl CA bundle on mac.

v2.1.1

03 Jul 21:07
Compare
Choose a tag to compare

Changed

  • Warn if HLS type is not set set to LIVE for UDP inputs (#347).
  • Use new vp09 codec string for WebM by default (#406). Set command line flag:
    --use_legacy_vp9_codec_string if the old behavior is needed.
  • Allow trailing null bytes in NAL units, to allow contents with the H264 spec
    violation to be processed instead of erroring out (#418).

Fixed

  • Fix MPD@duration not set with MPDGenerator (#401). This is a regression
    introduced in v2.0.1.
  • Remove 'wvtt' in HLS master playlist codec string as it breaks some old Apple
    products, e.g. AppleTV3 (#402).
  • Fix potential text Segment Timeline not being grouped together in DASH mpd
    (#417), which happens when --allow_approximate_segment_timeline is set.

v2.1.0

23 May 01:06
Compare
Choose a tag to compare

Added

  • Support Widevine and Playready PSSH generation internally in packager (#245).
    Documentation will be updated later.
  • Support removing segments outside of live window in DASH and HLS (#223).
  • Support UTCTiming for DASH (#311).
  • Support approximate SegmentTimeline (#330) under flag
    --allow_approximate_segment_timeline. The flag is disabled by default and it
    will be enabled in a later release. SegmentTemplate with constant duration is also
    supported, under flag --segment_template_constant_duration.
  • Support UDP Source Specific Multicast (SSM) (#332).
  • Support elementary audio (Packed Audio) for HLS (#342).
  • Support FLAC codec (#345).
  • Support AAC with program_config_element (#387).
  • Support Widevine entitlement license with dual PSSH, which can be enabled using flag
    --enable_entitlement_license flag. The feature is experimental. Packaged contents may
    not play on some client platforms.
  • Add license notice in --licenses.

Changed

  • Ignore unsupported audio codec in the source content (#395). This allows other
    supported streams to be processed and packaged.

Fixed

  • Fix bitrate for DASH on-demand profile too (#376).
  • Fix Ad Cues and EXT-X-KEY tag handling in HLS iFrames only playlist
    (#378, #396).
  • Skip Style and Region Blocks in the source instead of failing (#380).
  • Fix potential slice header size off by one byte in H265 (#383).
  • Fix potential partial DASH segments during live packaging (#386).
  • Fix incorrect BOM used in WEBVTT header (#397).
  • Fix TS mimetype in DASH.