Releases: emarsden/dash-mpd-cli
v0.2.20
-
Add support for concatenating streams in multi-period manifests using mkvmerge, as an alternative to the existing support for concatenation using ffmpeg. The preference ordering for concatenation helpers is specified by commandline argument
--concat-preference
, which works similarly to the existing--muxer-preference
commandline argument. -
Concatenation using mkvmerge works at least with MP4 and with Matroska (.mkv) containers. It tends to be much faster than using ffmpeg but also less robust (less tolerant of the variety of media encoding specificities found in the wild). You can specify multiple concatenation helpers, in which case they will be called sequentially until one of them returns a success code.
-
Allow the user to specify a preference for streams based on the value of the
Role
element in anAdaptationSet
. Streaming services sometimes publish various additional streams marked with roles such asalternate
orsupplementary
ordescription
, in addition to the main stream which is generally labelled with a role ofmain
. The user can specify a preference order for these role annotations, which is applied after the language preference and before the width/height/quality preference. -
Fix a bug in concatenation for multiperiod manifests that occured when one of the Periods does not contain any audio.
-
Accomodate manifests which declare that a Representation has
mimeType="video/mp4"
andcodecs="mp4a"
(or some other audio codec). These Representations are now detected as audio streams rather than as video streams.
v0.2.19
- A new commandline argument
--minimum_period_duration
whose argument is a number of seconds. Periods in the manifest whose duration is less than this value will not be downloaded. This may be useful to avoid overloading the servers that deliver advertising segments that are sliced into the content of interest. - Fix a bug in the concatenation of multiperiod manifests. When per-Period files contained both audio and video content, the content was being included twice in the concatenated file.
- MacOS release binaries are now universal binaries, rather than Aarch64 ("Apple Silicon") binaries.
- Fixed release builds for Microsoft Windows. These builds are currently using a fork of the bench_scraper crate, pending integration of patches that fix builds on Windows and update dependent crates.
v0.2.18
- Fix bug in filename handling when using the ffmpeg concatenation filter, which is used for multiperiod manifests when the technical characteristics of the different periods make it possible to concatenate them without reencoding. Filenames were not properly escaped when passed as arguments to the
filter_complex
commandline argument. - Add support for subtitles that use SegmentBase addressing.
- Subtitles in STPP format (a data stream in MP4 fragments) are now converted to TTML format. The XML data stream is extracted using ffmpeg. If the conversion is successful it will be saved to a file with the same name as the output file, but with a
.ttml
extension.
v0.2.17
-
Network requests for media fragments that fail are retried a certain number of times. The number of retries for each fragment request can be set using the
--fragment-retries
commandline argument (default is 10). Network errors that are identified as being transient (for example, network timeouts) do not count towards this retry count. Network requests were previously retried only if they were identified as transient, but anecdotally it seems that the internet and CDN servers are not set up in a way that allows transient errors reliably to be distinguished from non-transient errors. Non-transient retries still count towards themax_error_count
, whose default value is increased to 30. -
Error messages include additional contextual information. For example, a network connection error caused by a TLS configuration error will include information on the underlying issue.
-
The prebuilt software container
ghcr.io/emarsden/dash-mpd-cli
is now built also for Linux/ppc64le.
v0.2.16
Prepare for v0.2.16 release
v0.2.15
- Fix the handling of the
--referer
commandline option, now used in all network
requests (bug reported by @yoyo890121).
v0.2.14
-
The referer header specified using the
--referer
commandline option is now used in all network
requests, including requests for media segments. Previously, the referer specified on the
commandline was only used to retrieve the MPD manifest, and the referer header used in network
requests for media segments was the URL of the MPD manifest, updated to account for any HTTP
redirects and for use of the DASHLocation
redirect functionality. The new behaviour allows the
user to mimic the behaviour of a web browser which is playing media embedded in a web page. -
Cookies set while retrieving the MPD manifest will be included in requests for media segments.
In practice, media servers rarely check cookies, as doing so is expensive on CDN infrastructure,
but this should help to mimic the behaviour of a web browser which is playing media embedded in a
web page. -
Fix handling of XLinked elements when remote XML fragment contains multiple elements.
main
CI: debug release build on aarch64-apple-darwin
v0.2.13
-
Fix the handling of XLinked elements. The Shaka heliocentrism test case now works correctly.
-
Widevine and PlayReady initialization data will now be decoded and pretty printed, alongside their Base64 representation (uses the new
pssh-box
crate). -
Fix concatenation for multiperiod manifests in situations where one period has audio and another has no audio track.
-
We have changed the workflow used to produce release binaries, and these are currently generated for fewer platforms than previously. We will hopefully restore the missing platforms in future releases.
v0.2.12
-
The
tracing
crate is now used for all logging purposes. Logged messages can be controlled using
theRUST_LOG
environment variable. As previously, warning and error messages are printed to
stderr, and other informative messages to stdout, but they will now be prefixed by a timestamp. -
The Docker container at
ghcr.io/emarsden/dash-mpd-cli
is now also available for linux/arm/v7
(32-bit ARM) and linux/riscv64, in addition to linux/amd64 and linux/arm64. -
Fix bug in the handling of toplevel
Period.SegmentTemplate
elements (rarely present in the wild,
but allowed by the DASH specification). -
When deciding whether downloaded video files can be concatenated using the ffmpeg concat muxer, we
tolerate missing sar metainformation (not always present in MP4 containers in the wild).