Skip to content
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

Support For Low Latency HLS #721

Open
SanatSharma opened this issue Jan 21, 2020 · 31 comments
Open

Support For Low Latency HLS #721

SanatSharma opened this issue Jan 21, 2020 · 31 comments

Comments

@SanatSharma
Copy link

SanatSharma commented Jan 21, 2020

Please do not delete the template, by filling out the required information we can investigate your issue more quickly.

Description

Apple recently released LL-HLS that allows super low-latency HLS. I was wondering when support for LL-HLS will be provided. They claim to have sub 2-sec latency, which would be great feature to have with (non-WebRTC) live streaming.

(https://developer.apple.com/documentation/http_live_streaming/protocol_extension_for_low-latency_hls_preliminary_specification)

@welcome
Copy link

welcome bot commented Jan 21, 2020

👋 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.

@stale
Copy link

stale bot commented Mar 21, 2020

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the outdated label Mar 21, 2020
@gkatsev
Copy link
Member

gkatsev commented Mar 24, 2020

Forgot to answer. We are aware of all the low latency HLS things but unfortunately we don't have the bandwidth (if you will) right now to work on it.

@stale stale bot removed the outdated label Mar 24, 2020
@stale
Copy link

stale bot commented May 23, 2020

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the outdated label May 23, 2020
@stale stale bot closed this as completed May 30, 2020
@jitendracodehacker
Copy link

@SanatSharma Did you get any breakthrough for this LHLS support for Video JS ? or what is your workaround?

@gkatsev gkatsev reopened this Jun 30, 2020
@stale stale bot removed the outdated label Jun 30, 2020
@gkatsev
Copy link
Member

gkatsev commented Jun 30, 2020

This is something we are likely going to be working in Q3.

@SanatSharma
Copy link
Author

@jitendracodehacker we ended up using webrtc

@Mariare2
Copy link

Mariare2 commented Sep 4, 2020

@gkatsev Have you been able to put any effort in it? Is there a planned release date on the LL HLS feature?

@gkatsev
Copy link
Member

gkatsev commented Sep 4, 2020

Unfortunately, we haven't been able to get started on this. We'll definitely make lots of noise when we get started on low latency streaming.

@heennkkee
Copy link

@SanatSharma Did you run WebRTC via video.js or did you end up with another player?

@danielehrhardt
Copy link

@SanatSharma Did you run WebRTC via video.js or did you end up with another player?

New Status on this?

@gkatsev
Copy link
Member

gkatsev commented Jun 20, 2021

FYI, Video.js 7.13 has preliminary support for LHLS. If you try it out, please let us know how it is. Requires setting experimentalLLHLS on the player.

@n2quyet
Copy link

n2quyet commented Jun 22, 2021

FYI, Video.js 7.13 has preliminary support for LHLS. If you try it out, please let us know how it is. Requires setting experimentalLLHLS on the player.

I tried but it doesn't seem to work. the delay is about 20s, I also tried on theoplayer the delay is about 4s

@Phillipip
Copy link

Is there any working example? Unfortunately, it doesn't work for me in the demo player.

@video-archivist-bot
Copy link

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:

@gkatsev
Copy link
Member

gkatsev commented Jul 29, 2021

Can you elaborate on what you mean by "doesn't work"? It's still early and experimental. Definitely not ready for production use. I'm sure there's more work to do for it.

@Phillipip
Copy link

Phillipip commented Jul 30, 2021

Can you elaborate on what you mean by "doesn't work"?

I do not get LHLS, only HLS.

It's still early and experimental.

Under which example URL can we successfully test this experiment?

Definitely not ready for production use.

What is already working and what is not yet working? The delay is about 20s. LHLS should be less than 4s.

@gkatsev
Copy link
Member

gkatsev commented Jul 30, 2021

It seems to me that parts are getting download when available.
Theoretically, it's all implemented, but it hasn't really gotten any testing and there's likely still bugs. We'll definitely make a big announcement when we think it's ready for people to use.

@Phillipip
Copy link

OK thank you!

@dovelive
Copy link

@gkatsev
Hi.
I have test the Experimental LL HLS feature of VHS at VHS test site. https://videojs-http-streaming.netlify.app/
However compare to the THEOplayer(https://www.theoplayer.com/ll-hls-test-page), the Experimental LL HLS feature of VHS has some delay(about 5-8 seconds).
I was trying to change some config variables(e.g. GOAL_BUFFER_LENGTH, MAX_GOAL_BUFFER_LENGTH, etc...) in VHS, but there was no improvement.
So I realized that the delay between THEOPlayer and VHS on LL HLS Streaming Playing couldn't be adjusted at this time.
Would you like to make some progressive on decreasing the delay of LL HLS in VHS in the future.
Regards.

@gkatsev
Copy link
Member

gkatsev commented Sep 28, 2021

@dovelive this is actually something that we're working on. We have a PR out that should improve our starting time #1201 (feel free to try it out in the netlify link). In my testing, once we've started, we do a decent job and staying around the same time.
Once that PR is in, we can probably call LLHLS in beta. We do plan to eventually have some knobs that can be turned for LLHLS but it isn't available at this point. The current goal buffer config stuff don't really apply to LLHLS.
Also, thanks for trying out!

@dovelive
Copy link

@gkatsev
Hi.
I have tested the http-streaming 2.12.0 on http-streaming test page.(https://videojs-http-streaming.netlify.app/)
Since the logic related to the playback of the LLHLS stream was completed than before, it was confirmed that the videojs player played the LLHLS streaming almost the same time as the THEOPlayer.(https://www.theoplayer.com/ll-hls-test-page)

However, I have one question.
In the THEOPlayer, user can move to any time by clicking any position in the Time Seekbar for the llhls stream.
However, for the videojs, it can't.
In other words, for the LLHLS stream, user cannot move to the desired time by clicking the on the SeekBar.
(I have tested it using https://ll-hls-test.apple.com/llhls1/multi.m3u8)

So would you like to check and implement this feature on the videojs too?

Regards.

@video-archivist-bot
Copy link

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:

@gkatsev
Copy link
Member

gkatsev commented Nov 29, 2021

@dovelive great to hear! For being able to seek in live streams, you need to enable liveui in Video.js. There's an option for it on https://videojs-http-streaming.netlify.app/ in the options tab panel. Worth noting that by default won't show it if the live window of the stream is less than 20 seconds in length because seeking in those streams is more likely to cause issues.

videojs('video', {
  liveui: true
});

@dovelive
Copy link

@gkatsev
Thank you for contacting.
Of course, I have tested LLHLS feature with liveui option checked.
But SeekToLive control not working for this stream. - https://ll-hls-test.apple.com/llhls1/multi.m3u8
And the action of clicking the on latest point of the seekbar does not work either.
Meanwhile THEOPlayer works fine for that stream too.(I mean SeekToLive button)

I am not sure there is a problem on that stream itself, however I want you to check it by yourself.

I hope my opinion would help for improving the performance of videojs player.
Regards.

image

@video-archivist-bot
Copy link

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:

@gkatsev
Copy link
Member

gkatsev commented Nov 30, 2021

This new apple stream is so far the only known issue for us. We haven't really had a chance to investigate further why this particular stream isn't working well. Other LLHLS streams that we tested work fine right now.

@gkatsev
Copy link
Member

gkatsev commented Apr 18, 2022

For those that haven't seen yet, there is LLHLS support now.
It is flagged behind experimentalLLHLS. Ideally, you should also enable experimentalBufferBasedABR.

@ChR-iSz
Copy link

ChR-iSz commented May 10, 2022

Do you habe more informations about experimentalBufferBasedABR ? Can't find any documentation for this...

@getroot
Copy link

getroot commented Jun 2, 2022

image

The LLHLS feature of videojs seems to work well with OvenMediaEngine as well. But the player doesn't seem to use #EXT-X-PRELOAD-HINT. Is this a server and player compatibility issue? Or is this not implemented in the player yet? (THEO player loads #EXT-X-PRELOAD-HINT)

I tested this with the URL below.

https://videojs-http-streaming.netlify.app/?debug=false&autoplay=false&muted=false&fluid=false&minified=false&sync-workers=false&liveui=true&llhls=true&url=https%3A%2F%2Fome-dev.airensoft.com%3A13334 %2Fapp%2Fstream%2Fllhls.m3u8&type=application%2Fx-mpegURL&keysystems=&buffer-water=true&exact-manifest-timings=true&pixel-diff-selector=true&network-info=false&dts=true-offset=false&override-native=true&preload=

For information about OvenMediaEngine's LLHLS, please refer to the URL below.

AirenSoft/OvenMediaEngine#766

@ghost
Copy link

ghost commented Mar 11, 2023

Isn't this implemented in vhs now?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests