-
Notifications
You must be signed in to change notification settings - Fork 263
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
Juttering video and audio on Chrome -- SPS/PPS NAL units #66
Comments
I have narrowed this down to Chrome on OSX only (pepperflash). |
I can now confirm this was broken in the latest version of chrome and only with its built in flash. 37.0.2062.94 works Both versions work on windows fine, so this is osx specific. However, http://osmfhls.kutu.ru/ does not suffer from the problem, so presumably a solution exists. |
Interesting information surrounding this release: Version 37.0.2062.120: Flash has been updated. It is a direct port, but clearly a broken one, at least for osx. |
The issue appears with streams transcoded with mpeg profile "main" v3.1, "baseline" works |
@mangui note that our bottom 3 profiles use baseline. But the top 2 are the ones that jutter on Chrome OSX 37.0.2062.120 (phew, a mouthful). So in summary this is a compatibility issue between Chrome >=37.0.2062.120 for OSX (Other platforms WORK) and its included PepperFlash (15.0.0.152) and flashls and chunks encoded with main v3.1 (other main profile may work, but baseline definitely does). As mentioned, the other player works -- so presumably there is a way to get it to work. |
Just a quick throw-in that I cannot repro, and that's with top profiles at 4.1. Does it work if you turn Pepperflash off? |
It works with pepperflash off. I've managed to repro across 3 mac machines on 10.9 and 10.10. Did you mean 4.1 or 3.1? Perhaps this is even more specific. |
I meant both. But I only tested the flashls plugin for Flowplayer, maybe that makes the difference. |
I have tested osmf and chromeless. I will get round to testing flowplayer. What version of OSX do you use? |
10.9.4 |
Hi guys, I can repro similar issue with Chrome 37.0.2062.120 with 15.0.0.152 on Win7/64bits |
I have the feeling that the issue only happens when playback switch from one level to another ?
this means that the last audio and video PES packets of some TS fragment are segmented improperly (accross 2 fragments) |
hm, I get |
yes, you will get this debug message accross all browsers as the parsing code is generic. i am just suspecting that Flash 15 might behave differently than Flash 14 in case of a missing/broken audio or video frame. |
Interesting how this seems to very machine specific -- I couldnt repro on Win 8 64bits. The combination of factors required to make this happen must be very specific. Does my stream have key frames placed properly at the beginning of each chunk (unsure how to check myself)? I have tested just one playlist profile and still experience the issue -- so I don't think it is strictly related to quality switching. I should be able to provide a zipped snapshot of the stream later today. |
if you have a snapshot (one or multiple level) with which you can 100% repro, that's fine as well. |
Hi mangui. I have emailed you a snapshot. |
Hi @adamscybot , anyway what seems clear is that it should be related to hw acceleration that has been activated by default on Chrome according to http://helpx.adobe.com/flash-player/release-note/fp_15_air_15_release_notes.html what needs to be checked here : |
dont push several times AVCC tags. related to #66
Hi, plz recheck with flashls/master and tell me if it is better. |
I can confirm this has fixed my stream. Have asked clarification from encoder provider about why SPS/PPS NAL unit appears in strange places. |
The latest change causes serious issue (video corruption) for me. I was seeing the problem that the change was meant to address, by the way. I'll try to put together a stream that demonstrates the problem. |
yes, if SPS/PPS change accross times, you will have video corruption. the code change I did is more a workaround than a real fix I am affraid. please share your stream, i need to think about a real solution. |
… or not don't push several times identical AVCC tags related to #66
Hi all, |
Here's a stream that shows very choppy playback in Chrome, but plays well on Firefox and in VLC: http://software.envysion.com/testvideo/manifest.m3u8 The encoder I'm using seems to produce new SPS/PPS before every IDR, and it always sends an IDR at the beginning of a fragment. The encoder only produces baseline profile, by the way. |
Yes, we're seeing the same thing. Going to build the latest release of chromeless player and see if it's fixed. Kudos to Mangui for being on top of this. |
Hi I will try to see how this could be fixed with this stream. @ALL, any other broken playlists welcomed. |
I checked http://software.envysion.com/testvideo/manifest.m3u8 with h264bitstream |
Hi @mattwa1sh |
Okay, I see this if I set the level above 4. At lower bitrates I do not see the issue in Chrome, which I believe would correspond with 4628, 2628 and 1928. #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=4628000,CODECS="avc1.64001f",RESOLUTION=1920x1080 |
so you mean the issue could be observed with any of the 3 level above at exactly 106s ? |
Yes, I observe the issue at levels 4,5, and 6 by setting them via "set level" in the chromeless player. |
i am not sure to visualize the same thing here, nothing really obvious with chrome/pepperflash 15/Win7 |
Should the SPS/PPS not change every time? Since they have to be sent at least once per segment (which is my understanding from reading http://tools.ietf.org/html/draft-pantos-http-live-streaming-13#page-20) you'd get at least one SPS/PPS set for each segment... No? |
I watched from 0 with the max buffer at 1000. The playback is still a tad bit jittery for me, but I didn't see the major tick at 1:46. When I seek back, I see the tick again. The 1:46 thing is as an example of the kinds of things we've been seeing in lots of our videos during the past two weeks. Like, in the one below for Tory Burch, there's a replicable tick at :16, when the girl in the yellow jacket turns around, that happens even if I watch from beginning, even with max buffer = 1000. I see it when I set level > 3. It happens every time. http://blive-video.bproductions.com/000929-002407-9j8/hls/desktop-playlist.m3u8 I taped what I'm seeing on my phone at level 4.: https://www.youtube.com/watch?v=H1zi3sSFW2E M |
Actually, some kind of tick happens there. The severity is sometimes less. |
i think there are two issues with your stream :
for the dropped frames, this seems to happen because too many times is spent in ENTER_FRAME event for TS parsing/and tag injection. we might have to review the max allowed time here. regarding video glitch, it should be the same issue than for the other streams. I am still not clear about the root cause. I rechecked the logic and I dont see anything wrong... if anybody has a contact @ Adobe it might help, I have a couple of questions to ask ... |
Not sure if this is a dumb question, but can we disable hardware acceleration all together? The video plays fine in Safari and FF after all. |
Hi @mattwa1sh [16:44:15] switching state to PLAYING (index):212 AND the glitch happens exactly when Stage video switches from software decoding to accelerated decoding ... I am not clear exactly why this is happening in the middle of the playback as there is no explicit trigger to switch from software to accelerated. it should be pure FP internal decision. |
it is possible to disable hw acceleration, just replace this line |
That is odd. I will remove the acceleration (for now), re-compile and see what that does. Stand by. |
Effing eff. That seems to have fixed the problem in Chrome: http://blive.bproductions.com/public/examples/chromeless/ Also, I didn't set the max buffer. It works okay with just the default. And I watched on level 5, which formerly had a lot of problems. It plays fine in Safari too. Matt |
The same change seems to work for me, too. |
Well, the electrician severed my broadband connection today and I am tethering to my phone instead. I can sometimes still see the problem at level 6 in Chrome with hardware acceleration off. But with this setup I haven't ever seen the problem at level 5. So the issue is not fully resolved. But that raises the question. How can I possibly get level 6 over 4G? I only have 3 bars on my phone here. Maybe a more conservative bandwidth to level calculation should be used. I will do some more testing tomorrow when I have a better internet connection. Matt |
I checked chrome://gpu/ on my side and I can see that my GPU is blacklisted, so hardware decoding is disabled. but still flash is trying to use it intermittently ... |
I'm not sure about that. I made the followinf change ~L440 in ChromePlayer.as:
And I can see the tick depending on how I seek, etc. This is a complex issue that is brought to light by, rather than caused by, the hardware acceleration. It's not a 1:1 relationship. I need to really dig in and test more, but this is still out there. |
On my machine, hardware decoding is enabled in chrome (the GPU isn't blacklisted), but the problem is still present unless I disable hardware acceleration in flashls. |
I think we can say the problem is greatly attenuated or eliminated by disabling hardware acceleration, |
That seems right. I built "allowHardwareAcceleration" as a flashvar which I check against the user agent. I'm allowing for all browsers but Chrome. |
Yeah, I will get this documented and put it up. Things have been hectic On Wed, Oct 29, 2014 at 11:03 AM, Adam Thomas [email protected]
|
Hi, with hls_usehardwarevideodecoder=no, I cannot repro the issue anymore, could you confirm on your side ? |
@mattwa1sh is it still happening on your side with latest flashls/dev ? |
Yes with hardware acceleration off this was not a problem. I do not have latest flashhls.... I really ought to do a pull request for my changes. |
Strange issues on my stream. Have sent stream to tvstreambox at gmail dot com.
The text was updated successfully, but these errors were encountered: