{"action":"created","issue":{"url":"https://api.github.com/repos/video-dev/hls.js/issues/1201","repository_url":"https://api.github.com/repos/video-dev/hls.js","labels_url":"https://api.github.com/repos/video-dev/hls.js/issues/1201/labels{/name}","comments_url":"https://api.github.com/repos/video-dev/hls.js/issues/1201/comments","events_url":"https://api.github.com/repos/video-dev/hls.js/issues/1201/events","html_url":"https://github.com/video-dev/hls.js/issues/1201","id":235016421,"number":1201,"title":"nextLevel switch causes temporary playback hanging at level switch point","user":{"login":"jazzmanro","id":14343554,"avatar_url":"https://avatars2.githubusercontent.com/u/14343554?v=3","gravatar_id":"","url":"https://api.github.com/users/jazzmanro","html_url":"https://github.com/jazzmanro","followers_url":"https://api.github.com/users/jazzmanro/followers","following_url":"https://api.github.com/users/jazzmanro/following{/other_user}","gists_url":"https://api.github.com/users/jazzmanro/gists{/gist_id}","starred_url":"https://api.github.com/users/jazzmanro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jazzmanro/subscriptions","organizations_url":"https://api.github.com/users/jazzmanro/orgs","repos_url":"https://api.github.com/users/jazzmanro/repos","events_url":"https://api.github.com/users/jazzmanro/events{/privacy}","received_events_url":"https://api.github.com/users/jazzmanro/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2017-06-10T17:36:27Z","updated_at":"2017-06-23T06:02:04Z","closed_at":null,"body":"<!-- If you are raising a bug playing a stream, you must fill out the following or your issue may not be responded to. For features or improvements, you may delete this. -->\r\n##### Environment\r\n<!-- Replace [ ] with [x] to check off the list -->\r\n- [x] The stream has correct Access-Control-Allow-Origin headers (CORS)\r\n- [x] There are no network errors such as 404s in the browser console when trying to play the stream\r\n- [x] The issue observed is not already reported by searching on Github under https://github.com/video-dev/hls.js/issues\r\n- [x] The issue occurs in the latest reference client on http://video-dev.github.io/hls.js/demo and not just on my page\r\n* Link to playable M3U8 file: https://jahos.net/hlsjstest/test.m3u8\r\n* Hls.js version: v0.7.9\r\n* Browser name/version: Google Chrome / 59.0.3071.86 (Official Build) (64-bit)\r\n* OS name/version: macOS Sierra / 10.12.5 (16F73)\r\n\r\n##### Steps to reproduce\r\n1. Play using reference client: https://video-dev.github.io/hls.js/demo/?src=https%3A%2F%2Fjahos.net%2Fhlsjstest%2Ftest.m3u8\r\n2. Toggle quality level controls\r\n3. Toggle between various levels using next level controls\r\n\r\n##### Expected behavior\r\nSwitching goes smooth\r\n\r\n##### Actual behavior\r\nPlayback hangs a bit at actual switching point.\r\nHanging times can be from <1s to few seconds. Then playback resumes. Not sure but playback may also jump a bit especially when it hangs for a few seconds.\r\nThis happens consistently with the sample stream although buffer has enough segments preloaded, so doesn't seem a buffer starvation issue.\r\n\r\n##### Console output\r\n```\r\nGET https://video-dev.github.io/streams.js \r\nvideo-dev.github.io/:212 GET https://localhost:35729/livereload.js?snipver=1 net::ERR_CONNECTION_REFUSED\r\nvideo-dev.github.io/:210 GET https://video-dev.github.io/streams.js 404 (Not Found)\r\nlogger.js:39 [warn] > cannot flush, sb updating in progress\r\n(anonymous) @ logger.js:39\r\nflushBuffer @ buffer-controller.js:552\r\ndoFlush @ buffer-controller.js:395\r\nonBufferFlushing @ buffer-controller.js:348\r\nonEventGeneric @ event-handler.js:65\r\nonEvent @ event-handler.js:53\r\nEventEmitter.emit @ events.js:84\r\ntrigger @ hls.js:93\r\nflushMainBuffer @ stream-controller.js:726\r\nnextLevelSwitch @ stream-controller.js:713\r\nset @ hls.js:229\r\nonclick @ ?src=https%3A%2F%2Fjahos.net%2Fhlsjstest%2Ftest.m3u8:1\r\nblob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:5510 [warn] > Dropping 1 audio frame @ 15.520s due to 122.8 ms overlap.\r\n(anonymous) @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:5510\r\nremuxAudio @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:5094\r\nremux @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:4654\r\nappend @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:3022\r\npushDecrypted @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:1243\r\npush @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:1197\r\n(anonymous) @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:1319\r\nblob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:5510 [warn] > Dropping 1 audio frame @ 15.520s due to 99.58004535147403 ms overlap.\r\n(anonymous) @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:5510\r\nremuxAudio @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:5094\r\nremux @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:4654\r\nappend @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:3022\r\npushDecrypted @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:1243\r\npush @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:1197\r\n(anonymous) @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:1319\r\nblob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:5510 [warn] > Dropping 1 audio frame @ 15.520s due to 76.36009070294806 ms overlap.\r\n(anonymous) @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:5510\r\nremuxAudio @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:5094\r\nremux @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:4654\r\nappend @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:3022\r\npushDecrypted @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:1243\r\npush @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:1197\r\n(anonymous) @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:1319\r\nblob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:5510 [warn] > Dropping 1 audio frame @ 15.520s due to 53.140136054422086 ms overlap.\r\n(anonymous) @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:5510\r\nremuxAudio @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:5094\r\nremux @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:4654\r\nappend @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:3022\r\npushDecrypted @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:1243\r\npush @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:1197\r\n(anonymous) @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:1319\r\nblob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:5510 [warn] > Dropping 1 audio frame @ 15.520s due to 29.920181405896113 ms overlap.\r\n(anonymous) @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:5510\r\nremuxAudio @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:5094\r\nremux @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:4654\r\nappend @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:3022\r\npushDecrypted @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:1243\r\npush @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:1197\r\n(anonymous) @ blob:https://video-dev.github.io/1c060fb9-af9e-4b61-9853-fe6831b97afd:1319\r\nlogger.js:39 [warn] > playback stalling in low buffer @15.354583\r\n(anonymous) @ logger.js:39\r\n_checkBuffer @ stream-controller.js:1458\r\ndoTick @ stream-controller.js:171\r\ntick @ stream-controller.js:124\r\n?src=https%3A%2F%2Fjahos.net%2Fhlsjstest%2Ftest.m3u8:529 Object {type: \"mediaError\", details: \"bufferStalledError\", fatal: false, buffer: 0.045417000000000485}\r\n(anonymous) @ ?src=https%3A%2F%2Fjahos.net%2Fhlsjstest%2Ftest.m3u8:529\r\nEventEmitter.emit @ events.js:96\r\ntrigger @ hls.js:93\r\n_checkBuffer @ stream-controller.js:1459\r\ndoTick @ stream-controller.js:171\r\ntick @ stream-controller.js:124\r\n?src=https%3A%2F%2Fjahos.net%2Fhlsjstest%2Ftest.m3u8:529 Object {type: \"mediaError\", details: \"bufferSeekOverHole\", fatal: false, hole: 0.26541699999999935}\r\n(anonymous) @ ?src=https%3A%2F%2Fjahos.net%2Fhlsjstest%2Ftest.m3u8:529\r\nEventEmitter.emit @ events.js:96\r\ntrigger @ hls.js:93\r\n_checkBuffer @ stream-controller.js:1475\r\ndoTick @ stream-controller.js:171\r\ntick @ stream-controller.js:124\r\nlogger.js:39 [warn] > cannot flush, sb updating in progress\r\n(anonymous) @ logger.js:39\r\nflushBuffer @ buffer-controller.js:552\r\ndoFlush @ buffer-controller.js:395\r\nonBufferFlushing @ buffer-controller.js:348\r\nonEventGeneric @ event-handler.js:65\r\nonEvent @ event-handler.js:53\r\nEventEmitter.emit @ events.js:84\r\ntrigger @ hls.js:93\r\nflushMainBuffer @ stream-controller.js:726\r\nnextLevelSwitch @ stream-controller.js:713\r\nset @ hls.js:229\r\nonclick @ ?src=https%3A%2F%2Fjahos.net%2Fhlsjstest%2Ftest.m3u8:1\r\nlogger.js:39 [warn] > frag loader destroy or aborted, disarm abandonRules\r\n(anonymous) @ logger.js:39\r\n_abandonRulesCheck @ abr-controller.js:70\r\nlogger.js:39 [warn] > abort previous fragment loader for type:main\r\n(anonymous) @ logger.js:39\r\nonFragLoading @ fragment-loader.js:37\r\nonEventGeneric @ event-handler.js:65\r\nonEvent @ event-handler.js:53\r\nEventEmitter.emit @ events.js:96\r\ntrigger @ hls.js:93\r\n_loadFragmentOrKey @ stream-controller.js:511\r\n_fetchPayloadOrEos @ stream-controller.js:317\r\n_doTickIdle @ stream-controller.js:269\r\ndoTick @ stream-controller.js:142\r\ntick @ stream-controller.js:124\r\nlogger.js:39 [warn] > playback stalling in high buffer @28.416897\r\n(anonymous) @ logger.js:39\r\n_checkBuffer @ stream-controller.js:1481\r\ndoTick @ stream-controller.js:171\r\ntick @ stream-controller.js:124\r\n?src=https%3A%2F%2Fjahos.net%2Fhlsjstest%2Ftest.m3u8:529 Object {type: \"mediaError\", details: \"bufferStalledError\", fatal: false, buffer: 226.97938299999998}\r\n(anonymous) @ ?src=https%3A%2F%2Fjahos.net%2Fhlsjstest%2Ftest.m3u8:529\r\nEventEmitter.emit @ events.js:96\r\ntrigger @ hls.js:93\r\n_checkBuffer @ stream-controller.js:1482\r\ndoTick @ stream-controller.js:171\r\ntick @ stream-controller.js:124\r\n?src=https%3A%2F%2Fjahos.net%2Fhlsjstest%2Ftest.m3u8:529 Object {type: \"mediaError\", details: \"bufferNudgeOnStall\", fatal: false}\r\n```\r\n\r\nThe segmentation for this stream may not be perfectly aligned. But I'm also pretty sure it would had correctly played using flashls. Unfortunately http://www.flashls.org/latest/examples/chromeless/ is broken and cannot prove it but have been using this segmentation scheme with flashls runtime for years.\r\nApple's latest mediastreamvalidator (Version 1.2(170524)) only complains about declared bitrates being lower than peak: `Error: Measured peak bitrate compared to master playlist declared value exceeds error tolerance`\r\n\r\nFull HLS package available at https://jahos.net/hlsjstest/test.tgz\r\n\r\nThank you!"},"comment":{"url":"https://api.github.com/repos/video-dev/hls.js/issues/comments/310579681","html_url":"https://github.com/video-dev/hls.js/issues/1201#issuecomment-310579681","issue_url":"https://api.github.com/repos/video-dev/hls.js/issues/1201","id":310579681,"user":{"login":"mangui","id":1798553,"avatar_url":"https://avatars3.githubusercontent.com/u/1798553?v=3","gravatar_id":"","url":"https://api.github.com/users/mangui","html_url":"https://github.com/mangui","followers_url":"https://api.github.com/users/mangui/followers","following_url":"https://api.github.com/users/mangui/following{/other_user}","gists_url":"https://api.github.com/users/mangui/gists{/gist_id}","starred_url":"https://api.github.com/users/mangui/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mangui/subscriptions","organizations_url":"https://api.github.com/users/mangui/orgs","repos_url":"https://api.github.com/users/mangui/repos","events_url":"https://api.github.com/users/mangui/events{/privacy}","received_events_url":"https://api.github.com/users/mangui/received_events","type":"User","site_admin":false},"created_at":"2017-06-23T06:02:04Z","updated_at":"2017-06-23T06:02:04Z","body":"this has been introduced by https://github.com/video-dev/hls.js/commit/347a01948ab2fe302c9905fa1d24c5767c30e3cc\r\nit should be fixed now"}}
{"actor":{"display_login":"mangui"}}