For engineering leads and infrastructure architects at Indian OTT platforms, edtech companies, and media streaming businesses.
The Video Egress Problem
Video is the most data-intensive workload in consumer cloud infrastructure. A 90-minute film at 1080p in H.264 is approximately 4–6 GB. A 20-minute edtech lecture at 720p is approximately 500 MB–1 GB. Every view of every piece of content generates that much egress from your storage origin to the viewer's device.
For an edtech platform with 500,000 monthly active learners, each watching an average of 4 hours of 720p content per month, the monthly egress volume is roughly 200–250 TB. At AWS S3 Mumbai egress rates of Rs.6.75/GB, this is Rs.135–170 lakh per month in egress alone — before compute, database, or any other infrastructure cost.
At IBEE egress rates of Rs.2/GB, the same 200–250 TB costs Rs.40–50 lakh per month. The difference — Rs.90–120 lakh per month — is not a marginal optimisation. It is structural cost relief that changes the unit economics of the business.
But the egress cost problem cannot be solved by storage provider alone. The architecture of how video is stored and delivered determines how much egress actually hits the origin, and what fraction is served from CDN cache. Getting the architecture right matters as much as choosing the right provider.
The Correct Video Storage Architecture
The video storage stack has four layers, each with a distinct function:
Layer 1 — Raw Upload Storage
When a creator or content team uploads a video, the raw file lands in a private bucket. This bucket is never directly accessible to viewers. Its purpose is to hold the source file during the transcoding pipeline and to preserve the original for re-processing if encoding parameters change.
Store raw uploads at raw-uploads/{content-id}/{filename} with access limited to the transcoding service. Lifecycle policy: expire raw uploads 30 days after the processed versions are confirmed, or retain indefinitely if the originals are valuable for re-encoding.
Layer 2 — Transcoded Segment Storage
After ingestion, the video is transcoded into multiple quality levels and segmented for adaptive bitrate streaming. The output is an HLS (HTTP Live Streaming) or DASH (Dynamic Adaptive Streaming over HTTP) manifest plus thousands of short segment files — typically 4–10 seconds each.
This is the bucket that viewers actually consume from. Organised by content ID: processed/{content-id}/hls/ containing the master playlist (master.m3u8), quality-level playlists (720p.m3u8, 480p.m3u8, 360p.m3u8), and the segment files for each quality level (720p_000.ts, 720p_001.ts, etc.).
Layer 3 — Thumbnail and Preview Storage
Thumbnails, preview images, animated GIF previews, and chapter thumbnail sprites. Typically 10–50 images per piece of content. Stored at thumbnails/{content-id}/ and served directly to the UI layer. High cache hit rate on thumbnails makes CDN caching very effective here.
Layer 4 — Subtitle and Metadata Storage
VTT subtitle files, closed caption files, multiple language tracks, chapter markers. Stored at subtitles/{content-id}/{language}/ and served alongside the video manifests.
HLS Segmentation and Adaptive Bitrate
HLS is the dominant video streaming protocol for Indian audiences, supported natively by iOS, Android, most browsers, and all smart TV platforms. The principle is simple: the video is divided into short segments, and the player automatically selects the quality level appropriate for the viewer's current network conditions.
A well-configured HLS setup for an Indian audience typically includes four quality levels. The highest quality at 1080p or 720p targets users on broadband and strong WiFi. A 480p mid-tier serves mobile users on good 4G. A 360p lower-tier serves Tier 2 and Tier 3 city users where 4G quality is variable. A 240p or audio-only tier serves users on 2G/3G or very constrained connections.
The manifest file (master.m3u8) lists all available quality levels with their bandwidth requirements. The player reads the manifest, measures current download speed, and selects the appropriate quality level. When conditions change — the user moves from WiFi to mobile data — the player switches quality levels seamlessly by requesting the next segment at a different resolution.
The transcoding pipeline that produces these quality levels is typically run once when content is ingested. FFmpeg is the standard open-source tool:
ffmpeg -i input.mp4 \
-filter_complex "[v]split=4[v1][v2][v3][v4]" \
-map "[v1]" -vf scale=1280:720 -b:v 2800k -map a:0 -b:a 128k \
-hls_time 6 -hls_playlist_type vod -hls_segment_filename "720p_%03d.ts" 720p.m3u8 \
-map "[v2]" -vf scale=854:480 -b:v 1400k -map a:0 -b:a 96k \
-hls_time 6 -hls_playlist_type vod -hls_segment_filename "480p_%03d.ts" 480p.m3u8 \
-map "[v3]" -vf scale=640:360 -b:v 700k -map a:0 -b:a 64k \
-hls_time 6 -hls_playlist_type vod -hls_segment_filename "360p_%03d.ts" 360p.m3u8 \
-map "[v4]" -vf scale=426:240 -b:v 300k -map a:0 -b:a 48k \
-hls_time 6 -hls_playlist_type vod -hls_segment_filename "240p_%03d.ts" 240p.m3u8Upload the resulting .m3u8 playlists and .ts segment files to the processed bucket on IBEE, preserving the directory structure.
CDN Integration for Video Delivery
Object storage is the origin. A CDN is mandatory for video delivery at scale.
Without a CDN, every segment request from every viewer hits the origin bucket directly. Each viewer watching the same video at the same time generates independent origin requests for the same segment files. For 10,000 concurrent viewers of a live event, every 6-second segment generates 10,000 GET requests to the origin.
With a CDN, the first viewer's request for a segment fetches it from the origin and caches it at the CDN edge. Every subsequent viewer's request for the same segment is served from cache — no origin hit. For popular content, the CDN cache hit rate approaches 99%, meaning the origin sees only one request per segment per CDN edge node rather than one per viewer.
Configure the CDN origin to point at IBEE's endpoint for the processed bucket. Set appropriate cache TTLs: HLS manifests should have short TTLs (30–60 seconds for live streams, 1–24 hours for VOD) because they reference the current segment list. Segment files should have long TTLs (7 days or more) because they are immutable once written — a 720p_042.ts file never changes.
With CDN caching, the effective origin egress for popular content is a fraction of total viewer egress. IBEE's Rs.2/GB origin egress rate applies to the CDN origin-fetch traffic, not to the full viewer traffic volume.
Token-Based Access Control for Premium Content
For paid content, video segments must not be publicly accessible. A viewer who obtains an HLS manifest URL should not be able to share it to let non-subscribers watch.
The standard approach is time-limited signed URLs. The video player requests a signed manifest URL from your API. The API verifies the viewer's subscription status, generates a presigned URL for the manifest that expires in 4–8 hours, and returns it to the player. The player uses the signed URL to fetch the manifest, which references signed URLs for each quality-level playlist, which in turn reference signed URLs for segment files.
IBEE's full S3 API compatibility includes presigned URL generation. Any S3 SDK generates presigned GET URLs valid for a specified duration.
For live streaming with DRM requirements, the architecture extends to include a DRM key server (Widevine, FairPlay, PlayReady) that issues decryption keys only to authenticated sessions. The encrypted segments on IBEE are useless without the keys, providing content protection even if segment URLs are shared.
Egress Cost Modelling for Video Platforms
Model your monthly egress cost before choosing a provider. The calculation:
Monthly active users × average watch time per user (hours) × average bitrate (Mbps) × 3600 seconds/hour ÷ 8 bits/byte ÷ 1,073,741,824 bytes/GB = monthly egress GB.
For 200,000 MAU watching 3 hours/month at an average adaptive bitrate of 1.5 Mbps: 200,000 × 3 × 1.5 × 3600 ÷ 8 ÷ 1,073,741,824 = approximately 1,207 GB/month from the CDN perspective. With 95% CDN cache hit rate, origin egress is approximately 60 GB/month. At IBEE's Rs.2/GB, origin egress cost is Rs.120/month — trivially small. CDN egress charges depend on CDN provider.
The dominant cost variable for video platforms is CDN egress, not origin egress — which is why the storage provider's egress rate, while important, interacts with CDN design rather than replacing it.
