You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Track get_init_segment method has been re-written to be more controllable. A specific Byte-range, URL, and
maximum size can now be specified. A manually specified URL will override the Track's current URL. The Byte-range
will override the fallback value of 0-20000 (where 20000 is the default maximum_size). It now also checks if the
server supports Byte-range, or it will otherwise stream the response. It also tries to get the file size length and
uses that instead of maximum_size unless it's bigger than maximum_size.
Added new get_key_id method to Track to probe the track for a track-specific Encryption Key ID. This is similar to
Widevine's from_track method but ignores all pssh boxes and manifest information as the information within those
could be for a wider range of tracks or not for that track at all.
Added a 5-attempt retry system to DASH and HLS downloads. URL downloads only uses aria2(c)'s built in retry system
which has the same amount of tries and same delay between attempts. Any errors emitted when downloading segments will
not be printed to console unless it occurred on the last attempt.
Added a fallback way to obtain language information by taking it from the representation ID value, which may have the
language code within it. E.g., audio_en=128000 would be an English audio track at 128kb/s. We now take the en
from that ID where possible.
Added support for 13-char JS-style timestamp values to the Cacher system.
Improved Forced Subtitle recognition by checking for both forced-subtitle and forced_subtitle (#43).
Changed
The * symbol is no longer spaced after the Widevine KID:KEY when denoting that it is for this specific PSSH.
This reduces wasted vertical space.
The "aria2 will resume download if the transfer is restarted" logs that occur when aria2(c) handles the CTRL+C break,
and "If there are any errors, then see the log file" logs are now ignored and no longer logged to the console.
DASH tracks will no longer prepare and license DRM unless it's just about to download. This is to reduce unnecessary
preparation of DRM if the track had been converted to a URL download.
The return code when mkvmerge returns an error is now logged with the error message.
SubtitleEdit has been silenced when using it for SDH stripping.
Fixed
Fixed URL joining and Base URL calculations on DASH manifests that use multiple Base URL values.
URL downloads will now store the chosen DRM before preparing and licensing with the DRM.
URL downloads will now prepare and license with the DRM if the Track has pre-existing DRM information. Previously it
would only prepare and license DRM if it did not pre-emptively have DRM information before downloading.
The * symbol that indicates that the KID:KEY is for the track being downloaded now uses the new get_key_id method
of the track for a more accurate reading.
License check now ensures if a KEY was returned for the Track instead of all KIDs of the Track's PSSH. This prevents
an issue where the PSSH may have Key IDs for a 720p and 1080p track, yet only a KEY for the 720p track was returned.
It would have then raised an error and stopped the download, even though you are downloading the 720p track and not
the 1080p track, therefore the error was irrelevant.
Unnecessary duplicate license calls are now prevented in some scenarios where --cdm-only is used.
Fixed accuracy and speed of preparing and licensing DRM on HLS manifests where multiple EXT-X-KEY definitions appear
in the manifest throughout the file. Using globocom/m3u8#313 we can now accurately get a
list of EXT-X-KEYs mapped to each segment. This is a game changer for HLS manifests that use unique keys for every
single (or most) segments as it would have otherwised needed to initialize (and possibly do network requests) for
100s of EXT-X-KEY information, per segment. This caused downloads of HLS manifests that used a unique key per segment
to slow to a binding crawl, and still not even decrypt correctly as it wouldn't be able to map the correct initialized
key to the correct segment.
Fixed a regression that incorrectly implemented the OnMultiplex event for Audio and Subtitle tracks causing them to
never trigger. It would instead accidentally have trigger the last Video track's OnMultiplex event instead of the
Audio or Subtitle's event.
The above fix also fixed the automatic SDH stripping subtitle. Any automatically created SDH->non-SDH subtitle from
prior downloads would not have actually had SDH captions stripped, it would instead be a duplicate subtitle.