http-streaming icon indicating copy to clipboard operation
http-streaming copied to clipboard

Support For Low Latency HLS

Open SanatSharma opened this issue 5 years ago • 31 comments

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)

SanatSharma avatar Jan 21 '20 07:01 SanatSharma

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

welcome[bot] avatar Jan 21 '20 07:01 welcome[bot]

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[bot] avatar Mar 21 '20 08:03 stale[bot]

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.

gkatsev avatar Mar 24 '20 12:03 gkatsev

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[bot] avatar May 23 '20 21:05 stale[bot]

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

jitendracodehacker avatar Jun 29 '20 07:06 jitendracodehacker

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

gkatsev avatar Jun 30 '20 04:06 gkatsev

@jitendracodehacker we ended up using webrtc

SanatSharma avatar Jul 09 '20 22:07 SanatSharma

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

Mariare2 avatar Sep 04 '20 10:09 Mariare2

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.

gkatsev avatar Sep 04 '20 17:09 gkatsev

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

heennkkee avatar Sep 23 '20 13:09 heennkkee

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

New Status on this?

danielehrhardt avatar Jun 20 '21 21:06 danielehrhardt

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.

gkatsev avatar Jun 20 '21 23:06 gkatsev

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

n2quyet avatar Jun 22 '21 18:06 n2quyet

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

Phillipip avatar Jul 29 '21 17:07 Phillipip

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:

  • for https://videojs-http-streaming.netlify.app/?debug=false&autoplay=false&muted=false&minified=false&sync-workers=false&liveui=false&llhls=true&url=https%3A%2F%2Fll-hls-test.apple.com%2Fmaster.m3u8: say @video-archivist-bot save NAzx7j

video-archivist-bot avatar Jul 29 '21 17:07 video-archivist-bot

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.

gkatsev avatar Jul 29 '21 19:07 gkatsev

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.

Phillipip avatar Jul 30 '21 16:07 Phillipip

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.

gkatsev avatar Jul 30 '21 16:07 gkatsev

OK thank you!

Phillipip avatar Jul 30 '21 16:07 Phillipip

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

dovelive avatar Sep 28 '21 16:09 dovelive

@dovelive this is actually something that we're working on. We have a PR out that should improve our starting time https://github.com/videojs/http-streaming/pull/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!

gkatsev avatar Sep 28 '21 18:09 gkatsev

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

dovelive avatar Nov 29 '21 01:11 dovelive

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:

  • for https://ll-hls-test.apple.com/llhls1/multi.m3u8: say @video-archivist-bot save vjN8nA

video-archivist-bot avatar Nov 29 '21 01:11 video-archivist-bot

@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
});

gkatsev avatar Nov 29 '21 23:11 gkatsev

@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

dovelive avatar Nov 30 '21 00:11 dovelive

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:

  • for https://ll-hls-test.apple.com/llhls1/multi.m3u8: say @video-archivist-bot save ljaWZA

video-archivist-bot avatar Nov 30 '21 00:11 video-archivist-bot

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 avatar Nov 30 '21 02:11 gkatsev

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

gkatsev avatar Apr 18 '22 15:04 gkatsev

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

ChR-iSz avatar May 10 '22 09:05 ChR-iSz

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.

https://github.com/AirenSoft/OvenMediaEngine/issues/766

getroot avatar Jun 02 '22 07:06 getroot