-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
CMAF Low Latency Chunks #1525
Comments
We will look into this feature. We will add it if we can, but we'll need to investigate how it would work with MediaSource. |
thanks for the reply it may be interesting to check how dashjs made their implementation when the subject come in the roadmap one thread discussing low latency specifics : |
Is it possible to priorities CMAF support? CMAF is what the OTT industry asking for now. At NAB-Show (April 6 - 11, 2019 | Las Vegas) we have to show CMAF with Dashif instead of Shaka and it's sad. |
The live stream simulator has available test vectors which expose low latency chunking. This stream has 8s segments with 1s chunks: https://vm2.dashif.org/livesim-chunked/chunkdur_1/ato_7/testpic4_8s/Manifest300.mpd It is possible to set the ato and chunkdur to floating point numbers like chunkdur_0.5/ato_7.5/ in the URL. The original content is 30Hz, so setting ato to 7.9 and chunkdur to 0.1 is also possible. |
Hi, everyone. Just to clarify: CMAF is already supported. Low-latency CMAF will be added later this year. |
It was Low-latency CMAF we asked for. |
@PatrikCarlander, yes, but I was clarifying based on your first comment "Is it possible to priorities CMAF support". But I think we are all on the same page now. |
Any update about Low Latency CMAF ? |
We haven't begun work on this yet. We anticipate working on this in Q3 2019. |
+1 for low-latency DASH |
Q3 2019 is ending soon, is this feature postponed? LL is a highly requested feature from our customers. We need this in Shaka to get LL in chromecast too. |
Hi @PatrikCarlander |
This can be a good input to define the scope. |
Hello @PatrikCarlander , I saw that both Community Hls spec and Apple Hls spec are mentioned in the document. Which one are you looking forward to use? |
@michellezhuogg For a start ULL-DASH, after that we will see if Apple LLHLS will replace Community LHLS. |
waiting for hls cmaf low-latency :) |
I am confused about cmaf. Is Cmaf just a mpeg-dash manifest with Availabilitytimeoffset added to it? I want to use it instead of mpeg-dash. Also, how do you make a CMAF manifest with ffmpeg with or without shaka player? I have looked everywhere and can't find an example of how to do so. |
low latency CMAF, in order to take advantage of it, does it just involve adding Availabilitytimeoffset to your dash manifest in the BASEURL with segmented video X number of seconds and a player that supports low latency, for example LowLatencyEnabled? Could I please get an explanation? |
The preload hints don't support the |
BYTERANGE-START is the byte offset of the first byte of a preload hinted resource. This attribute is optional, and defaults to 0. Example: '#EXT-X-PART:DURATION=1.02,URI="fs271.mp4",BYTERANGE=18000@43000' '#EXT-X-PRELOAD-HINT:TYPE=PART,URI="fs271.mp4",BYTERANGE-START=61000' Issue #1525 Change-Id: Ib3f7feb6bd5d3fd09b89962c067029a448d020e7
@kanongil, thanks for pointing that out! It has now been fixed in the master branch. |
It is great that shaka player support ll-hls! |
Our internal streaming model requires us to update all playlists, rather than just the media playlist for the currently-selected streams. So we decided that blocking playlist updates might not make sense for Shaka Player at this time. @michellezhuogg, let's discuss this Tuesday and double-check our assumptions to make sure we made the right call on that. |
@michellezhuogg and I are not sure if we made the right decision about blocking playlist updates. We originally decided not to do them because we're updating all media playlists. It might work to block on a media playlist update, even if we are going to update all playlists serially. If all are going to be blocked on the same segment number, for example, the first one would block, and subsequent playlist requests would not, since that segment would already be ready in all the others by the time the first was ready. At least, that's what we're thinking now. I'm also wondering if there are other configs that would need to be changed to accommodate this. Manifest request timeout comes to mind, but we could also override that per-request in the HLS parser without changing the configuration per se. Any thoughts on this? Anyone interested to experiment with the HLS parser to see what breaks if we block? |
…t number in streamInfo)
For example Apple's LL-HLS CMAF stream have different duration and MSN for audio and video. Blocking one media playlist still works if playback latency large enough to tolerate the difference, but probably not a prefect design. I tested implement blocking playlist reload via saving next MSN and next part number in streamInfo and marking preload in segmentReference. It seems works, but there is some other issue related to lint/compile :P By the way, how about #1936: Lazy-load HLS media playlists on adaptation ?
Lazy-load is not mandatory and not directly related to this issue, but LL-HLS better have lazy-load in practice. Since the partial segment of LL-HLS is short, update frequency of LL-HLS is much higher than standard HLS. For example, if playing a LL-HLS stream with 2 audio 5 video and 1s partial duration, updating all playlist requires downloading. >7 media playlist per second, while only 2 selected playlists are necessary. |
The problem with lazy-loading is Shaka Player's current architecture. Manifest parsers don't know what the currently-selected stream is or when it changes, so there is no good way to know which playlist needs to be updated. We designed manifest parsing to be completely decoupled from streaming, but it seems that in this case, they are too decoupled. |
With "lowLatencyMode" enabled, "rebufferingGoal" is set to 0.001, and inaccurateManifestTolerance is set to 0 by default. However, in some cases longer rebufferingGoal helps to avoid new rebuffering. Besides "lowLatencyMode", this code change adds the "autoLowLatencyMode" config. When "lowLatencyMode" config is disabled and "autoLowLatencyMode" config is enabled, and the manifest provides low latency features, we automatically activate the lowLatencyMode. If "lowLatencyMode" is enabled, "autoLowLatencyMode" has no effect. Issue #1525
I think it would be nice to add a table in the readme of the features needed for low latency to work. For example in DASH it is necessary the ReadableStream API |
Hi shaka team! |
@htleeab wrote:
Based primarily on this, and on our current architecture (manifest parsers completely independent of streaming), @michellezhuogg and I have decided not to add blocking playlist updates for now. If a feature meant to reduce latency on updates ends up adding latency because of how it interacts with our existing architecture, it's best not to do it for now. @Mkozlov1 wrote:
Well, we certainly planned it that way, but has anyone else noticed how 2020 has gone so far? We're doing what we can with very limited resources (team members temporarily allocated to other internal priorities). We intend to wrap up the features (basically done now) and close enough serious bugs to feel confident about the stability of the master branch before we release v3.1. We hope that can be accomplished before the end of the year, but if it takes until January 15th to make v3.1 usable, we'd rather have the release work as intended than have it technically come out before midnight on Dec 31. With that, I think our initial LL feature work can be called complete. We're open to discussions of blocking playlist updates and other features with accompanying architecture changes at a later date. Thanks! |
Hello everyone, The Low Latency HLS and Low Latency Dash features are ready for testing on our Nightly build demo: |
While it seems to be somewhat workable with LL-HLS on a good connection, the ABR experience quickly breaks down. There are several minor/major issues, but I won't list them, as it seems that this has hardly been tested. Note that using the Chrome network throttling is not representative of real-world issues, since it always triggers a I will mention one non-ABR problem: Playback does not respect the Anyway, I probably won't be using this as long as it doesn't support blocking playlist reloads. |
Thank you for your feedback! Would you please share some sample low-latency manifests with us, so that we can test and triage the minor/major issues that you mentioned? You can send them to [email protected] if they're private. |
Closing the issue due to inactivity. If anyone has further questions or comments, please open another new issue. Thank you! |
We should only request playlist delta updates when the lowLatencyMode is enabled, and when the server supports the feature. We can check if the playlist has a "CAN-SKIP-UNTIL" tag to know if the server supports that. Issue #1525 Change-Id: I304a008aeb3a9e019f27304ba836d31538c94fbf
Hello,
i wanted to know if it is planned to support CMAF Low latency chunks ?
I saw reference to that in the following ticket comparing dash.js and shaka, but no status for shaka
#1351
thanks for the work by the way
The text was updated successfully, but these errors were encountered: