-
Notifications
You must be signed in to change notification settings - Fork 5
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
sequential-track-playback-manual dropping frames #18
Comments
@yanj-github can you provide more details for example which content. Did you tried to play the content e.g. in dash.js player? |
@louaybassbouss I am using https://dash.akamaized.net/WAVE/vectors/avc_sets/1/ |
I would like to get answers to the following points:
|
@yanj-github we are checking |
@yanj-github Is this a PC or a TV? If it is easy for you to modify the code, you might try reading VideoPlaybackQuality.droppedVideoFrames (and perhaps totalVideoFrames ) from In principle there should be no dropped frames. |
@yanj-github if you are in Browser can you try to play the content via dash.js player I prepared this URL for you which takes the |
Thanks @louaybassbouss I will try it, I think this is exactly what I am seeing on the test runner as well. On different try dropping different number of frames. It seems I never reach 0 dropping though. I will try dash.js player later and post an update. |
@louaybassbouss I have tried avc_sets/1/ on dash js player from your linke above 117 on 1st run 88 on second run 19 on thrid run 0 drop on 4th run. I am getting different frame drop on different run. I think this might due to the network latency. I am thinking if there is any way to do clear run by passing internet but serve content locally. |
Thanks @yanj-github for the investigation yes this is the reason why we need to serve the content locally. |
Yes, I have pretty bad internet connection here. If you can try out locally see if you seeing frame lost on 1st frame always on test runner please? I dont think we can make dash js local though. |
@yanj-github You can use dash.js with local content. just copy the local url to the MPD and paste it in the dash.js url input and click on load (make sure you use dash.js via http and not https e.g. http://reference.dashif.org/dash.js/v3.2.0/samples/dash-if-reference-player/index.html). |
I don't understand what is going on here. |
I think I have same question too; I don't understand why frames dropping on the internet connection, I thought it would rather pause. |
I've played it using Chromium on Linux. No dropped frames but it repeatedly stalls - it somehow doesn't detect the buffer running low and fails to reload early enough. Chrome on Android is basically the same. vlc plays it on the same Linux computer with no stalling but with a glitch and an error near the start - vlc on android is the same as vlc on Linux. |
@rbouqueau please could you take a quick look at avc_sets/1/?
|
I'm on it. I can see some dropped frames too. The packaging is a part of the workflow I haven't touched but where I spotted issues: 1) changing the FFmpeg version produces different streams and 2) there are indeed conformance or compatibility issues as reported at cta-wave/Test-Content-Generation#21 (comment). |
It seems like I have no dropped frame when I stop mixing frame rates. Audio has no impact (although browser logs and conformance maxDuration warning complain about the audio). Both Chrome and Firefox show some dropped frames. I tried previous dash.js versions (2.3.0 and 3.1.3) and could also see frame drops. Still working on it. @yanj-github Could you tell me more about how the "sequential-track-playback-manual playback" test works? |
I have set up test runner locally and downloaded the contents and give the "sequential-track-playback-manual playback" the local URL. So when everything is local I can see it dropping 1st frame. |
@yanj-github This test should not be mixing frame rates. If it is then there is something wrong.
@rbouqueau This test is intended to play a single DASH Representation from beginning to end. That's it. Nothing clever or smart. The code just needs to read the MPD to find the first Representation and the corresponding URL, read the initialization segment & pass that to MSE and then read the media segments and pass them to MSE. Really, really simple. It's intended for testing that various options in the content and packaging work. |
I've left it run 50mn with a subset using only one frame rate: no dropped frame both on Firefox and Chrome.
Ok. Are there any tests involving multiple framerates? If so, had they passed with previous streams generated with the Test Content Generation scripts? FYI I'm not excluding an issue from the content, I'm still investigating. |
@jpiesing @yanj-github the test only plays the first representation in the video. There is no magic in the test implementation just fetch the media segments and append them to the SourceBuffer. On JavaScript level we don't have any influence on dropping frames. BTW: This test expects an MPD with a single representation to make easier to test and compare with other players it makes sense to only consider a single representation. The audio should be in a separate MDP. |
"Switching Set Playback" should be run with an MPDs including 60/30/15 (and 50/25/12.5 but we don't have that yet).
|
Ok I've refocused my tests on this then. |
Everything seems ok: RAP placement, timings across segment borders, segment duration, uniformity of flags&durations, sidx. I'll stop for today but I'm open to ideas or suggestions. While doing a random test, I realized that I have dropped frames with virtually any content: So I tried on Linux: zero dropped frames (Firefox and Chromium). Is anyone not on Windows? |
Some thoughts:
|
I'm on Linux & not seeing dropped frames (except perhaps for 1 at the start sometimes). The same on Android. |
@dsilhavy Thanks :) Max bitrate is 6mbps and it even occurs with a 200kbps 15fps stream. On both Firefox and Chrome. And on dash.js 2.3.0, 3.1.3 and 3.2.0. On the default BBB content and our content. The only differentiator is the OS - why not a regression specific to Windows? (or maybe a difference in the way the dropped frames are reported on Windows?) (seems far fetched but is my best guess before having a good night of sleep) Media-internal says nothing on this unfortunately. |
I gave another try and still see dropped frames (although less than on our content) for https://reference.dashif.org/dash.js/v3.2.0/samples/dash-if-reference-player/index.html?mpd=https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps.mpd It is on my todo-list to investigate this further this week. As always any idea is welcome :) |
I did a quick check as well:
My first assumption was that this is caused by a quality switch and a decoder buffer underflow. However, I see the same problem even after the quality switch has already been rendered. Maybe there are some warnings/errors during the encoding process regarding the VBV? Edit: For means of comparison: I saw the described behavior on the highest quality 12Mbit/s |
@dsilhavy interesting. There were no vbv parameters so I added them: still had the dropped frames. I've also removed the color parameters: same. I came back to the Google Chrome media-internals and see this:
These messages are related to the audio only. I wanted to make a try using a different packager. |
@rbouqueau @dsilhavy does it make sense to test a video-only stream without audio? |
@louaybassbouss Good remark. At the beginning I suspected the framerate mix. So I reduced the set until having only one video. It reduces the probability to encounter dropped frames with falling to zero. That's when I tested back on Big Buck Bunny and saw I had dropped frames too... My current hypothesis is that 1) the dropped frame callback has changed and 2) our content has many of them and I suspect the packaging. |
@rbouqueau The messages on audio overlapping the append window are caused by audio segments slightly overlapping period boundaries. dash.js maps the period boundaries to the |
Ok I found time to repackage with gpac and the rate of dropped frames fell: https://reference.dashif.org/dash.js/v3.2.0/samples/dash-if-reference-player/index.html?mpd=https://www.gpac-licensing.com/downloads/CTA-Wave/gpac/manifest.mpd. |
@rbouqueau I cannot play the video in dash.js it seems that the CORS Headers are not set for https://www.gpac-licensing.com/downloads/CTA-Wave/gpac/manifest.mpd |
I had one dropped frame on the first run through but none on subsequent runs. |
@louaybassbouss @FritzHeiden As mentioned in the April 27 meeting, please use the above content in the docker deploy image as a short-term fix until there is more content from @rbouqueau |
@jpiesing AVC tests are now using the new content https://dash.akamaized.net/WAVE/vectors/avc_sets/gpac/manifest.mpd |
@louaybassbouss The test starts but all I get is a black page with a QR code for a few seconds then the test finishes. There are no error messages. Presumably a URL is wrong somewhere? |
@jpiesing I just rebuilt the docker image and ran it in a container. For me the tests work as intended, I cannot reproduce this behavior. As the old mpd URLs do not work anymore, which may cause such behavior, to me it seems this is some sort of caching issue again. |
@FritzHeiden There's no point debugging something that is out of date. I'll wait until the new content is integrated including the .zip file & try it again then. |
@FritzHeiden @jpiesing Let me know if there are still invisible things. I can navigate on the server and point you to the right content. |
Thanks @rbouqueau when do you think you can remove the output folder from the zip file? |
@rbouqueau you can ignore this it is already implemented. This is the current structure of the folder structure in the zip file (example t1.zip) and it is important to keep this structure across all files. Thanks a lot 👍 |
With the latest content I dont see many dropping frames. There are some dropped at the beginning then 1-2 in the middle. |
Frames dropped at the beginning and end are particularly critical - that's the reason for the mezzanine content having single colour frames added before and after the video. |
Thanks @jpiesing I can confirm this is not OF. I have checked the recording manually, it starts from frame 6 onwards. The previous recroded frame to it is a balc screen with a test runner QR code status=ready. There fore we missing green screen and strating frame 1-5. |
Then that is a fairly significant fail for that particular device. |
I propose closing this issue. If some devices aren't fast enough to play 1920x1080p60 content then that's a device problem not a test problem. If devices are fast enough to play 1920x1080p60 with (say) vlc but not with MSE then that's an architecture issue. |
Yes please @jpiesing |
|
I am seeing the test "sequential-track-playback-manual playback" is dropping many frames.
Can you investigate if you are seeing this on your end as well please?
The text was updated successfully, but these errors were encountered: