<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hls on Kuldeep Pisda</title><link>https://kdpisda.in/tag/hls/</link><description>Recent content in Hls on Kuldeep Pisda</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 04 Apr 2026 10:00:00 +0530</lastBuildDate><atom:link href="https://kdpisda.in/tag/hls/index.xml" rel="self" type="application/rss+xml"/><item><title>150 Videos a Day Buried Our CPU Transcoders, So I Stopped Encoding In-House</title><link>https://kdpisda.in/cpu-transcoding-too-slow-aws-mediaconvert/</link><pubDate>Sat, 04 Apr 2026 10:00:00 +0530</pubDate><guid>https://kdpisda.in/cpu-transcoding-too-slow-aws-mediaconvert/</guid><description>&lt;p&gt;In the last chapter we owned the whole video pipeline: content uploaded to an S3 ingest bucket, a Celery worker on ECS ran ffmpeg to build the adaptive-bitrate ladder, and CloudFront served the HLS chunks. It worked beautifully the day I demoed it with three test videos. Then the content team found the bulk uploader.&lt;/p&gt;
&lt;p&gt;I opened Grafana on a Tuesday and the &lt;code&gt;transcode_video&lt;/code&gt; queue depth was a straight diagonal line, climbing since nine that morning. Not a spike that drains — a line that only went up. The team had discovered they could select a course&amp;rsquo;s entire back-catalogue and push it in one sitting, and they were doing exactly what a good content team should do: 150-plus videos before lunch. My CPU workers were going to be chewing on that pile until Friday.&lt;/p&gt;</description></item><item><title>A 20-Minute Video Weighed 1.2 GB, So We Built Our Own Streaming</title><link>https://kdpisda.in/in-house-video-streaming-ffmpeg-s3-cloudfront-ecs/</link><pubDate>Sat, 28 Mar 2026 10:00:00 +0530</pubDate><guid>https://kdpisda.in/in-house-video-streaming-ffmpeg-s3-cloudfront-ecs/</guid><description>&lt;p&gt;The last stretch of work made the platform quick — a heavy course page that used to take thirty seconds now answered in about two hundred milliseconds, and the API felt solid enough to build real features on. So we finally turned to the thing we had been deliberately ignoring since the very early days: video. Back when we were still proving people would pay, I had left a landmine in the product on purpose. A single 20-minute course lesson was a 1.2 GB HD file, and we served that same giant file to everyone.&lt;/p&gt;</description></item></channel></rss>