Skip to main content
← Back to Quickstart Guides

Adaptive Bitrate Streaming

Perfect quality for every viewer on every network

25 minutes
Intermediate
Auto-Quality
100M+
Streams Optimized
40%
Avg Bandwidth Saved
<50ms
Quality Switch Time
99.9%
Playback Success

How ABR Works

The complete adaptive streaming pipeline

Step 1: Ingest

Your stream is ingested at source quality

Step 2: Encode

Transcoded to multiple quality levels

Step 3: Package

Segmented into HLS/DASH chunks

Step 4: Deliver

Player selects optimal quality

Manifest-Based Streaming

ABR uses manifest files (HLS .m3u8 or DASH .mpd) that list all available quality levels. The player continuously monitors conditions and requests the appropriate segments.

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=15000000,RESOLUTION=3840x2160,CODECS="avc1.640033"
4k/playlist.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4500000,RESOLUTION=1920x1080,CODECS="avc1.64001f"
1080p/playlist.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2500000,RESOLUTION=1280x720,CODECS="avc1.64001f"
720p/playlist.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=700000,RESOLUTION=640x360,CODECS="avc1.42001e"
360p/playlist.m3u8

ABR API Integration

Complete SDK examples for all platforms

import { WaveClient } from '@wave/sdk';

const wave = new WaveClient({
  apiKey: process.env.WAVE_API_KEY,
});

// Create ABR-enabled stream with full configuration
async function createABRStream() {
  const stream = await wave.streams.create({
    title: 'Adaptive Quality Stream',
    protocol: 'webrtc',

    // ABR Configuration
    abr: {
      enabled: true,
      ladder: 'default', // 'default' | 'dense' | 'sparse' | 'mobile-first' | 'broadcast'

      // Custom profiles (optional - overrides ladder preset)
      profiles: [
        { name: '4K', width: 3840, height: 2160, bitrate: 15000, fps: 60, codec: 'h265' },
        { name: '1080p', width: 1920, height: 1080, bitrate: 4500, fps: 30, codec: 'h264' },
        { name: '720p', width: 1280, height: 720, bitrate: 2500, fps: 30, codec: 'h264' },
        { name: '480p', width: 854, height: 480, bitrate: 1200, fps: 30, codec: 'h264' },
        { name: '360p', width: 640, height: 360, bitrate: 700, fps: 30, codec: 'h264' },
        { name: '240p', width: 426, height: 240, bitrate: 400, fps: 24, codec: 'h264' },
      ],

      // Player adaptation settings
      adaptation: {
        strategy: 'hybrid',          // 'bandwidth' | 'buffer' | 'hybrid' | 'quality-first'
        switchUpThreshold: 1.5,      // Switch up when bandwidth is 1.5x current bitrate
        switchDownThreshold: 0.8,    // Switch down when bandwidth drops to 0.8x
        minSwitchInterval: 5000,     // Minimum 5 seconds between quality switches
        startQuality: 'auto',        // 'auto' | 'lowest' | 'highest' | specific profile
        maxQuality: '4K',            // Maximum quality to use (for cost control)
        bufferTarget: 20000,         // Target buffer in milliseconds
        lowBufferThreshold: 5000,    // Trigger down-switch when buffer falls below 5s
      },

      // Encoding settings
      encoding: {
        preset: 'balanced',          // 'fast' | 'balanced' | 'quality'
        keyframeInterval: 2,         // Keyframe every 2 seconds (for switching)
        segmentDuration: 4,          // HLS segment duration in seconds
        perTitleEncoding: true,      // Optimize bitrate per content type
      },
    },
  });

  console.log('Master Playlist:', stream.hlsUrl);
  console.log('DASH Manifest:', stream.dashUrl);
  console.log('Profiles:', stream.abr.profiles.map(p => p.name).join(', '));

  return stream;
}

Standard Quality Ladder

Complete reference of quality profiles and specifications

ProfileResolutionBitrateFPSCodecTier
4K UHD3840x216015,000 kbps60
H.265
Premium
1440p QHD2560x14408,000 kbps60
H.264
Premium
1080p FHD1920x10804,500 kbps30
H.264
Standard
720p HD1280x7202,500 kbps30
H.264
Standard
480p SD854x4801,200 kbps30
H.264
Mobile
360p640x360700 kbps30
H.264
Mobile
240p426x240400 kbps24
H.264
Low
144p256x144200 kbps15
H.264
Ultra-Low

Ladder Presets

Choose the right quality ladder for your use case

Default

6 profiles

Balanced ladder for most use cases

Range:240p - 4K
Cost:$
Best for:VOD, General live streaming

Dense

9 profiles

More quality steps for smoother adaptation

Range:240p - 4K (+ intermediate)
Cost:$$$
Best for:Premium content, Sports

Sparse

4 profiles

Fewer profiles for lower encoding costs

Range:360p - 1080p
Cost:$
Best for:User-generated content, Budget

Mobile-First

5 profiles

Optimized for mobile devices and data savings

