-
Notifications
You must be signed in to change notification settings - Fork 6k
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
DASH Live stream stops playing multiperiod manifest #4492
Comments
@tonihei - The crash looks like a bug in
I think you'd normally expect @bhjortsberg - For the playback getting stuck, this may be a result of invalid changes being made to the manifest. Unfortunately we can't determine whether this is the case just from a snapshot of the manifest. We'd need a working test stream ideally, or alternatively a sequence of manifest files showing how it changes over time. |
It's possible that it can be something with the manifest, I can't see anything myself though. Attaching a sequence of manifest when the player get stuck. I think it's hard to get a working stream, but I can do a network capture if that would help. I'm not sure if it get stuck when the old period (id: p_3_382868305) disappears from the manifest or when the new (id: p_3_382868325) is created. manifest_player_stop_08.mpd.txt |
…t update. Issue:#4492 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=205636634
…t update. Issue:#4492 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=205636634
The actual crash should be fixed now. Please could you try |
Hi, yes the crash is fixed! However, the stream still gets stuck. |
Ok. I'm not sure we can do much about that without a live test stream, given we're unable to reproduce with other streams we have. I couldn't see anything obviously wrong from the manifests provided. |
Ok, I'll see if I can come arrange something. |
Hi, I have now created a live stream. |
Using the latest Could you describe exactly what you're seeing when you try and play this stream? |
There is a new period when switching to and from the green/white stripe part. This stream works better and I can see what you are seeing that it freezes at 29:27, the period ends at 30:00. This freeze does not happen on 2.6.1 or in shaka-player. |
Sometimes it also freezes at 09:27 just before green/white stripe preiod should start, sometimes you can see just millisecond stall. And sometimes it just works without problem. A timing issue? |
I tried reproducing again with some additional logging this morning. Playback worked flawlessly for about half an hour. Now I'm seeing very frequent socket timeouts, which is making it difficult to test. Could you take a look and see if there's a problem? For what it's worth, my suspicion is that there's something subtly wrong with the stream. The logging I've added is to look at the sample timestamps being extracted (after adjustment by presentation offset) from each period. I'm interested in checking they align properly with what the manifest indicates is there (i.e. they start at t~=0 and go up to t~=period_duration). When the stream was working flawlessly they looking absolutely fine, but that doesn't really tell us much :). |
In addition to checking the socket timeout problem, is it possible for you to increase the size of the live window for the stream? It's quite frustrating getting to the point where the issue reproduces, and not being able to rewind to go over that point again because it's dropped off the back of the live window. |
Yes, I can increase the live window. And I will try to make the connection more stable. |
You should have 20min live window now (at least when it has been running for 20min). Segments will be available for 60min. |
I think this issue occurs only when the DASH manifest is both multi-period and contains |
In addition, I'm fairly confident that the |
Nice! Yes, I'll be able to verify the fix. |
If I remove the |
EventSampleStream.readData required eventStreamUpdatable to be false for END_OF_STREAM to be returned, but it was only being set to false when the manifest became static. This change also sets it to false if the period is not the last one in a dynamic manifest. It also renames it the parameter to appendable, since that's what it really represents. Events may still be removed from the start of the EventStream as the period starts moving out of the live window. Issue: #4492 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=207517265
The ExoPlayer part of this issue is addressed by the change ref'd above. I'm not certain, but you may still encounter eventual freezing for as long as the presentation timestamps in the Thanks for the test stream; very helpful! |
EventSampleStream.readData required eventStreamUpdatable to be false for END_OF_STREAM to be returned, but it was only being set to false when the manifest became static. This change also sets it to false if the period is not the last one in a dynamic manifest. It also renames it the parameter to appendable, since that's what it really represents. Events may still be removed from the start of the EventStream as the period starts moving out of the live window. Issue: #4492 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=207517265
I've verified the fix and it works! Thanks a lot! |
Yes, it has been cherry picked already: e92d655 |
The current structure tries to associate events to media periods and windows based on the reported values and the current timeline. However the reported EventTime may not always be consistent in case the timeline doesn't contain windows or media periods yet or not anymore. The recent changes to MediaPeriodId allow to use it as a unique identifer for media periods independent of the timeline. This enables more accurate tracking of the media period queue and prevents reporting events with inconsistent data. Issue:#4492 Issue:#4634 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=210713120
Issue description
Playing a DASH Live stream with multiperiods.
The player is stuck and stops playing when there is a new period. Sometimes the player continues after 30-60s and eventually the player also crashes with
Using an older version of ExoPlayer works fine (2.6.1).
Reproduction steps
See the provided DASH media presentation
Link to test content
Unfortunately no link but the manifest file that cases the issue:
manifest_period.mpd.txt
Version of ExoPlayer being used
Non-working version: 2.8.2
Working fine in: 2.6.1
Device(s) and version(s) of Android being used
Emulator Android 7.1.1 and OnePlus3T Android 8.0
Link
The following issue seem to be similar use case:
#3431
The text was updated successfully, but these errors were encountered: