Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multi period MPD hangs after first period #285

Closed
erankor opened this issue Feb 17, 2016 · 13 comments
Closed

Multi period MPD hangs after first period #285

erankor opened this issue Feb 17, 2016 · 13 comments
Assignees
Labels
status: archived Archived and locked; will not be updated status: duplicate A duplicate of another issue; should be closed after linking to the original issue

Comments

@erankor
Copy link

erankor commented Feb 17, 2016

Hi,

I'm trying to play the following multi period MPD:
http://lbd.kaltura.com:8001/mapped/playlist-saas.php/disc/1/type/vod/manifest.mpd

And it hangs after the first period, the console shows this error:
endOfStream() should not modify the MediaSource's duration: before 90.066733 after 83.116449 delta -6.950283999999996

It is playing successfully in this player:
http://dashif.org/reference/players/javascript/v1.5.0/samples/dash-if-reference-player/index.html

Also, it seems that the player scrubber is showing only the duration of the first period (it reaches the end of the scrubber when the first period is over), isn't it supposed to show the total duration ?

Thanks

Eran

@erankor
Copy link
Author

erankor commented Feb 17, 2016

Ah, forgot to write, I'm testing it here:
http://shaka-player-demo.appspot.com/

Not sure if that's the latest version or not

Thanks

Eran

@joeyparrish joeyparrish self-assigned this Feb 17, 2016
@joeyparrish
Copy link
Member

The latest is v1.6.3, as seen on the appspot demo site. However, Shaka v1.x does not support multi-Period content.

We have yet to release a beta of v2.0, but we have already implemented multi-Period support in the preview branch. (See #186.)

When we reach the beta stage, we will merge preview into master and release v2.0.0-beta. This is tentatively scheduled for the end of February. If you are signed up for our mailing list, you will see an announcement there.

Unfortunately, the v2 work-in-progress is not complete yet, so you will have to wait for the beta. Sorry!

@joeyparrish joeyparrish added the status: duplicate A duplicate of another issue; should be closed after linking to the original issue label Feb 17, 2016
@erankor
Copy link
Author

erankor commented Feb 17, 2016

Ok, thanks !

@ct1n
Copy link

ct1n commented Mar 2, 2016

I've tried to take a look at the preview branch but there isn't any test player (index.html is gone). I've also tried using the one from the master branch but there seem to be too many changes.

Is there any player I could use?

@joeyparrish
Copy link
Member

The demo page is not complete yet. In the mean time, you can still use the library API from the preview branch. You can generate the API docs with ./build/docs.py, which will output to docs/api/. Run ./build/all.py to build the library itself. Here's a very simple demo of the most basic usage of the v2 API, complete with a short, multi-period asset:

<!DOCTYPE html>
<html>
  <head>
    <script src="third_party/closure/goog/base.js"></script>
    <script src="dist/deps.js"></script>
    <script src="shaka-player.uncompiled.js"></script>
    <script>
window.onload = function() {
  shaka.polyfill.installAll();
  var uri = '//storage.googleapis.com/widevine-demo-media/' +
      'heliocentrism/heliocentrism.mpd';
  player = new shaka.Player(video);
  player.addEventListener('error', function(event) {
    console.error('ERROR', event.detail);
  });
  player.load(uri).catch(function(error) {
    console.error('FAILED TO LOAD', error);
  });
}
    </script>
  </head>
  <body><video id="video" controls width="800" height="600" autoplay></video></body>
</html>

@ct1n
Copy link

ct1n commented Mar 2, 2016

Thanks!

We have a test stream here: http://31.14.160.192:8000/ah/manifest.mpd
It doesn't seem to work though...

@joeyparrish
Copy link
Member

That stream is using presentationTimeOffset, but it appears we aren't handling that attribute correctly. I just filed #297 to track this.

@joeyparrish
Copy link
Member

@perses, The manifest you referenced above is a live, multi-period manifest that seems to do some strange things. In particular, there seems to be no continuity between updates.

Period id="0" always starts at 0s, but 6s later when refreshing the manifest, the URLs that used to be Period id="1" at 8.4s are now showing in Period id="0" at 0s. The length and number of Periods fluctuates wildly, too. From 3 periods totaling 23s to 2 periods totaling 22s. This doesn't make much sense. Even when we fix presentationTimeOffset, this will not be supportable. What encoder are you using for this?

The expectation is that Period ids and timestamps are consistent and refer to the same content across updates. A Period may disappear in updates, and new Periods may be added. Control over how much content is available (the "DVR window") is handled with the timeShiftBufferDepth attribute.

@ct1n
Copy link

ct1n commented Mar 2, 2016

Make sure you use the URL from the Location element for future updates. The first request without URL query creates a new session and to access it in the future it needs the listeningSessionId URL parameter.

@ct1n
Copy link

ct1n commented Mar 2, 2016

Segments from the start of the first Period also are removed (in this case the timestamp of the first segment minus the presentationTimeOffset will be greater than zero). This is handled properly in GPAC MP4Client and dash.js when using a single Period (they have problems with multi-period).

@joeyparrish
Copy link
Member

Ah, I see. Then the remaining issue is likely our lack of <Location> support. I'll file that one, too.

@joeyparrish
Copy link
Member

See #298 for Location support.

@ct1n
Copy link

ct1n commented Mar 2, 2016

Thank you!

@shaka-project shaka-project locked and limited conversation to collaborators Mar 22, 2018
@shaka-bot shaka-bot added the status: archived Archived and locked; will not be updated label Apr 15, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
status: archived Archived and locked; will not be updated status: duplicate A duplicate of another issue; should be closed after linking to the original issue
Projects
None yet
Development

No branches or pull requests

4 participants