What Is the systemBitrate Attribute in SMIL?

The systemBitrate test attribute in Synchronized Multimedia Integration Language (SMIL) enables adaptive streaming by specifying the bandwidth threshold required to deliver a media stream. Embedded inside a <switch> container, this attribute allows media players to evaluate a user's network speed and dynamically choose the highest quality audio or video track that can play without buffering.

Understanding SMIL and Adaptive Streaming

SMIL is an XML-based markup language designed to describe the layout, timing, and synchronization of multimedia presentations. In video and audio delivery systems—such as legacy media servers and modern multi-bitrate packaging workflows—SMIL manifests define which media files belong together in a presentation.

Adaptive bitrate streaming relies on having multiple encodings of the same source media at varying bitrates and resolutions. The player must decide which version to load based on real-time network conditions.

The Role of the <switch> Element

To implement conditional media selection, SMIL provides the <switch> element. The player processes child elements inside a <switch> block sequentially and renders only the first item whose test attributes evaluate to true.

<smil>
  <body>
    <switch>
      <video src="video_high.mp4" systemBitrate="2500000" />
      <video src="video_med.mp4"  systemBitrate="1200000" />
      <video src="video_low.mp4"  systemBitrate="500000" />
    </switch>
  </body>
</smil>

When evaluated, the player compares its available bandwidth against the systemBitrate of each candidate stream.

How systemBitrate Functions

The systemBitrate attribute represents an approximate bandwidth requirement measured in bits per second (bps).

Best Practices for Implementation

  1. Order Streams by Bitrate: Always declare tracks from highest bitrate to lowest inside the <switch> block. Because the engine selects the first matching element, placing lower bitrates at the top would prevent higher-quality streams from ever playing.
  2. Account for Total Delivery Overhead: Set the systemBitrate value slightly higher than the raw video bitrate to account for audio tracks, container metadata, and network transport overhead.
  3. Combine with Other Test Attributes: In complex streaming profiles, systemBitrate is often combined with attributes like systemScreenSize or systemLanguage to tailor content delivery based on display resolution and locale alongside connection speed.