Releases: shaka-project/shaka-packager
Releases · shaka-project/shaka-packager
v2.3.0
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
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
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
v2.1.1
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
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.
v2.0.3
Changed
- Removed --pto_adjustment flag (related to #368).
Fixed
- Use max bitrate in Representation@bandwidth instead of average bitrate for DASH live profile (#376).
- Set Widevine key request content-type to JSON instead of xml (#372).
- Fix default_language not working if 2-char code is used (#371).
- Do not force earliest_presentation_time to 0 for VOD (#303).
- Generate more precise time in Period@duration (#368). This avoids possible
rounding error in MSE causing frames to be dropped at Period boundary.
v2.0.2
v2.0.1
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
v2.0.0
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
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).