Steps to reproduce
When playing back video content in EDGE and IE11 using native HLS or MSE, visual decoding errors sometimes appear in the form of miscolored pixels/macroblocks, often green, when seeking to specific times or bitrate switching. This issue is much more prevalent in IE11, but can be observed in Edge as well. The corruption when bitrate switching is more likely to happen when appending content near the playhead, but this is not a requirement if the key frames do not line up perfectly across bitrate variants. I will be using the https://github.com/videojs/videojs-contrib-hls for my MSE examples, however the issues are not specific to this project and can be reproduced with other MSE based players. videojs-contrib-hls added a workaround for the bitrate switching issues through pull request https://github.com/videojs/videojs-contrib-hls/pull/1259 but for the purposes of showing the problem, the following jsbins are using the version of videojs-contrib-hls before that workaround was merged.
Steps to reproduce:
Native HLS by seeking (no bitrate switching required):
- Load https://s3.amazonaws.com/bc-jrivera/moose/12140/prog_index.m3u8 into Edge directly so that it loads the video using Edge native HLS playback. This is a single bitrate, so no switching involved.
- You can play through the video and see there are no issues.
- Seek to 0:20-0:23 and observe. It should already be buffered so there is no appending. Frozen frames and visual corruption should be visible.
- Alternatively, you can seek to 0:19 or 0:24 and have no issues.
MSE by seeking (no bitrate switching required):
- go to http://jsbin.com/dozuzosahu/1/edit?html,console,output in Edge or IE11
- follow steps 2-4 from above
Native HLS by bitrate switching:
- Load https://s3.amazonaws.com/bc-jrivera/moose/master.m3u8 into Edge directly.
- Play through and observe (Note that this is a bit more difficult to reproduce as you will have to throttle/unthrottle your connection to force bitrate switches)
MSE by bitrate switching:
- go to http://jsbin.com/coxujudevi/1/edit?html,output in Edge or IE11
- play through and click on the “Switch bitrates” button to force a bitrate switch.
- observe the corruption
Microsoft Edge 41.16299.15.0
Microsoft EdgeHTML 16.16299
Comments and activity
Sorry, the Github links in the first paragraph got messed up. Here they are again
I’ve noticed a few issues with my jsbin examples so I’ve updated them here. The examples in my original post did not actually use MSE. I’m also experiencing some CORS issues for the higher bitrate playlist, but the source has proper CORS setup and loads fine in other browsers. You might have to download the source and host locally.
MSE by seeking
Also with the seeking, spam clicking a specific seek time has a very odd behavior
MSE by bitrate switching