Closed eponymous301 closed 6 years ago
updated sample MPD (copied after I obtained console output in ticket)
<?xml version="1.0" encoding="utf-8"?>
<MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:mpeg:dash:schema:mpd:2011"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd"
profiles="urn:mpeg:dash:profile:isoff-live:2011"
type="dynamic"
minimumUpdatePeriod="PT6S"
suggestedPresentationDelay="PT6S"
availabilityStartTime="2018-03-15T00:52:13Z"
publishTime="2018-03-15T01:37:43Z"
minBufferTime="PT12.0S">
<ProgramInformation>
</ProgramInformation>
<Period id="0" start="PT0.0S">
<AdaptationSet id="0" contentType="video" segmentAlignment="true" bitstreamSwitching="true">
<Representation id="0" mimeType="video/mp4" codecs="avc1.64001e" bandwidth="500000" width="640" height="480" frameRate="30/1">
<SegmentTemplate timescale="15360" initialization="live-$RepresentationID$-init.m4s" media="live-$RepresentationID$-$Time$.m4s" startNumber="1">
<SegmentTimeline>
<S t="1859415552" d="92160" r="455" />
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
<AdaptationSet id="1" contentType="audio" segmentAlignment="true" bitstreamSwitching="true">
<Representation id="1" mimeType="audio/mp4" codecs="mp4a.40.2" bandwidth="128000" audioSamplingRate="48000">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2" />
<SegmentTemplate timescale="48000" initialization="live-$RepresentationID$-init.m4s" media="live-$RepresentationID$-$Time$.m4s" startNumber="1">
<SegmentTimeline>
<S t="5810634896" d="323584" />
<S d="288768" />
<S d="287744" r="1" />
<S d="288256" />
<S d="287744" r="1" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287232" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287232" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288256" />
<S d="287744" />
<S d="288256" />
<S d="287744" />
<S d="288768" />
<S d="287232" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288256" />
<S d="287744" />
<S d="288256" r="1" />
<S d="287744" r="1" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287232" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288256" />
<S d="287744" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287232" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287232" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287232" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="1" />
<S d="288256" />
<S d="287744" r="1" />
<S d="288768" />
<S d="287744" />
<S d="288256" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" />
<S d="288256" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287232" />
<S d="288768" />
<S d="287744" r="1" />
<S d="287696" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" />
<S d="288256" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288256" />
<S d="287744" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="1" />
<S d="288256" />
<S d="287744" r="1" />
<S d="288256" />
<S d="287744" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287232" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" />
<S d="288256" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="2" />
<S d="288768" />
<S d="287744" r="1" />
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
</Period>
</MPD>
That t="5810634896"
divided by timescale is approximately 33 hours. Taking availabilityStartTime+33 hours results in a timestamp in tomorrow.
The timing in this content appears to be defective - the content of the stream is in the future.
Hmm, not sure where that t value comes from. Perhaps OS X is supplying a timestamp counting from last system boot and ffmpeg is passing along.
I will try pulling out the -copyts parameter from my ffmpeg command line and see if that improves things. (I did try using presentationTimeOffset attribute in \<SegmentTemplate> to compensate for starting "t" but that did not help)
Removing '-copyts' from ffmpeg command line makes the stream playable. Not quite a bug in ffmpeg dash encoder I think, although it really should output a warning.
Controls show a nonsense number for total duration though (-14:-8) , I imagine this has already been filed as a separate bug but I'll take a look.
Environment
[x] The MPD passes the DASH-IF Conformance Tool on http://dashif.org/conformance.html
[x] The stream has correct Access-Control-Allow-Origin headers (CORS)
[x] There are no network errors such as 404s in the browser console when trying to play the stream
[x] The issue observed is not mentioned on https://github.com/Dash-Industry-Forum/dash.js/wiki/FAQ
[x] The issue occurs in the latest reference client on http://reference.dashif.org/dash.js/ and not just on my page
Link to playable MPD file: Stream not available online but I have pasted the MPD file at end of this post.
Dash.js version: 2.5.0 through nightly build as of March 14 2018 except v2.6.0
Browser name/version: Chrome Version 64.0.3282.186 (Official Build) (64-bit) Safari Version 11.0.3 (13604.5.6)
However, versions other than 2.6.0 work in Firefox 58.0.2 (64-bit)
OS name/version: OS X 10.13.3 (17D47)
Steps to reproduce
My ffmpeg info:
Create a directory, set it to current.
Execute the following command line on MacBook Pro to stream from webcam/microphone to DASH, using timeline:
Serve up the directory via webserver or utility of your choice that allows setting Access-Control-Allow-Origin (I used Sinatra / Ruby):
Play with reference player. (if using above Sinatra server, http://your.ip.address:4567/live.mpd)
Bug is consistent.
Observed behaviour
Describe what the player is doing that is unexpected or undesired behaviour.
Stream fails to play on Safari and Chrome unless using version 2.6.0 of reference client. Other versions tried from 2.5.0 through nightly build do not play, either showing black screen or first frame.
Firefox successfully plays with versions other than 2.6.0.
Bitmovin client successfully plays.
Console output
From nightly build reference client 2.6.7 on Chrome 64.0.3282.186 (Official Build) (64-bit)
SAMPLE MPD