TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Apple’s Low Latency HLS differs from the community-developed solution

178 pointsby UkiahSmithalmost 6 years ago

10 comments

jhallenworldalmost 6 years ago
I&#x27;ve been recently tasked to find a live video solution for an industrial device. In my case, I want to display video from a camera to a local LCD and simultaneously allow it to be live streamed over the web. By web, I mean that the most likely location of the client is on the same LAN, but this is not guaranteed. I figured this has to be a completely solved problem by now.<p>Anyway, so I&#x27;ve tried many of the recent protocols. I was really hoping that HLS would work, because it&#x27;s so simple. For example, I can use the gstreamer &quot;hlssink&quot; to generate the files, and basically deliver video with a one-line shell script and any webserver. But the 7 second best case latency is unacceptable. I really want 1 second or better.<p>I looked at MPEG-DASH: it seems equivalent to HLS. Why would I use it when all of the MPEG-DASH examples fall back on HLS?<p>I looked at WebRTC, but I&#x27;m too nervous the build a product around the few sample client&#x2F;server code bases I can find on github. They are not fully baked, and then I&#x27;m really depending on a non-standard solution.<p>I looked a Flash: but of course it&#x27;s not desirable to use it these days.<p>So the solution that works for me happens to be the oldest: Motion JPEG, where I have to give up on using a good video compression (MPEG). I get below 1 second latency, and no coding (use ffmpeg + ffserver). Luckily Internet Explorer is dead enough that I don&#x27;t have to worry about its non-support of it. It works everywhere else, including Microsoft-Edge. MJPEG is not great in that the latency can be higher if the client can&#x27;t keep up. I think WebRTC is likely better here.<p>Conclusion: here we are in 2019 and the best low latency video delivery protocol is from the mid-90s. It&#x27;s nuts. I&#x27;m open to suggestions in case I&#x27;ve missed anything.
评论 #20380049 未加载
评论 #20379656 未加载
评论 #20379896 未加载
评论 #20379495 未加载
评论 #20379890 未加载
评论 #20381195 未加载
评论 #20379362 未加载
评论 #20379519 未加载
评论 #20379559 未加载
评论 #20382724 未加载
评论 #20387835 未加载
评论 #20379406 未加载
评论 #20379131 未加载
评论 #20379676 未加载
评论 #20379550 未加载
评论 #20379253 未加载
评论 #20380550 未加载
评论 #20380072 未加载
chimealmost 6 years ago
The major criticism the author has is the requirement for HTTP2 push for ALHLS, which many CDNs don&#x27;t support. While I agree it is a valid criticism, I am glad Apple is forcing the CDNs to support push. Without the 800lb gorilla pushing everyone to upgrade, we would still be using pens on touchscreens.<p>I am not a fan when Apple obsoletes features that people love and use. But I always support when Apple forces everyone to upgrade because friction from existing providers is what keeps things slow and old. Once Apple requires X, everyone just sighs and updates their code, and 12mo later, we are better off for it.<p>That being said, I agree with author&#x27;s disappointment that Apple mostly ignored LHLS instead of building upon it. Chunked encoding does sound better.
评论 #20378943 未加载
评论 #20379010 未加载
评论 #20382083 未加载
jedbergalmost 6 years ago
It&#x27;s ironic that &quot;live streaming&quot; has gotten worse since it was invented in the 1930&#x27;s. Up until TV went digital, the delay on analog TV was just the speed of light transmission time plus a little bit for broadcasting equipment. It was so small it was imperceptible. If you had a portable TV at the live event, you just heard a slight echo.<p>Now the best we can do is over 1 second, and closer to 3 seconds for something like satellite TV, where everything is in control of the broadcaster from end to end.<p>I suppose this is the tradeoff we make for using more generalized equipment that has much broader worldwide access than analog TV.
评论 #20380420 未加载
评论 #20379314 未加载
评论 #20381778 未加载
评论 #20379266 未加载
评论 #20379276 未加载
评论 #20384157 未加载
评论 #20380754 未加载
floatingatollalmost 6 years ago
This title is unnecessarily inflammatory with intent to gain our sympathy to the position presented.<p>The technical writeup of this post are spot-on, though. I prefer less drama with my bias but I’m very glad I read this.
评论 #20379099 未加载
评论 #20379644 未加载
nvahalikalmost 6 years ago
Looks like as far back as 2014 research has pointed to some big gains using HTTP&#x2F;2 push: <a href="https:&#x2F;&#x2F;dl.acm.org&#x2F;citation.cfm?id=2578277" rel="nofollow">https:&#x2F;&#x2F;dl.acm.org&#x2F;citation.cfm?id=2578277</a>
buraktamturkalmost 6 years ago
&gt; A Partial Segment must be completely available for download at the full speed of the link to the client at the time it is added to the playlist.<p>So with this, you can not have a manifest file that point to next future chunks (e.g. for up to next 24 hours of live stream) and delay proccessing of http request until the chunk became available. Like HTTP Long Polling used for chunks.<p>&gt; On the surface, LHLS maintains the traditional HLS paradigm, polling for playlist updates, and then grabbing segments, however, because of the ability to stream a segment back as it&#x27;s being encoded, you actually don’t have to reload the playlist that often, while in ALHLS, you’ll still be polling the playlist many times a second looking for new parts to be available, even if they’re then pushed to you off the back of the manifest request.<p>Which could be avoided if Apple didn&#x27;t enforced the availibilty of download &quot;at the full speed&quot; once it appeared in the manifest. (long polling of chunks)<p>LHLS doesn&#x27;t have this issue as the manifest file itself is streamed with chunked responses hence it makes sense. (streaming manifest file)<p>&gt; For the time being at least, you’ll have to get your application (and thus your low latency implementation) tested by Apple to get into the app store, signaled by using a special identifier in your application’s manifest.<p>And this makes me to think about the implementability of the 1st and 2nd point on ALHLS. Maybe the current &quot;implementation&quot; is compatible but not with the specs itself.
评论 #20379504 未加载
kevleyskialmost 6 years ago
Apple low latency test stream I set up if useful (uses CDN) <a href="https:&#x2F;&#x2F;alhls-switchmedia.global.ssl.fastly.net&#x2F;lhls&#x2F;master.m3u8" rel="nofollow">https:&#x2F;&#x2F;alhls-switchmedia.global.ssl.fastly.net&#x2F;lhls&#x2F;master....</a>
sparker72678almost 6 years ago
Any chance some of this is related to patent avoidance?
评论 #20379172 未加载
ec109685almost 6 years ago
&gt; measuring the performance of a blocking playlist fetch along with a segment load doesn’t give you an accurate measurement, and you can’t use your playlist download performance as a proxy.<p>I don’t see why this would be the case. If you measure from the time the last bit of the playlist is returned to the last bit of the video segment is pushed to the client, you’ll be able to estimate bandwidth accurately.
评论 #20379472 未加载
shmerlalmost 6 years ago
As usual, Apple pushes NIH, instead of supporting DASH which is the common standard. And they also tried to sabotage adoption of the later by refusing to support MSE on the client side that&#x27;s needed for handling DASH.
评论 #20379028 未加载