Bird
Raised Fist0
HLDsystem_design~25 mins

Transcoding and adaptive bitrate in HLD - System Design Exercise

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Design: Video Streaming with Transcoding and Adaptive Bitrate
Design covers video ingestion, transcoding, storage, and adaptive bitrate delivery. Out of scope: DRM, user authentication, content recommendation.
Functional Requirements
FR1: Ingest live or on-demand video content from users or content providers
FR2: Transcode videos into multiple quality levels (bitrates and resolutions)
FR3: Store transcoded videos for on-demand playback
FR4: Deliver video streams to users with adaptive bitrate streaming based on their network conditions
FR5: Support at least 100,000 concurrent viewers
FR6: Ensure video startup latency under 3 seconds
FR7: Provide 99.9% availability for streaming service
Non-Functional Requirements
NFR1: Handle peak traffic of 100,000 concurrent viewers
NFR2: Latency for live streaming end-to-end should be under 10 seconds
NFR3: Storage must support petabytes of video data
NFR4: System should be scalable horizontally
NFR5: Use industry standard streaming protocols (HLS, DASH)
Think Before You Design
Questions to Ask
❓ Question 1
❓ Question 2
❓ Question 3
❓ Question 4
❓ Question 5
❓ Question 6
❓ Question 7
Key Components
Video ingestion service
Transcoding cluster
Storage system for original and transcoded videos
Content Delivery Network (CDN)
Streaming server or origin server
Client player with adaptive bitrate logic
Monitoring and alerting system
Design Patterns
Microservices architecture for modular components
Message queues for transcoding job management
Cache and CDN for low latency delivery
Adaptive bitrate streaming protocols (HLS, DASH)
Horizontal scaling of transcoding workers
Health checks and retries for fault tolerance
Reference Architecture
  +----------------+       +-------------------+       +----------------+
  | Video Ingestion| ----> | Transcoding Queue | ----> | Transcoding    |
  | Service       |       | (Message Queue)    |       | Workers        |
  +----------------+       +-------------------+       +----------------+
          |                                                        |
          v                                                        v
  +----------------+                                      +----------------+
  | Original Video |                                      | Transcoded     |
  | Storage        |                                      | Video Storage  |
  +----------------+                                      +----------------+
          |                                                        |
          v                                                        v
  +---------------------------------------------------------------+
  |                      Streaming Origin Server                  |
  +---------------------------------------------------------------+
                                  |
                                  v
                          +----------------+
                          | CDN (Edge Nodes)|
                          +----------------+
                                  |
                                  v
                          +----------------+
                          | Client Player  |
                          | (Adaptive Bitrate Logic) |
                          +----------------+
Components
Video Ingestion Service
HTTP/RTMP servers
Receive live or on-demand video uploads from content providers
Transcoding Queue
Message Queue (e.g., Kafka, RabbitMQ)
Manage and distribute transcoding jobs to workers asynchronously
Transcoding Workers
FFmpeg or cloud transcoding services
Convert original videos into multiple bitrates and resolutions
Original Video Storage
Object Storage (e.g., Amazon S3, MinIO)
Store raw uploaded videos reliably
Transcoded Video Storage
Object Storage with CDN integration
Store multiple quality versions of videos for streaming
Streaming Origin Server
HTTP server supporting HLS/DASH
Serve video manifests and segments to CDN
Content Delivery Network (CDN)
Commercial CDN or self-hosted edge caches
Deliver video content with low latency and high availability
Client Player
HTML5 video player with adaptive bitrate logic
Select appropriate video quality based on network conditions
Request Flow
1. 1. Content provider uploads video to Video Ingestion Service.
2. 2. Video Ingestion Service stores original video in Original Video Storage.
3. 3. Video Ingestion Service sends transcoding job message to Transcoding Queue.
4. 4. Transcoding Workers consume jobs, transcode video into multiple bitrates/resolutions.
5. 5. Transcoded videos are stored in Transcoded Video Storage.
6. 6. Streaming Origin Server generates manifests (HLS/DASH) referencing transcoded segments.
7. 7. CDN caches video manifests and segments from Streaming Origin Server.
8. 8. Client Player requests video manifest from CDN and starts playback.
9. 9. Client Player monitors network conditions and switches between bitrates adaptively.
Database Schema
Entities: - Video: id (PK), title, description, upload_time, uploader_id - TranscodingJob: id (PK), video_id (FK), status, created_at, completed_at - VideoSegment: id (PK), video_id (FK), bitrate, resolution, segment_url Relationships: - One Video has many TranscodingJobs - One Video has many VideoSegments representing different qualities
Scaling Discussion
Bottlenecks
Transcoding workers overwhelmed by high upload volume
Storage I/O bottleneck due to large video files
Streaming origin server unable to handle many manifest requests
CDN edge nodes overloaded during traffic spikes
Client network variability causing poor playback experience
Solutions
Scale transcoding workers horizontally; use autoscaling based on queue length
Use distributed object storage with high throughput and parallel access
Deploy multiple streaming origin servers behind load balancers
Leverage global commercial CDN with auto-scaling edge capacity
Implement robust adaptive bitrate algorithms and buffer management on client
Interview Tips
Time: Spend 10 minutes clarifying requirements and constraints, 20 minutes designing architecture and data flow, 10 minutes discussing scaling and trade-offs, 5 minutes summarizing.
Explain how transcoding enables multiple quality levels for diverse devices and networks
Describe asynchronous job processing for scalability and fault tolerance
Highlight use of CDN to reduce latency and improve availability
Discuss adaptive bitrate streaming benefits and client logic
Address scaling challenges and solutions realistically
Mention monitoring and failure handling strategies

