This message was deleted.
# helpdesk
s
This message was deleted.
m
You want each user to intentionally have a variable amount of delay? If you don’t mind me asking, what’s the product idea?
r
I'll dm you!
👍 1
m
@fancy-wire-61616 if Advay wanted to build a product where the latency of media to each participant was configurable, any pointers to where he might start trying to accomplish this? I told Advay that LK is probably not the best starting point for this, but you know 10x more than I do about this stuff.
f
You are right @magnificent-art-43333. Delaying audio itself is not supported in LK, let alone delaying by varying amounts. We will support play out delay extension, but two things there 1. It works only for video 2. We are not planning per participant level setting for that at least initially. Feels like a proxy layer in between clients and LK server would be one way. But, coordination could be tricky, i. e. what protocol do clients talk to the proxy and what protocol does that proxy talk to LK. Another possibility might be buffering on client side. I am not totally sure if this is possible, but with insertable streams, you can potentially get the media frames, buffer it and output from the insertable stream after intended delay.
r
Thanks guys!
f
@chilly-animal-65189 @able-gigabyte-21598 Is LK egress (or maybe HLS more generally) an option for Advay? Is it possible to control the latency for each receiver?
c
Egress will produce event playlist with ntp timestamps that could be used for this. The specifics of how well this would work would depend largely on the player you use.
Also, event playlists can become quite large for long events, and you need to refresh it for each segment.
r
Thanks! Some follow ups: • What exactly do you mean by refresh for each segment? • What is the min latency (order of magnitude) that the act of taking the egress results and using a player would introduce?
c
Total latency is going to be highly dependent on the distribution infrastructure you use for the HLS stream and if the trade off you make when choosing egress settings. It’s going to be between 10 and 30s most likely.
The way hls work is that it needs to reload a manifest for every segment produced. An event playlist will contain all the segments since the beginning of the broadcast. Each segment adds about 100-200 bytes to the manifest, and segments are typically 4 to 15s.
r
Got it, thanks!
m
It sounds like the Egress route probably wouldn’t work for @rough-hydrogen-67453’s needs. Advay, I think you want potentially variable configurable, but also predictable latency for each participant?
r
Yup, that's correct
Didn't realize the latency induced this way wouldn't be predictable, thanks for flagging!
c
Latency would be predictable to the limit realistically achievable by you distribution setup
And also depending on the player behavior.
AVPlayer has a seekToDate method. Other players probably as well.
r
What do you mean by 'realistically achievable by the distribution setup'?
c
Egress will upload segments and playlists to some blob store. The player will need to fetch these over http. Latency will partly depend on how these keys in the blobstore are distributed.
In most cases, that involves a cdn
But the cdn will increase the latency. Typically 1 segment length.
Can be less, depending on the cache ttl on the source. But that increases cost fetching data from the origin.
r
Got it, thanks!
m
I think ultimately, the Egress route is not practically predictable unless you enforce your latency requirements on the player side. When it comes to distribution setup, variables include (but not limited to): • where the publisher is • where the origin server is • where the CDN file servers are • where the subscribers are • how fast can subscribers pull down content
👍 1
r
Oh interesting, I see, thanks!
Switching topics a little, if I want to look into a client side solution using insertable streams, does anyone know whether I can use insertable streams on ios/flutter?
m
Yes, you can! We use insertable streams to implement end-to-end encryption. cc @freezing-lifeguard-43174 who can probably say more about the right place to access insertable streams from iOS/Flutter.
❤️ 1