https://github.com/globocom/dash_timeline_validator
It parses and validate a given MPD about its errors of the timeline.
https://github.com/globocom/dash_timeline_validator
dash live-streaming mpd mpeg streaming-video validation video
Last synced: 9 months ago
JSON representation
It parses and validate a given MPD about its errors of the timeline.
- Host: GitHub
- URL: https://github.com/globocom/dash_timeline_validator
- Owner: globocom
- License: bsd-3-clause
- Created: 2019-04-10T18:38:29.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2020-12-15T20:40:05.000Z (over 5 years ago)
- Last Synced: 2025-09-07T02:48:44.602Z (9 months ago)
- Topics: dash, live-streaming, mpd, mpeg, streaming-video, validation, video
- Language: Ruby
- Homepage:
- Size: 130 KB
- Stars: 14
- Watchers: 10
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Dash Timeline Validator
This tool allows you to validate your [MPEG Dash](https://en.wikipedia.org/wiki/Dynamic_Adaptive_Streaming_over_HTTP) manifest to find if there are errors related to the presentation timeline model.

## Docker Usage
```
docker run --rm -it anafrombr/dash_timeline_validator https://storage.googleapis.com/shaka-live-assets/player-source.mpd --verify_segments_duration false
```
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'dash_timeline_validator'
```
And then execute:
$ bundle
Or install it yourself as:
$ gem install dash_timeline_validator
## Usage
Run this program passing the manifest path. It can be either a URI or local path.
```
dash_timeline_validator https://storage.googleapis.com/shaka-live-assets/player-source.mpd
```
Running the program without any parameters or using `h` will show usage instruction along with optional parameters.
### Options
- `acceptable_drift *(default 2)*` - the minimum duration drift acceptable between the sequential segments
- `presentation_delay *(default 10)*` - the delay in seconds of the live edge
- `buffered_segments *(default 2)*` - the number of segments buffered by the player to generate the live edge
- `verify_segments_duration *(default false)*` - check the duration of every segment when setted to `true` (warn: this will download every segment of the manifest)
- `analyzer_folder *(default "data/[HASH]")*` - folder used to download the files
- `analyzer_manifest_path *(default "#{analyzer_folder}/manifest.mpd")*` - manifest path
Example:
```
dash_timeline_validator https://storage.googleapis.com/shaka-live-assets/player-source.mpd --acceptable_drift 2
```
### What does it validates?
1. The advised timeline segments - basically, if the ` d=>` [is summing up right](https://github.com/globocom/dash_timeline_validator/blob/master/lib/dash_timeline_validator/segment.rb#L24-L30). Our audio segments were drifting (due to a round we made) and this made the exoplayer behave as if it were buffering while most of the other players didn't show any problem at all. It optionally [download and check whether the advised duration](https://github.com/globocom/dash_timeline_validator/blob/master/lib/dash_timeline_validator/segment.rb#L45-L64) equals to the one being served.
2. The advised timeline - if the [possible live edge is contained within the advised timeline](https://github.com/globocom/dash_timeline_validator/blob/master/lib/dash_timeline_validator/representation.rb#L34-L55) (to use client wall clock, ast, mbt, player buffer to see what should be one possible live edge)
## Development
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/globocom/dash_timeline_validator.