Practice

(1/5)
1. What is the main purpose of adaptive bitrate streaming in video delivery?
easy
A. To encrypt the video for security
B. To adjust video quality based on the user's internet speed
C. To convert video into audio format
D. To increase the file size of the video

Solution

  1. Step 1: Understand adaptive bitrate streaming

    Adaptive bitrate streaming changes video quality dynamically to match the user's current internet speed.
  2. Step 2: Identify the main goal

    The goal is to reduce buffering and provide smooth playback by adjusting quality, not to increase file size or convert formats.
  3. Final Answer:

    To adjust video quality based on the user's internet speed -> Option B
  4. Quick Check:

    Adaptive bitrate = quality adjusts to bandwidth [OK]
Hint: Adaptive bitrate means quality changes with internet speed [OK]
Common Mistakes:
  • Confusing transcoding with adaptive bitrate
  • Thinking adaptive bitrate increases file size
  • Believing adaptive bitrate encrypts video
2. Which of the following is the correct sequence in a video streaming system using transcoding and adaptive bitrate?
easy
A. Server transcodes -> Adaptive bitrate streaming prepares multiple qualities -> User device selects quality
B. User device requests video -> Server transcodes -> Adaptive bitrate streaming adjusts quality
C. Adaptive bitrate streaming transcodes video -> Server sends single quality -> User device adjusts quality
D. User device transcodes video -> Server streams fixed quality -> Adaptive bitrate disabled

Solution

  1. Step 1: Understand transcoding and adaptive bitrate roles

    Server transcodes the original video into multiple qualities first.
  2. Step 2: Adaptive bitrate streaming selects quality

    The user device then selects the best quality based on bandwidth from these options.
  3. Final Answer:

    Server transcodes -> Adaptive bitrate streaming prepares multiple qualities -> User device selects quality -> Option A
  4. Quick Check:

    Transcoding before streaming, device selects quality [OK]
Hint: Transcode first, then device picks quality [OK]
Common Mistakes:
  • Thinking user device does transcoding
  • Assuming adaptive bitrate transcodes video
  • Believing server streams single fixed quality
3. Given a video streaming system where the server transcodes a 4K video into 1080p, 720p, and 480p qualities, what happens when a user with low bandwidth starts streaming?
medium
A. The user receives the 4K stream regardless of bandwidth
B. The user cannot stream the video at all
C. The user receives the 1080p stream only
D. The user receives the 480p stream to avoid buffering

Solution

  1. Step 1: Identify adaptive bitrate behavior for low bandwidth

    Adaptive bitrate streaming selects the lowest quality stream that fits the user's bandwidth to reduce buffering.
  2. Step 2: Match user bandwidth to available qualities

    For low bandwidth, the system chooses 480p to ensure smooth playback.
  3. Final Answer:

    The user receives the 480p stream to avoid buffering -> Option D
  4. Quick Check:

    Low bandwidth = lowest quality stream [OK]
Hint: Low bandwidth means lowest quality stream chosen [OK]
Common Mistakes:
  • Assuming user always gets highest quality
  • Thinking 1080p is default for all users
  • Believing low bandwidth blocks streaming
4. A streaming service notices frequent buffering despite using adaptive bitrate streaming. Which issue below is the most likely cause?
medium
A. User devices are not switching to lower bitrate streams when bandwidth drops
B. Server is transcoding videos into too many qualities
C. Videos are encrypted with strong DRM
D. Adaptive bitrate streaming is disabled on the server

Solution

  1. Step 1: Analyze buffering cause in adaptive bitrate streaming

    Buffering happens if user devices do not switch to lower bitrate streams when bandwidth decreases.
  2. Step 2: Evaluate other options

    Too many qualities or encryption do not directly cause buffering; disabling adaptive bitrate would stop quality switching entirely.
  3. Final Answer:

    User devices are not switching to lower bitrate streams when bandwidth drops -> Option A
  4. Quick Check:

    Buffering = no bitrate switch on bandwidth drop [OK]
Hint: Buffering often means no bitrate switch on poor network [OK]
Common Mistakes:
  • Blaming transcoding quantity for buffering
  • Ignoring device behavior in adaptive streaming
  • Confusing encryption with buffering issues
5. You are designing a scalable video streaming system that supports millions of users with adaptive bitrate streaming. Which architectural choice best supports efficient transcoding and delivery?
hard
A. Use a centralized transcoding server that processes all videos on demand
B. Transcode videos on user devices to reduce server load
C. Pre-transcode videos into multiple qualities and store them in a distributed CDN
D. Stream only the highest quality video and rely on user buffering

Solution

  1. Step 1: Consider scalability and latency in transcoding

    Centralized on-demand transcoding causes delays and bottlenecks; user device transcoding is impractical.
  2. Step 2: Evaluate delivery efficiency

    Pre-transcoding and storing multiple qualities in a distributed CDN allows fast delivery and adaptive bitrate streaming at scale.
  3. Final Answer:

    Pre-transcode videos into multiple qualities and store them in a distributed CDN -> Option C
  4. Quick Check:

    Pre-transcode + CDN = scalable adaptive streaming [OK]
Hint: Pre-transcode and use CDN for scalable streaming [OK]
Common Mistakes:
  • Relying on centralized on-demand transcoding
  • Expecting user devices to transcode videos
  • Streaming only highest quality causing buffering