Closed JeppeTh closed 2 years ago
👋 Thanks for opening your first issue here! 👋
If you're reporting a 🐞 bug, please make sure you include steps to reproduce it. We get a lot of issues on this repo, so please be patient and we will get back to you as soon as we can. To help make it easier for us to investigate your issue, please follow the contributing guidelines.
I had the same issue.. my guess was that it is related with the chromium version that tizen uses, there was an update related with pts/dts that was done for modern browsers
I had the same issue.. my guess was that it is related with the chromium version that tizen uses, there was an update related with pts/dts that was done for modern browsers
"had"? So how was it solved you mean, by some chromium/browser update? Can you find out which chromium version my tizen is using with some debug call? From this spec it seems at least 2.4 is running webkit and not chromium... https://developer.samsung.com/smarttv/develop/specifications/web-engine-specifications.html
I have a 2020 TV as well - don't remember if I got this issue there or not...
Analysed some more - it seems in 2.4.2 seekable.lenth equals 0 which means it will never end up in the resync part. In > 2.4.2 seekable.length is set to 1. But I guess the "beforeSeekableWindow" should check state or similar as well. At least it seem the seek to livePoint fails and we end up in a loop (i.e. currentTime is always 0)
This goes on forever: seekable.start(0): 8 seekable.end(0) : 28 Fell out of live window at time 0. Seeking to live point (seekable end) 28
seekable.start(0) : 8 seekable.end(0) : 28 Fell out of live window at time 0. Seeking to live point (seekable end) 28
Adding a currentTime > 0 to the beforeSeekableWindow_ to avoid the loop didn't really make it work. Instead it ends up in stalled where it seems to hang forever - no events.
From what I can gather, though, I haven't tried it on a real device and the emulator isn't working for me, all these issues with old TVs is the switch from DTS to PTS in chrome and other browsers that we followed to support them. Unfortunately, there likely isn't a good way for us to support those older browsers which use DTS while supporting the newer browsers which use PTS. Our recommendation would be to pin the version of VHS to to 2.4.
How can you notice that https://github.com/videojs/http-streaming/releases/tag/v2.5.0 changed anything related to DTS/PTS?
Is there anyway to confirm that this (=DTS vs PTS) is the issue I'm getting?
I tried once more with latest video.js and then actually any streams (not just live streams) fails to play - they end up in stalled instead of resync loop though....
The dummy way I used to check that the problem was related with pts/dts was: compiling http-streaming switching ptsTime -> dtsTime in segment.js
Ok thx, but don't know how to build it... But diffing http-streaming.js between 2.4.2 and 2.5.0 showed no differences in the ptsTime occurences. But there might of course be other diffs causing it to end up at ptsTime instead of dtsTime...
I changed ptsTime -> dtsTime and built manually, but still doesn't work. I don't see vhs-live-resync - but the reason for that could be that the live streams has changed something. I can't get any kind of stream working with 2.5 and pts->dts doesn't make a difference - all I get is stalled state.
Any other suggestions on differences between 2.5 and 2.4.2? I also noticed that already 2.4.2 uses ptsTime - changing back leads to the resync event again...
Also saw that vhs-utils had been stepped - tried to use the old version, lead to some compilation warning and still resync...
Tried b072c93 @ chore: update @videojs/vhs-utils to v3.0.0 (#1036) which doesn't work either. So I guess something in this one breaks...
Seems I kind of solved it - but can't understand from/why there's a problem from b072c93
imported/videojs-http-streaming.min.js (4) :syncPoint for [time: 0] chosen with strategy [Playlist]: [time:0, segmentIndex:0] imported/videojs-http-streaming.min.js (4) :checkBuffer_ returning https://lbs-aws-hls.tv4play.se/group01/bbr-event1/live.isml/live-audio_0=128000-video=2499968-427287073.ts imported/videojs-http-streaming.min.js (4) :READY -> WAITING imported/videojs-http-streaming.min.js (4) :syncPoint for [time: 0] chosen with strategy [Playlist]: [time:0, segmentIndex:0] imported/videojs-http-streaming.min.js (4) :syncPoint for [time: 0] chosen with strategy [Playlist]: [time:0, segmentIndex:0] imported/videojs-http-streaming.min.js (3) :TypeError: 'undefined' is not a function (evaluating 'ArrayBuffer.isView(t)')
If I change to it works.
var isTypedArray = function isTypedArray(obj) { try { return ArrayBuffer.isView(obj); } catch (e) { return false; } };
Hey! We've detected some video files in a comment on this issue. If you'd like to permanently archive these videos and tie them to this project, a maintainer of the project can reply to this issue with the following commands:
@video-archivist-bot save 9E33LE
Tizen's documentation seems to imply that TypedArrays on TVs weren't available until 3.0, but on mobile it was available on 2.4 (https://docs.tizen.org/application/web/guides/w3c/supplement/typedarray/#related-information). Are you running on TV or on Mobile?
Though, based on your comment, it seems like it worked with just gating the isTypedArray
check in VHS-utils. I wonder if they have TypedArrays, but it isn't complete? Like ArrayBuffer.isView()
is missing?
According to MDN, ArrayBuffer was added in Chrome 7, but ArrayBuffer.isView()
was added in Chrome 32.
Yes running TV 2.4.
Do you want me to try
var isTypedArray = function isTypedArray(obj) { return ArrayBuffer && ArrayBuffer.isView(obj);}
instead?;
@JeppeTh can you check if ArrayBuffer.isView
is available?
And whether stuff like Uint8Array
are available.
Yes sure - I'll check ArrayBuffer ArrayBuffer.isView Uint8Array
Thanks!
Seems ArrayBuffer and Uint8Array exists but ArrayBuffer.isView is undefined as you were guessing.
Awesome! Thanks for checking. Then, I'll work on getting releases out tomorrow, but should then be fixed with https://github.com/videojs/vhs-utils/pull/33 and #1258
Great - thx!
This is now published in Video.js 7.19.2!
Description
Since 2.5.0 I have issues with some HLS live streams. Hangs on repeated vhs-live-resync. Not sure how to gather more information...
Sources
Steps to reproduce
Results
Expected
On 2.4.2 playback starts
Error output
More than once per seconds I get Usage:vhs-live-resync State:0
Additional Information
videojs-http-streaming version
videojs-http-streaming 2.5.0
videojs version
Any video.js version.
Browsers
Platforms
Tizen 2.4
Other Plugins
Other JavaScript