Skip to content

Releases: emarsden/dash-mpd-cli

v0.2.20

08 Jun 10:06
Compare
Choose a tag to compare
  • 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 an AdaptationSet. Streaming services sometimes publish various additional streams marked with roles such as alternate or supplementary or description, in addition to the main stream which is generally labelled with a role of main. 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" and codecs="mp4a" (or some other audio codec). These Representations are now detected as audio streams rather than as video streams.

v0.2.19

21 May 17:12
Compare
Choose a tag to compare
  • 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

09 May 15:11
Compare
Choose a tag to compare
  • 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

15 Apr 10:22
Compare
Choose a tag to compare
  • 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 the max_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

30 Mar 16:15
Compare
Choose a tag to compare
Prepare for v0.2.16 release

v0.2.15

24 Feb 13:10
Compare
Choose a tag to compare
  • Fix the handling of the --referer commandline option, now used in all network
    requests (bug reported by @yoyo890121).

v0.2.14

18 Feb 22:17
Compare
Choose a tag to compare
  • 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 DASH Location 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

21 May 17:55
Compare
Choose a tag to compare
CI: debug release build on aarch64-apple-darwin

v0.2.13

06 Feb 09:48
Compare
Choose a tag to compare
  • 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

25 Dec 21:21
Compare
Choose a tag to compare
  • The tracing crate is now used for all logging purposes. Logged messages can be controlled using
    the RUST_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).