Releases: emarsden/dash-mpd-cli
v0.2.30
Add the ability to decrypt media content with the shaka-packager helper application running in its official Docker/Podman container (instead of installed locally on the host), and with the MP4Box helper application from the official GPAC Docker/Podman container. These rely on a container runtime (Podman or Docker) being installed. The container runtime to use can be specified using the DOCKER environment variable (defaults to podman; it will only work with Docker if it is configured for rootless operation, or you will encounter file ownership problems).
Improve support for dynamic manifests that use SegmentTemplate+SegmentTimeline addressing.
Improve handling of manifests without a MPD.mediaPresentationDuration attribute and without a Period.duration attribute.
Clean up the temporary file used to invoke the decryption helper mp4box.
Use human-readable formatting when displaying per-Period duration information.
Replace the unmaintained backoff crate by the backon crate.
Replace the unmaintained dev dependency json by the jzon crate.
v0.2.29
Preliminary support for security sandboxing our application code and our helper applications on Linux, using the Landlock loadable security module. If the sandbox feature is enabled at build time (only available on Linux) and the functionality is enabled using the new --sandbox commandline option, restrict access to the filesystem, limit write access to directories that we will need to write to, limit exec access to directories where our helper applications and their runtime libraries are located, and limit read access to directories that the application or helper applications may need to read. This feature also somewhat restricts network access, preventing binding to a TCP port.
The release builds for Linux include this feature, as does the prebuilt Docker container.
v0.2.28
-
Following changes in the tracing crate that disable ANSI terminal escape sequences for security
reasons, colors, bold and italics are no longer used in warning and error messages. -
Decryption using MP4Box: delete the temporary file used to pass decryption information to MP4Box
once the file has been decrypted. -
The dash-mpd-cli tool is now distributed in Homebrew, thanks to Jonathan Helgert.
-
Updated versions of crates used for HTTP support, browser cookie support, and parsing commandline
options.
v0.2.27
-
The support for downloading certain dynamic streams (“live” manifests) has been improved. More specifically, for
$Number$-based dynamic streams the calculation of segment numbers now accounts for the difference between@availabilityStartTimeand the current time, so will download content starting from when the download is started. -
New support for decrypting streams with ContentProtection using the MP4Box commandline application from GPAC. This provides an alternative to using mp4decrypt and Shaka packager. The MP4Box application does not support decryption of content in WebM containers, and sometimes rejects content which is accepted by mp4decrypt and Shaka packager, but may sometimes be more convenient for users if it’s already installed.
v0.2.26
-
New commandline option
--base-urlthat allows you to specify a Base URL to be used for all segment downloads. This overrides anyBaseURLelement provided in the DASH MPD. This option may be useful when downloading from a manifest specified as a file:// URL, which does not contain aBaseURLelement. -
The reported download bandwidth, and the updating of the progress bar, should be more reliable for
streams that are composed of a large number of very small segments.
v0.2.25
- HTTP requests will now try to establish HTTP/2 connections if the functionality is advertised by an HTTP server, using the
Upgradeheader. Disable this by building without thehttp2feature on ourdash-mpd-rsdependency. - ffmpeg muxing support supports the use of the
DASHMPD_PERSIST_FILESenvironment variable to retain the temporary files created during muxing. - The ffmpeg demuxer concat helper uses absolute paths in the ffconcat file, rather than relative paths, because ffmpeg interprets relative paths with respect to the location of the ffconcat file, rather than with respect to CWD. Reported by @Cocalus.
v0.2.24
This release only includes updates to our crate dependencies. It should not lead to any user-visible changes in behaviour.
Cargo.lock file committed to our GitHub repository for packages, as requested by @al3xtjames.
v0.2.23
-
Add the ability to download from file:// URLs. This requires the MPD manifest to specify an absolute BaseURL element at the MPD, Period or Representation level, or to use absolute URLS for all media segments.
-
Add support for the ffmpeg “concat demuxer” as a concatenation helper for multiperiod manifests, as an alternative to the existing ffmpeg “concat filter” support. To use this concatenation helper, all Periods must use the same encoding (same codecs, same time base, etc.), though they may be wrapped in different container formats. This concatenation helper is very fast because it copies the media streams, rather than reencoding them.
In a typical use case of a multi-period DASH manifest with DAI (where Periods containing advertising have been intermixed with Periods of content), for which it is possible to drop the advertising segments by using
--minimum_period_durationor using an XSLT/XPath filter on Period elements, the content segments are likely to all use the same codecs and encoding parameters, so this concat helper should work well.Use it with
--concat-preference mp4:ffmpegdemuxerfor example. -
Fix an additional possible off-by-one error in calculating the segment count for
$Time$-based SegmentTemplate manifests. -
Fix duplicated merge of BaseURLS for video segments. Patch from @jonasgrosch.
-
Log additional diagnostics information when the verbosity level is greater than 0 or 1 for external commands run for muxing, concatenating, subtitle extraction/merging, and decrypting. The logged information includes the full commandline.
-
Fixed: the concatenation of multiperiod manifests using the ffmpeg concat filter was erroneously adding an empty audio track when none of the input Periods contained audio.
v0.2.22
Improvements to the handling of subtitles: we make additional efforts to extract STPP subtitles from a sequence of fMP4 segments, as a .ttml file. ffmpeg does not currently seem to be able to extract this in the more commonly supported SRT format. When saving to a Matroska container (.mkv or .webm output files), we attempt to embed subtitle tracks with mkvmerge instead of with MP4Box (which fails).
Fix off-by-one bug in the calculation of the number of media fragments to download when using SegmentTemplate addressing with $Number$. The initialiation segment was being counted towards the number of segments, but should not be. Bug reported by @vidasi.
When the audio and video tracks are unsynchronized due to a difference in their startTime attribute, we attempt to fix this desynchronization during muxing. This is a rare problem in the wild and has not been heavily tested. The fix is currently only implemented when using ffmpeg as a muxer application (uses the -itsoffset commandline option).
v0.2.21
-
The progress bar will be updated more frequently, and more reliably when segment sizes are small and network speeds are high (suggestion from @filiptibell).
-
Move from the unmaintained
bench_scrapercrate to thedecrypt-cookiescrate for access to cookies from your web browser. This crate also supports a wider range of web browsers. -
Move to v0.23 of the rustls crate for various performance and security improvements to TLS connection handling.
-
Update the
protobuf-srccrate which was causing builds to fail, and move to current versions of crates in the axum ecosystem used for tests.