Shaka Packager Versions Save

A media packaging and development framework for VOD and Live DASH and HLS applications, supporting Common Encryption for Widevine and other DRM Systems.

v2.0.2

6 years ago

Added

  • Support cue alignment from multiple demuxed streams (#355).

v2.0.1

6 years ago

Added

  • Recognize m4s as a valid extension for init segment (#331). It is used to be allowed as the extension for media segments only.
  • Improve DASH multi-period support: calculate presentationTimeOffset and Period@duration from video segment presentation timestamps. This avoids video playback jitters due to gaps.

Fixed

  • Handle invalid WebVTT with start_time == end_time gracefully (#335).
  • Ignore invalid meta box in mp4 files, which Android's camera app generates (#319).
  • Set stream duration in init segment for mp4 with static live profile (#340).

v2.0.0

6 years ago

Added

  • Enhanced HLS support.
    • Support for attributes RESOLUTION, CHANNELS, AUTOSELECT and DEFAULT.
    • Live and Event playlists.
    • fMP4 in HLS (including byte range support).
    • DRM: Widevine and Fairplay.
    • I-Frame playlist.
  • Enhanced subtitle support.
    • Segmented WebVTT in fMP4.
    • Segmented WebVTT in text, for HLS.
  • Support generating DASH + HLS manifests simultaneously (#262).
  • AC3 / E-AC3 support.
  • Experimental multi-period support.
  • Raw key multi-key support.
  • DASH Trickplay.
  • Make fMP4 output CMAF compatible.
  • Support for WebM colour element.
  • Support skip_encryption stream descriptor fields (#219).
  • Improved documentation and tutorials.

Changed

  • Refactored packager code and media pipeline.
  • Exposed top level packaging interface.
  • Renamed --webm_subsample_encryption flag to --vp9_subsample_encryption flag.
  • Deprecated --availability_time_offset flag.

Fixed

  • Write manifests atomically to fix possible truncated manifests seen on clients (#186).
  • [WebM] Fix live segmenter overflow if longer than two hours (#233).
  • Fix a possible interferenace problem when re-using UDP multicast streams in different processes (#241).
  • Create directories in the output path if not exist (#276).
  • Fix order of H265 VPS, SPS, PPS in hvcC box (#297).
  • Handle additional unused mdat properly (#298).
  • Fix possible incorrect HEVC decoder configuration data (#312).
  • Handle varying parameter sets in sample when converting from NAL unit stream to byte stream (#327).

v1.6.2

7 years ago

Added

  • Added an option to keep parameter set NAL units (SPS/PPS for H264, SPS/PPS/VPS for H265), which is necessary if the parameter set NAL units are varying from frame to frame. The flag is --strip_parameter_set_nalus, which is true by default. This addresses #206 (the flag needs to be set to false).

Fixed

  • Fixed the problem that sliding window logic is still active with DASH static live profile (#218).
  • Fixed AAC-HE not correctly signaled in codec string (#225).
  • [WebM] Fixed output truncated if using the same file for both input and output (#210).
  • [WebM] Fixed possible integer overflow in stream duration in MPD manifest (#214).

v1.6.1

7 years ago

Changed

  • Enable --generate_dash_if_iop_compliant_mpd by default. This moves ContentProtection element from Representation to AdaptationSet. The feature can still be disabled by setting the flag to false if needed.

Fixed

  • MPD duration not set for live profile with static mpd (#201).

v1.6.0

7 years ago

Added

  • Added support for Windows (both 32-bit and 64-bit are supported).
  • Added support for live profile with static mpd by setting flag --generate_static_mpd (#142). This allows on demand content to use segment template.
  • Added support for tagging a specific audio AdaptationSet as the default / main AdaptationSet with --default_language flag (#155).
  • Added UDP options support: udp://ip:port[?options]. Currently three options are supported: reuse=1|0 whether reusing UDP sockets are allowed (#133), interface=a.b.c.d interface address, timeout=microseconds for socket timeout.
  • Added 4K and 8K encryption support (#163).

Changed

  • [WebM][VP9] Use subsample encryption by default for VP9 per latest WebM spec. The feature can be disabled by setting --webm_subsample_encryption=false.
  • [WebM] Mimic mp4 behavior: either all the samples in a segment are encrypted or all the samples are clear.
  • [WebM] Move index segment forward to right after init segment (#159).

Fixed

  • Fixed AdaptationSet switching signalling when --generate_dash_if_iop_compliant_mpd is enabled (#156).
  • [H.264] Fixed access unit detection problem if there are multiple video slice NAL units in the same frame (#134).
  • [WebVTT] Detect .webvtt as WebVTT files.
  • [WebM] Fixed keyframe detection in BlockGroup for encrypted frames.
  • [HLS] Fixed HLS playlist problem when clear lead is set to zero (#169).
  • Fixed --version command.

Deprecated

  • Deprecated flag --udp_interface_address. Use udp options instead.
  • Deprecated flags --single_segment and --profile. They are now derived from the presence of 'segment_template' in stream descriptors.

v1.5.1

7 years ago

Added

  • Added a runtime flag to use decoding timestamp in timeline for mp4: --mp4_use_decoding_timestamp_in_timeline

Changed

  • Remove restriction that sps:gaps_in_frame_num_value_allowed_flag should be 0 in h264. Packager should not care about this flag (#126).
  • Remove restriction that sample duration cannot be zero. A warning message is printed instead (#127).

Fixed

  • Fix text formats (webvtt, ttml) not recognized problem (#130).

v1.5.0

7 years ago

Added

  • Added TS (output) and HLS (output) with SAMPLE-AES encryption support. Note that only H.264 and AAC are supported right now.
  • Added support for CENCv3, i.e. 'cbcs', 'cbc1', 'cens' protection schemes.
  • Added H.265 support in TS (input) and iso-bmff (input / output).
  • Added experimental Opus in iso-bmff support.

Changed

  • Change project name from edash-packager to shaka-packager. Also replaces various references of edash in the code accordingly.

v1.4.1

7 years ago

Fixed

  • [VP9] VPCodecConfiguration box should inherit from FullBox instead of Box.
  • [VP9] Fixed 'senc' box generation when encrypting mp4:vp9 with superframe.
  • [WebM] Close file before trying to get file size, so the file size can be correctly calculated.

Changed

  • [MP4] Ignore unrecognized mp4 boxes instead of error out.

v1.4.0

8 years ago

[1.4.0] - 2016-04-08

Added

  • Added support for MacOSX (#65). Thanks to @nevil.
  • Added support for Dolby AC3 and EAC3 Audio in ISO-BMFF (#64).
  • Added support for language code with subtags, e.g. por-BR is now supported.
  • Added a new optional flag (--include_common_pssh) to widevine encryption to include common system pssh box in addition to widevine pssh box.
  • Improved handling of unescaped NAL units in byte stream (#96).

Changed

  • Changed fixed key encryption to generate common system pssh box by default; overridable by specifying pssh box(es) explicitly with --pssh flag, which is now optional. --pssh should be one or more PSSH boxes instead of just pssh data in hex string format if it is specified.
  • Improved subsample encryption algorithm for H.264 and H.265. Now only video data in slice NALs are encrypted (#40).

Fixed

  • Split AdaptationSets by container and codec in addition to content_type, language. AVC/MP4 and VP9/WebM are now put in different AdaptationSets if they are packaged together.
  • Fixed index range off-by-1 error in WebM DASH manifest (#99).
  • Fixed WebM SeekHeader bug that the positions should be relative to the Segment payload instead of the start of the file.