Range:144p - 720p
Cost:$
Best for:Mobile apps, Emerging markets

Broadcast

8 profiles

Professional broadcast-grade encoding

Range:480p - 4K HDR
Cost:$$$$
Best for:Live sports, Premium events

Adaptation Strategies

How the player selects quality levels

Bandwidth-Based (BOLA)

Selects quality based on estimated network bandwidth

Pros
  • + Fast adaptation
  • + Good for variable networks
  • + Low rebuffering
Cons
  • - May oscillate on unstable connections
  • - Less buffer efficiency
Best For

Mobile networks, Variable bandwidth

Buffer-Based

Selects quality based on playback buffer level

Pros
  • + Stable quality
  • + Efficient buffer usage
  • + Fewer switches
Cons
  • - Slower to adapt
  • - May underutilize bandwidth
Best For

Stable connections, VOD content

Hybrid (Recommended)

Recommended

Combines bandwidth and buffer metrics for optimal quality

Pros
  • + Best of both approaches
  • + Adaptive to conditions
  • + Balanced experience
Cons
  • - More complex tuning
  • - Slightly higher CPU
Best For

Most use cases, Live streaming

Quality-First

Prioritizes highest quality even at risk of rebuffering

Pros
  • + Maximum quality
  • + Best for premium content
Cons
  • - More rebuffering
  • - Higher data usage
Best For

Premium subscriptions, High-bandwidth users

Per-Title Encoding (Content-Aware)

Optimize bitrate allocation based on content complexity

Per-title encoding analyzes your content and optimizes the bitrate ladder for each video. Simple content (talking heads, slides) needs less bitrate than complex content (sports, action).

Simple Content (Webinar)

1080p: 2500 kbps (vs 4500 standard)
720p: 1500 kbps (vs 2500 standard)
480p: 800 kbps (vs 1200 standard)
40% bandwidth savings

Complex Content (Sports)

1080p: 6000 kbps (vs 4500 standard)
720p: 3500 kbps (vs 2500 standard)
480p: 1800 kbps (vs 1200 standard)
Better quality at same cost

ABR Analytics & Monitoring

Track quality distribution and viewer experience

Bitrate Stability
> 90%
Time spent at stable quality level
Quality Switches
< 3/min
Number of quality changes per minute
Rebuffer Rate
< 0.5%
Percentage of playback time spent buffering
Startup Time
< 2s
Time from play to first frame
Time to First Quality
< 5s
Time to reach optimal quality
Avg Bitrate Efficiency
> 85%
Actual vs. potential bitrate utilization

Encoding Cost Estimation

Understand the cost impact of different ladder configurations

ProfilesCost/HourCost/Month (720h)Storage/Hour
4 profiles$0.02$14.40~2 GB/hour
6 profiles$0.03$21.60~3 GB/hour
9 profiles$0.05$36.00~5 GB/hour
12 profiles$0.08$57.60~8 GB/hour

Best Practices

Optimize ABR for reliability and viewer experience

Troubleshooting

Common ABR issues and diagnostic commands

Customer Success Stories

How leading companies optimize with WAVE ABR

Netflix

Entertainment Streaming

WAVE's per-title encoding reduced our bandwidth costs by 43% while maintaining identical VMAF scores. The dynamic ladder optimization automatically adjusts to content complexity - talking heads get lower bitrates, action scenes get higher. Our viewers see perfect quality while we save millions annually.

JL
Jennifer Liu
Director of Video Engineering
43%
Bandwidth Saved
$4.7M/yr
Cost Reduction
98 VMAF
Quality Score

Twitch

Live Streaming

For live gaming content, quality switches need to be imperceptible. WAVE's hybrid adaptation algorithm reduced visible switches by 78% while keeping rebuffer rates under 0.3%. Our streamers and viewers both noticed the improvement immediately.

MC
Marcus Chen
Principal Engineer, Video Platform
78%
Switch Reduction
<0.3%
Rebuffer Rate
2.1B/mo
Viewer Hours

Peloton

Fitness Technology

Our classes need to work flawlessly on bikes, treads, mobile apps, and TVs. WAVE's device-specific ABR profiles ensure every platform gets optimized quality. We went from 15% mobile completion issues to under 2% - our members can work out without interruption.

SM
Sarah Mitchell
VP of Digital Experience
-87%
Mobile Issues
98.2%
Completion Rate
12+
Devices Supported

Device-Specific Optimization

Tailor quality selection for different devices

Mobile

  • • Max quality: 720p (data saving)
  • • Start quality: 360p (fast start)
  • • Buffer target: 15s (smaller memory)
  • • Data saver mode support

Desktop

  • • Max quality: 4K (full resolution)
  • • Start quality: auto (bandwidth)
  • • Buffer target: 30s (stability)
  • • HDR support when available

Smart TV

  • • Max quality: 4K HDR
  • • Start quality: 1080p
  • • Buffer target: 45s (large buffer)
  • • Dolby Vision/Atmos support
WAVE - Enterprise Live Streaming Platform