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

Gap detection is not consistent accross browsers (VP9/Opus) #3059

Closed
Maxou44 opened this issue Dec 23, 2020 · 4 comments
Closed

Gap detection is not consistent accross browsers (VP9/Opus) #3059

Maxou44 opened this issue Dec 23, 2020 · 4 comments
Labels
status: archived Archived and locked; will not be updated type: external An issue with an external dependency; not our issue; sometimes kept open for tracking

Comments

@Maxou44
Copy link

Maxou44 commented Dec 23, 2020

Have you read the FAQ and checked for duplicate open issues?
Yes

What version of Shaka Player are you using?
v3.0.6 or the version available on https://shaka-player-demo.appspot.com/

Can you reproduce the issue with our latest release version?
Yes

Can you reproduce the issue with the latest code from master?
Yes

Are you using the demo app or your own custom app?
Both can reproduce the issue

If custom app, can you reproduce the issue using our demo app?
Yes

What browser and OS are you using?
Google Chrome / Edge Chrome / Chromium browsers / Firefox on Windows

For embedded devices (smart TVs, etc.), what model and firmware version are you using?
Not tested

What are the manifest and license server URIs?
Sample stream available here: https://streaming.teester.com/_samples/manifest_gap.mpd (No license)

What did you do?

This manifest contains H264, VP9, OPUS and AAC streams, each stream was independently encoded using ffmpeg and the final manifest was hand crafted, based on ffmpeg generated manifest files.

The issue only happens when a Chromium browser try to stream the VP9/Opus stream, if I remove VP9/Opus streams, I can't reproduce the issue with the H264/AAC streams.

With the VP9/Opus stream I got a gap around 00:45, the following logs appears in the console:

Jumping forward 0.4588340000000031 seconds because of gap starting at 46.649 and ending at 48.017
Ignoring large gap at 46.580292 size 1.436708000000003

At first I thought the problem was with my VP9/Opus encoder settings, but I tried on Firefox and I can't reproduce the gap issue. Firefox use the same streams, the video-vp9-1080 and the audio-opus streams.

To conclude, there is a gap only on Chrome browsers, not on Firefox. It's strange 🤔

What did you expect to happen?
-> Understand why there is a gap on Chromium browsers but not on Firefox
-> Fix the bug on Chromium
-> If not possible find a work around to generate VP9/Opus without gap

@kocoten1992
Copy link
Contributor

Think I meet this one before, could you try aresample=async=1000 when encode audio then craft mpd again ? #2810 (comment)

I'm not sure how that work but guess is, firefox/mpv/vlc player do fix on gap with their video player, chrome decide playing as is.

@Maxou44
Copy link
Author

Maxou44 commented Dec 28, 2020

Thanks for your reply,

I have the same issue with a aresample=async=1000 on the audio* stream.
Manifest link: https://streaming.teester.com/_samples/manifest_gap_aresample.mpd

I also tried to generate a manifest without the audio stream and I have the same issue, maybe it's related to the video encode ?
Manifest video only: https://streaming.teester.com/_samples/manifest_video_only.mpd

I tried to generate a audio manifest and it works without gap:
Manifest audio only: https://streaming.teester.com/_samples/manifest_audio_only.mpd

@TheModMaker
Copy link
Contributor

First, you need to have the id attributes be unique; every one in your manifest is undefined. This won't affect the gap, but will cause major problems in live and isn't valid.

The gap is in the video streams, you can see this with player.getBufferedInfo(). Unfortunately I don't have any insights on why this would happen. You could probably file a bug on Chrome since it's their problem.

@TheModMaker TheModMaker added type: external An issue with an external dependency; not our issue; sometimes kept open for tracking and removed needs triage labels Feb 23, 2021
@Maxou44 Maxou44 closed this as completed Oct 29, 2021
@Maxou44
Copy link
Author

Maxou44 commented Oct 29, 2021

Reencode file worked

@shaka-bot shaka-bot added the status: archived Archived and locked; will not be updated label Dec 28, 2021
@shaka-project shaka-project locked and limited conversation to collaborators Dec 28, 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 type: external An issue with an external dependency; not our issue; sometimes kept open for tracking
Projects
None yet
Development

No branches or pull requests

4 participants