Rocket Streaming Blog

Streaming Audio News and Tips


Articles tagged with RSAS

RSAS Logo RSAS 0.1.20 Released

We're pleased to announce the release of RSAS 0.1.20! Rocket Streaming Audio Server (RSAS) is a high-performance webserver designed for broadcasting live streaming audio through the web, with low latency and high listener capacity.

This release contains major performance improvements, a new management API, tons of small improvements to existing features, and bugfixes.

➡️ Get RSAS 0.1.20 today from our downloads page.


Wait, what happened to RSAS 0.1.19?

We're skipping it. Late in the development cycle of 0.1.19, we started pursuing a new line of optimizations to boost performance on very large servers with hundreds of thousands of listeners. We started working on these optimizations in a separate branch for 0.1.20 and continued final preparations for the 0.1.19 release. However, our benchmark results for 0.1.20 were so good that we put it through our QA process and quickly started using it in production at Radio Mast. We've excited to share 0.1.20 with you as an even better version of RSAS than we initially planned.

Without further ado, here's what's new in RSAS 0.1.20:

Performance Boost

In this update, our new optimizations have achieved a roughly 2x reduction in CPU usage at high workloads, enabling broadcasters to reach more listeners than ever before on a single server. We've also further reduced the CPU usage for relays. No changes or config tweaks are required, simply upgrade and enjoy.

On our server test rig with a Ryzen 2700 processor (8 cores, 16 threads), RSAS is now able to serve 240,000 concurrent listeners on a 64 kbps MP3 stream. This is on a consumer-class CPU that is already 2 generations old. Importantly, RSAS fully utilizes all available cores and is limited by CPU speed alone.

RSAS /health screenshot with 240,000 listeners RSAS CPU usage in htop with 240,000 listeners on a Ryzen 2700 CPU. RSAS network traffic in nload with 240,000 listeners
RSAS /health screenshot, htop showing CPU utilization, and nload showing network traffic with 240,000 listeners.

In the nload screenshot, RSAS is sending almost 15 Gbps of traffic!

We'll be publishing an updated set of benchmarks with more details soon, so be sure to check back.

Manage API

The new Manage API allows you to perform management actions on individual mounts. Two actions have been implemented thus far, allowing you to force a source to disconnect (kick) or move listeners to a different mount.

Read more about the new Manage API here.

Seamless Takeover

Compatible encoders can now seamless kick and takeover an existing stream when they connect. When connecting to RSAS with Rocket Broadcaster 1.3.22 and up, if a stream mount is already in use, users will be prompted if they want to kick the existing source. This allows broadcasters to seamlessly takeover a stream or switch DJs without any dead air.

Other Small Features:

  • Relay URLs can now be changed dynamically via config reloads. Listeners will get moved to the new URL.
  • Added admin-password config setting from Icecast (currently only used for the Manage API).
  • Added optional <config-version> field to config file format and is exposed in /health. This can help you track whether your new config has been loaded.
  • Added last_config_reload field to /health (UNIX timestamp)
  • Added --test/-t flag for checking config file syntax
  • Added warning if default passwords used (hackme/adminhackme)
  • Prevent blank passwords from being used.
  • Improved Icecast compatibility:
    • Implemented <hidden> mount flag from Icecast, which hides a stream from the emulated Icecast status page and status-json.xsl page.
    • Added <alias> directive, allowing you to remap URL paths.
    • Added the "stream started" timestamp to Icecast status page and to the status-json.xsl.
  • HTTP referer now shows up in the access log.
  • The "referer" header is not supported by all browsers and players, which can make traffic attribution tricky. To make accounting for your traffic sources easier, you can now override this header by setting the "referer" querystring parameter. (eg. /mystream?referer=myapp)
  • Source and Listener Auth Webhooks can now return icecast-resp-status and icecast-resp-reason headers to make RSAS return a custom response when denying a listener or source.
  • HTTP 400 Bad Request template now included.
  • DEBs for Debian 11 now available.
  • CentOS 6 has been deprecated.

Bugfixes:

  • Fixed serving static files on Windows, which prevented the LetsEncrypt wizard from working for some users.
  • Fixed FLAC compatibility with BUTT encoder.
  • Fixed rare relay race condition that could lead to a crash.
  • Fixed HTTP "referer" always being blank in the access log.
  • Fixed a rare crash related to TLS.

What's Next?

RSAS 0.1.21 is planned to come shortly, and will include improved HTTP/1.1 support for serving static audio files on-demand, such as podcasts. It will allow seekable playback of large audio and video (!) files out-of-the-box.

These features will also help round out our HLS implementation, which we're hoping to release as an experimental feature soon.

Audio preroll (aka intro files) is high on our list of priorities and we are planning this for Fall 2021. We're hoping to throw in some experimental features with this too, like the ability to trigger audio insertion mid-stream (mid-roll).

Looking for other features? RSAS development is driven by your feedback, so get in touch and let us know how we can help your online audio streaming.

Lastly, we would like to thank our dedicated users for all your feedback on our previous releases. Your feedback has helped us make RSAS better for the global broadcasting community. Thank you!

RSAS Logo RSAS 0.1.18 Released

We're pleased to announce the release of RSAS 0.1.18! Rocket Streaming Audio Server (RSAS) is a high-performance webserver designed for broadcasting live streaming audio through the web, with low latency and high listener capacity.

This release adds a couple new features including persistent relays, SNI support for multiple SSL/TLS certificates, as well as major performance optimizations, bugfixes, and more. The update is the culmination of 6 months of development work which included over 18 minor alpha releases that were tested across the globe.

Get RSAS 0.1.18 today from our downloads page.

Persistent Relays

Persistent relays are now the default type of relay. In previous releases, all relays were "on-demand", which meant they only started relaying after the first listener attempted to connect. Persistent relays automatically connect at startup and will continually try to reconnect if the stream ever drops. Since a relay must be online before it can be used as a fallback, persistent relays are now recommended for fallbacks.

Read about more about Persistent Relays in the documentation.

SNI support, for multiple SSL/TLS certificates

A single RSAS instance can now use multiple TLS certificates. This is needed when you have multiple domains pointing at a single server and you wish to use HTTPS on all of them. RSAS can now load a different TLS certificate for each configured hostname, via a mechanism called SNI.

To configure multiple TLS certificates, a new <vhosts> section needs to be declared in your config file.

Read about configuring multiple TLS certificates in the docs.

Major performance improvements

Various parts of RSAS have seen major performance improvements, including a large reduction in CPU usage and reduced disk access. We're working on new benchmarks, but so far we've seen that RSAS can handle over 10X the listeners compared to the other streaming server software we tested.

Upgrading?

Please see the "Behaviour change" notes below. Most users should be able to upgrade without issue. Users with large numbers of relays should test that persistent relays operate as intended with their setup. If you need the old on-demand relay behaviour instead of persistent relays, add <on-demand>1</on-demand> to your <relay> config section.

Other Changes in RSAS 0.1.18

Here's a list of other changes in this release:

  • Added option to limit listener session duration on a per-mount basis (<max-listener-duration>). See the docs on Listener Duration Limits.
  • Added icecast-auth-timelimit header from source webhook auth. If specified, it imposes a timelimit on the listener. See the docs on Timelimit for Webhook Listener Auth.
  • Icecast-compatible header passthrough (via POST vars) for webhook listener and source auth. (<options name="headers" ...> and header_prefix). See the docs on passing through HTTP headers with listener auth webhooks.
  • Added server_start and stream_start metrics to /status-json.xsl
  • Added SNI support, for using multiple SSL certificates with different hostnames, via <vhosts>. Read more about SNI / VHosts / multiple TLS certificates.
  • Behaviour change: Default to persistent relays instead of on-demand (Use 1 in your section for on-demand behaviour.)
  • Behaviour change: /<mount>/metadata now returns JSON by default unless explicitly used with an EventSource for streaming metadata.
  • Behaviour change: Drop unwritten log lines if the backlog exceeds 10K records, to avoid blocking under high load.
  • Bugfix: Fixed rare memory leak with TLS
  • Bugfix: Fixed DNS lookups blocking for relays
  • Bugfix: Fixed TLS negotiation with clients that don't support SNI
  • Bugfix: Fixed glitchy audio playback via Google Assistant.
  • Bugfix: Fixed listener authentication race condition.
  • Bugfix: Improved compatibility with Unity game engine - Only send in-band ICY metadata if it changed.
  • Bugfix: Various other bugfixes

What's next?

We'll be continuing to refine RSAS and improve the features that our users are utilizing the most. Over the last few months, much of our effort was focused on optimization and refinement of existing features. We are still experimenting with HLS and working on rounding out the HLS feature set. We've also laid the groundwork for some other features we're not yet ready to announce, so stay tuned.

Looking for other features? RSAS development is driven by your feedback, so get in touch and let us know how we can help your online audio streaming.

RSAS Logo RSAS 0.1.17 Released

We're pleased to announce the release of RSAS 0.1.17! Rocket Streaming Audio Server (RSAS) is a high-performance webserver designed for broadcasting live audio through the web, with low latency and high listener capacity.

This release adds a new Metadata History API, Icecast-compatible status page (optional), customizable error pages, and more.

Get RSAS 0.1.17 today from our downloads page.

Metadata History API

A new JSON API is available that provides the last 10 received metadata updates, which can be used to display recently played tracks. Previously, developers had to build their own server-side play history solution, but now RSAS saves you time by having this built-in.

Visit /mount/metadata-history on your RSAS server to test it out, or read the Metadata History API docs for more information.

Read about more about the Metadata History API in the documentation.

Customizable Error Pages

RSAS now displays user-friendly error pages, which can be customized. Templates for the error pages are now bundled with RSAS for Windows and in our DEB/RPM packages.

Read more about the new customizable Error Page Templates in the docs.

Improved Source Behaviour

RSAS will now retain listeners for up to 10 seconds after a source disconnects, to allow sources to reconnect and resume broadcasting to those listeners. This also applies to relays.

Icecast-compatible Status Page

An optional Icecast-compatible Status Page and JSON endpoint (/status-json.xsl) can now be enabled. Some web-based player widgets and other services designed for Icecast get stream metadata by trying to scrape the JSON endpoint, and this update makes RSAS compatible with those players and services.

The Icecast-compatible status page can be enabled on Linux by adding the following to your config file:

<emulation>
    <icecast-status-page>1</icecast-status-page>
</emulation>

On Windows, the Icecast-compatible Status Page can be enable via the Configuration screen.

Read more about the Icecast-compatible Status Page in the docs.

Other Changes in RSAS 0.1.17

Here's a list of other changes in this release:

  • Performance improvements
  • TLS certificate errors are now non-fatal on service reload.
  • Various relay and fallback bugfixes, including:
    • Fallback override now works with relays, allowing listeners to be moved back from a fallback mount to a relay if it reconnects.
    • Improved relay reconnection logic
    • Bitrate/channels/samplerate info is now shown in /health for relays.
  • Improved logging, especially related to relays and fallbacks, to aid troubleshooting.
  • Authentication options (<option>) can now be removed during config reloads.
  • Added CORS headers to all error responses.
  • Improved compatibility when relaying from AIS and Shoutcast 2.5.5
  • Added a DEB package for Ubuntu 16.04
  • Added experimental FreeBSD 12 package

What's next?

We're planning to implement persistent relays (non-on-demand) next and are experimenting with some ideas for <alias> mounts. We're still pushing towards support for HLS and hope to ship at least experimental HLS support soon.

Looking for other features? RSAS development is driven by your feedback, so get in touch and let us know how we can help your online audio streaming.

RSAS Logo RSAS 0.1.16 Released

We're pleased to announce the release of RSAS 0.1.16! Rocket Streaming Audio Server (RSAS) is a high-performance webserver designed for broadcasting live audio through the web, with low latency and high listener capacity.

This release adds HTTPS stream relaying, fast start and low latency modes, improved source encoder compatibility, and more. We've also added packages for Ubuntu 20.04 and FreeBSD 12.

Get RSAS 0.1.16 today from our downloads page.

HTTPS Stream Relaying

Relaying HTTPS streams is now supported! To make this possible, we've improved and simplified the config syntax for relays, by introducing a new <url> tag which replaces the confusing <server>, <port>, and <mount> syntax inherited from Icecast. For compatibility, the old syntax is still supported, but the new syntax is required if you want to specify the protocol (eg. https://).

As an example, adding an HTTPS relay to your config is now as easy as:

    <relay>
        <url>https://www.myotherserver.com/mystream</url>
        <local-mount>/relay</local-mount>
    </relay>

Read about more on Relaying in the documentation.

Fast Start and Low Latency Mode

Certain web browsers take longer to start playback with RSAS because they have a large playback buffer and wait for it to fill before playing. This release adds a new, optional URL parameter that allows you to accelerate the start of playback, at the expense of increased latency. By adding ?latency=high to the end of your stream URL, web browsers will start playing more quickly.

Additionally, we've added a ?latency=low mode that allows you to experiment with even lower latency. The benefit of these options being URL parameters is that you can tailor the latency for different devices or browsers without having to change your configuration.

Read more about Fast Start / Low Latency Mode in the docs.

Improved Encoder Compatibility

This update improves compatibility with several older Icecast source encoders, including SAM and StationPlaylist. These encoders all speak a slightly different ICE/1.0 protocol, which is a consequence of there being no real written specification or standard for Icecast streaming. As of now, every encoder that we know of that is Icecast-compatible works with RSAS.

Webpage Serving

You can now serve a webpage at the / URL by creating an index.html file in your webroot directory. RSAS already supported static file serving, but this release includes some important bugfixes related to that for Windows users.

What else is new in RSAS 0.1.16?

Here's a full list of changes in this release:

  • Improved compatibility with older ICE/1.0 source clients (SAM, SPL).
  • Relaying of HTTPS streams added via a new <url> tag that can be nested under <relay>. Read the docs for more information.
  • Added "latency" querystring for listeners, to allow for playback to start quicker vs. less latency.
  • The / URL is now aliased to index.html. Create an index.html file to create a homepage at the / URL.
  • Reduced memory usage for Server-Sent Events metadata stream
  • Improved cache headers, to prevent browser caching (Cache-Control: no-store, Date/Expires).
  • Added <hostname> setting, for future work.
  • Added correct mimetype for MPEG-TS files (.ts)
  • Added OPTIONS HTTP request handling
  • Bugfix: Escape pipe symbols in playlist.log
  • Bugfix: Fixed mimetypes for static files on Windows (they don't all download as attachments anymore.)
  • Bugfix: Fixed relaying from Nimble Streamer
  • Bugfix: Wildcard mount settings aren't applied to static audio files - avoids them being treated as looping audio.
  • Bugfix: Apply port 8000 firewall rule to rsas.exe in installer, instead for the service.
  • Bugfix: Fixed several bugs in X-Forwarded-For handling.
  • Bugfix: Escape Server-Sent Events metadata
  • Bugfix: Fixed relaying streams with apostrophes in metadata.

What's next?

We've been continuing to work on HLS support in RSAS, which will bring HLS to the Icecast ecosystem. As part of this work, we're also adding support for MPEG-TS streams, which may be useful for certain niches.

If you need HLS support, we'd love to hear from you to learn more about your needs. Please get in touch!

Looking for other features? RSAS development is driven by your feedback, so get in touch and let us know how we can help your online audio streaming.

RSAS Logo RSAS 0.1.14 Released

We're pleased to announce the release of RSAS 0.1.14! Rocket Streaming Audio Server (RSAS) is a high-performance webserver designed for broadcasting live audio through the web, with low latency and high listener capacity.

Get RSAS 0.1.14 today from our downloads page.

Let's Encrypt HTTPS Wizard for RSAS

With the recent release of Chrome 80, Google has started blocking embedded HTTP audio streams in websites that are using HTTPS. The dreaded "mixed content warning" now means streams embedded in websites won't play at all. The solution is to use HTTPS for your audio stream.

As a result of these policy changes, we've had a numerous users switching from Icecast and SHOUTcast over to RSAS, for its excellent HTTPS support. For Linux users, we already have a guide for on setting up RSAS using free Let's Encrypt certificates, but we're committed to first-class support for Windows, and we wanted to make the HTTPS setup process easier for Windows users too.

With RSAS 0.1.14 for Windows, we've built-in a new HTTPS wizard, to automatically request Let's Encrypt TLS/SSL certificates and configure HTTPS for you. Setting up HTTPS for your audio stream is now easier than ever before.

Let's Encrypt HTTPS wizard for streaming audio
The new HTTPS Wizard allows you to easily get a free Let's Encrypt TLS/SSL certificate, and configure HTTPS.
Let's Encrypt HTTPS wizard page 2
All you need to do are point a domain at your server, and ensure port 80 and 443 are accessible from the internet (forward the ports on your router).

What's new in RSAS 0.1.14?

  • Let's Encrypt HTTPS Wizard (Windows only)
    • Easily setup HTTPS using our new HTTPS Wizard. Automatically requests a certificate for your from Let's Encrypt, configures HTTPS, and setups up automatic certificate renewal for you.
  • Fixed a bug causing high CPU usage after certain fallback transitions
  • Improved error log readability

Looking for HTTPS audio stream hosting?

Over at Radio Mast, we offer streaming audio hosting with HTTPS, starting at just $5 / month, through our global streaming audio CDN.

What's next?

Looking for other features? RSAS development is driven by your feedback, so get in touch and let us know how we can help your online audio streaming.

RSAS Logo RSAS 0.1.12 Released

We're pleased to announce RSAS 0.1.12 is now available for download. Rocket Streaming Audio Server (RSAS) is a streaming audio webserver designed for low latency and high capacity audio streaming.

Get RSAS 0.1.12 today from our downloads page.

What's new in RSAS 0.1.12?

What's next?

We have a number of new features in development, including:

  • Customizable error pages
  • Icecast-compatible status page
  • Always-on relays

Looking for other features? RSAS development is driven by your feedback, so get in touch and let us know how we can help your online audio streaming.

RSAS Logo Benchmarking RSAS, Icecast, and SHOUTcast

How many listeners can your streaming server handle? If you want to deliver stable live audio to a large online audience, you'll want to know the answer. We decided to put RSAS head-to-head with Icecast and SHOUTcast and measure the performance of each, to help broadcasters plan their server deployments and better understand how each streaming server scales.

Which streaming server performs best? Read on!

Test Setup

Before we get into the numbers, here's a breakdown of the test environment. The test hardware consisted of two PCs:

  • Client PC: Intel Core 2 Duo E8500, 4 GB DDR2 RAM, Ubuntu 19.10
  • Server PC: Intel Core i5-7600K, 32 GB DDR4 RAM, Windows 10, 1903


Both PCs were directly connected via a 40 Gbps copper connection using a pair of Mellanox ConnectX-3 Ethernet cards. On the client PC, 10 instances of ab were spawned and connected via HTTP to the server PC, each simulating 1000 concurrent listeners, for a total of 10,000 listeners. Standard tuning was also applied to each PC to allow them to handle high numbers of network connections (increased socket descriptor limits, etc.).

The server PC was configured with the following software:

  • RSAS 0.18.0
  • Icecast-KH 2.4.0-kh12
  • SHOUTcast 2.6.0.753


These are the latest versions of each application at the time of writing. Each application had a single mount/stream configured with the default minimal configuration. No customization was done.

The server PC was also configured with Rocket Broadcaster 1.3.0 as the encoder, with a single 64 kbps MP3 stream connected to each server for each test. The encoder was connected to RSAS and Icecast using the Icecast2 protocol, and the Shoutcast2 protocol for SHOUTcast.

Benchmark Results

CPU Usage Comparison
CPU usage graph: RSAS vs. Icecast and Shoutcast with 10000 listeners
The average CPU usage of RSAS, Icecast, and SHOUTcast with 10,000 listeners connected, sampled over 60 seconds.

With 10,000 listeners connected, RSAS had the lowest CPU usage, beating both Icecast-KH and SHOUTcast. RSAS is currently the fastest streaming audio server on the market, and is almost 20% more efficient than Icecast-KH.

This efficiency translates into a number of advantages for broadcasters. After network bandwidth, CPU usage is the next biggest bottleneck for streaming. A more efficient streaming server means you can serve more listeners with the same hardware. RSAS is also better equipped to handle transient spikes in utilization, such as big jumps in listener counts or drop offs, without disrupting other listeners.

Memory Usage Comparison
Memory usage graph: RSAS vs. Icecast and Shoutcast with 10000 listeners
The average resident RAM usage of RSAS, Icecast, and SHOUTcast with 10,000 listeners connected, sampled over 60 seconds.

In terms of memory usage, each application faired well. Icecast came out on top here, narrowly beating RSAS.

With all of the applications tested, the memory consumption is so low that if you have the CPU power to serve tens of thousands of listeners, you'll definitely have more than enough RAM on your system to handle it. Memory consumption is good to keep an eye on, but will not be a concern for broadcasters.

Going beyond 10K listeners

When we started doing these benchmarks, we initially load tested each application with 30,000 listeners @ 64 kbps, requiring about 2 Gbps of bandwidth. However, we found that SHOUTcast started dropping listeners around the 15,000 mark, and Icecast started dropping listeners around the 12,000 mark. On the same PC, RSAS was able to serve 37,000 listeners simultaneously without dropping listeners. When testing RSAS, the bottleneck was actually the Client PC that was running the 37,000 listener, as we fully saturated its CPU. In other words, 37K wasn't even the limit for RSAS on our Server PC.

To demonstrate this, we ran another test where we ramped up the number of listeners to 18,000 over the course of a few minutes, and measured the number of listeners connected vs. the CPU usage:

Memory usage graph: RSAS vs. Icecast and Shoutcast with 10000 listeners
Listener count vs. CPU usage for RSAS, Icecast, and SHOUTcast, as 18,000 listeners were ramped up over 7 minutes.

In the graphs above, the red line shows how many listeners were reported by each streaming server, as we ramped up 18K listeners over 7 minutes. While RSAS managed to reach 18K listeners and stay stable, Icecast has a meltdown and started dropping thousands of listeners once it hit 12K. Similarly, SHOUTcast started dropping listeners around the 15K mark. The large spikes in Icecast CPU usage indicate a snowball effect, where it temporarily locks up when it is unable to serve listeners anymore.

We limited our earlier CPU and memory usage comparisons to 10K listeners since it's a regime where each application clearly operated normally. Our theory is that poor multithreading performance limits the listener capacity of Icecast and Shoutcast, while RSAS's optimized mulithreading allows it to scale far better.

For a future article, we're working on repeating our testing with an upgraded Client PC and trying to push 10 Gbps of listener traffic. We'd also like to look at performance on Linux, and measuring the stability of each server under load.

The Bottom Line

RSAS comes out on top as the highest performing streaming audio server, allowing broadcasters to serve more listeners than ever before with the same hardware.

Questions about RSAS or planning streaming capacity? Get in touch!

Update 2022/11/09: Check out Round 2 of our benchmarks, testing each server up to 240,000 listeners!

RSAS Logo RSAS for Windows Released

We're pleased to announce RSAS for Windows is now available for download. Rocket Streaming Audio Server (RSAS) is a high capacity streaming audio webserver for broadcasting low latency live audio, and is now available for both Windows and Linux.

The Windows edition of RSAS includes a brand new user interface for easy configuration and monitoring, offering a simplified experience out-of-the-box to save you time. RSAS also installs as a background service on Windows, and is optimized for server environments.

Download RSAS 0.1.8 for Windows today.

RSAS for Windows screenshot
The main window in RSAS for Windows. See all your streams and logs at a glance.
RSAS for Windows screenshot RSAS for Windows screenshot
Configuration screens in RSAS for Windows.

RSAS for Windows FAQ

How's the performance?

Performance of RSAS on Windows is excellent and is at least on par with performance on Linux. We've load tested RSAS on Windows and it can easily do 100,000+ concurrent listeners on a modern desktop processor. We'll have more details in an upcoming blog post about benchmarks.

Does it have the same features as the Linux version?

Yes, every feature is supported. The only difference is that configuration changes can only be applied by restarting the server on Windows, as opposed to using the SIGHUP signal on Linux, which allows hot reloading.

The Windows version additionally installs itself as a proper background service, which starts on boot and automatically restarts itself if needed.

Lastly, RSAS for Windows includes an easy user interface for configuration and monitoring, which is only available on Windows.

What versions of Windows is RSAS compatible with?

RSAS for Windows is compatible with Windows 7, 8, 8.1 and Windows 10. It is also compatible with Windows Server 2012, 2016, 2019 and up.

About RSAS

RSAS is a streaming audio server for broadcasting high quality streaming audio over the web. RSAS offers broadcasters lower latency, high scalability, and excellent compatibility with encoders and players. RSAS is compatible with popular codecs like MP3, AAC, AAC+, Ogg Opus, and Ogg FLAC, and supports in-stream metadata for displaying Now Playing information to your listeners.

Read more about RSAS and why we created it.

RSAS Logo RSAS 0.1.8 Released

We're pleased to announce RSAS 0.1.8 is now available for download. Rocket Streaming Audio Server (RSAS) is a streaming audio webserver designed for low latency and high capacity audio streaming.

Get RSAS 0.1.8 today from our downloads page.

What's new in RSAS 0.1.8?

  • Performance optimizations:
    • Significantly reduced memory usage for listeners connecting by HTTP. In our anecdotal testing, memory usage while serving 37,000 listeners decreased from 1.2 GB to a paltry 74 MB (!)
    • Lower CPU usage
    • Improved logging performance (multi-threading) - Logging has been completely rewritten to improve performance in this version.
  • Support for 96 kHz Ogg FLAC streaming
  • Bugfixes:
    • Fixed a bug where Ogg and FLAC relays could become choppy after reconnecting to the origin stream
    • Relaying streams that are missing metadata now works.
    • Improved compatibility with older streaming encoders that still use the ICE/1.0 protocol.
    • Replace invalid UTF-8 characters on status pages
  • New Linux packages: We've added packages for Debian 9 and 10, as well as Ubuntu 16.04.

Benchmarks Coming Soon

We frequently benchmark RSAS against other streaming servers, to make sure performance is good and to help understand the impact of adding new features. We're working on putting together some numbers to share in a future blog post, but so far the performance numbers are great and we think you'll be pleased with this latest RSAS update.

If anyone has questions about RSAS scalability or high capacity streaming, please get in touch!

Why Logging Performance Matters

You might be wondering why we spent time optimizing the speed of our logging in this release, which is a decidedly unglorified task. As part of our load testing of RSAS and other streaming servers, we ramp up about 40,000 listeners on a server. During one of our tests, we force half these listeners to drop off instantly, and see what the impact on the other listeners is.

You wouldn't think listeners dropping off should have any impact on remaining listeners, but handling new connections and disconnections is one of the most CPU intensive operations of any streaming server. For example, if 15,000 listeners disconnect instantly, your streaming server needs to write 15,000 lines to it's access.log file. This can be problematic because writing to the log can block the entire application, which means other listeners might momentarily get starved of audio, and hear a dropout. If the server blocks for long enough, it's even possible for other listeners to timeout, resulting in a cascading failure.

In this latest update, we've boosted logging performance switching to asynchronous logging with a backlog. This means no matter how many listeners are connecting or disconnecting, RSAS won't block on logging and other listeners won't be affected. This is key for delivering a smooth experience on high capacity audio streams.

What's next?

We're juggling a number of new features in development, and if you need any of these features for your online audio streaming, please let us know and we'll do our best to prioritize it:

  • Windows version (coming very soon!)
  • HLS
  • Icecast-compatible status page
  • Customizable error pages
  • Even lower latency

Looking for other features? RSAS development is driven by your feedback, so get in touch and let us know how we can help your online audio streaming.

RSAS Logo Introducing Rocket Streaming Audio Server

We're pleased to introduce the Rocket Streaming Audio Server (RSAS), our new software to deliver high quality streaming audio over the web. RSAS offers broadcasters lower latency, excellent compatibility with encoders and players, and compatibility with popular codecs like MP3, AAC, AAC+, Ogg Opus, and Ogg FLAC. Our live streaming metadata, and compatibility with HTML5 Media Source Extensions make it easier to build better in-browser players for radio too. We're excited to offer broadcasters this new streaming server software as an alternative to Icecast and SHOUTcast, giving professional radio stations the stability they need to stream online.

Drop-in Icecast Replacement

To make things easy, RSAS is designed as a "drop-in replacement" for Icecast, meaning it's compatible with your existing Icecast configuration file, encoder, and players. It even writes logs in the same format, for compatibility with listener statistics or reporting software. If you're encountering bugs or crashes with Icecast, you can easily switch over to RSAS and try it out. Read more about migrating from Icecast to RSAS.

SHOUTcast Alternative

SHOUTcast users might have noticed that SHOUTcast is now charging a monthly fee for features that were previously free, and has locked down their free version of SHOUTcast to only be compatible with 128 kbps MP3 streams, removed backup URLs, and imposed other restrictions.

We have good news for small broadcasters - The Free Edition of RSAS has no codec or bitrate restrictions, and serves up to 100 concurrent listeners. You can broadcast AAC or even lossless Ogg FLAC, with fallback streams, for free, making RSAS a great alternative to SHOUTcast.

Read more about migrating from SHOUTcast to RSAS.

Why we built Rocket Streaming Audio Server

We developed RSAS after running into several major issues with Icecast and Icecast-KH that became apparent at the scale that the Radio Mast Streaming Network operates at. We're obsessed with reliability, and our up-to-the-minute monitoring detected subtle issues that were leading to a worse listener experience. Coincidentally, many of our Rocket Broadcaster users approached us after running into similar problems and were looking for a new alternative to Icecast or SHOUTcast.

We decided to forge our own streaming server software internally for Radio Mast to deliver on our vision of a rock-solid global streaming audio CDN, and RSAS was born. Keeping compatibility with Icecast ensured migrating our infrastructure was easy and seamless, and invisible to our broadcasters and listeners (beyond the reliability improvements).

We're excited to share our new streaming technology with the wider broadcasting community, and aim to use the combination of our streaming audio encoder and RSAS to deliver solutions to some long-standing problems with online streaming audio. Keep watching this blog for more news in the future.

📡 Downloads and Getting Started

RSAS is available today as a free download for Linux, and can handle up to 100 concurrent listeners.

An RSAS Pro license can handle up to 1 million concurrent listeners, and is available starting today from our shop.

RSAS for Windows is currently available as a private beta. Please send us an email if you'd like to try it out. (We're currently developing a user interface for RSAS for Windows to make administration easy, but the streaming server itself is complete.)

We recommend taking a quick skim over our documentation after you download RSAS. If you don't already have an Icecast installation, you'll need to create a configuration file, and you can start with one of our examples.

📝 FAQ

Is this an Icecast fork? Why not just contribute to Icecast?

No, RSAS was written from scratch in C++, and is not an Icecast fork. We opted to build our own server because the Icecast project has a different set of priorities from what broadcasters have been asking for. For example, Icecast doesn't officially support MP3 or AAC, and the developers are hostile towards those codecs (1, 2) for over a decade.

On the other hand, we've made supporting the two most popular codecs in the world our top priority for RSAS, so even advanced features like relays and fallback streams work great with MP3 and AAC.


What are some specific problems you ran into with Icecast and Icecast-KH?

For starters, on-demand relays are completely broken in Icecast and Icecast-KH, making it difficult to build a bandwidth-efficient CDN with Icecast. Relays with Icecast also add large latency (10 seconds or more per server), so having multiple relays pull from each other compounds your latency, leading to massive latencies (eg. 45 seconds) between the broadcaster and the listener. This is a common downside of existing streaming audio CDNs today, and we designed RSAS to eliminate the relay latency, so each server only adds about 1 second (or less) of latency.

Poor support for AAC overall was another factor (eg. fallbacks with AACs kick listeners).

There's also this unfortunate tendency for "certain old versions" of Icecast or Icecast-KH to be the magic stable versions that everybody uses, but only the people "in the know" know what they are. Often, the newest version would crash or have memory leaks. The lack of quality control has lead to major features like FLV wrapping being quietly broken in the latest release of Icecast-KH (kh10 to kh12). The confusing, undocumented, divergence of Iceast and Icecast-KH (where's a comparison?) has left the two projects with different levels of compatibility, stability, security, and maintenance, none of which is clear or apparent at all to users.

As developers of broadcast software for radio, people trust us to deliver rock solid solutions that run for years without intervention. Based on our experience running dozens of streaming servers for many years, the disarray of the Icecast and Icecast-KH projects, and even SHOUTcast, has made them incapable of delivering the reliability broadcasters need. It's our job to deliver software that lets you focus on running your radio station, and not worry about your servers, and that's exactly what RSAS does.


How is RSAS better than Icecast?

Even from our first release, there's a couple key advantages of RSAS over Icecast:

  • Lower latency - RSAS uses a different networking model under the hood to accelerate delivery of audio to your listeners, leading to lower latencies, usually around 4 seconds. We're working on making this adaptable and automatically tune itself in the future for even lower latenices.
  • Easy Streaming Metadata - Getting live metadata from your stream onto your website is easier with RSAS, as it offers push / streaming metadata that you can easily read from JavaScript.
  • Consistent Metadata Support - RSAS supports in-stream ICY metadata across all codecs. We've heard from broadcasters that the lack of ICY metadata support in Icecast has hindered Opus and FLAC adoption and made integration with players more difficult.

For more information, we've made a more detailed comparison between Icecast and RSAS in our guide to migration from Icecast to RSAS.


Why would I pay for RSAS Pro?

Besides raising the listener limit, an RSAS Pro license gives you the peace of mind of running supported software. That means if you find a bug or have a problem, we're here to help you and solve it. Our paid licensing model for RSAS allows us to dedicate developers to the project and deliver a high quality product and support that you can count on.

Other free streaming servers are "community supported", which is a nice way of saying "not supported". If you find a bug in Icecast, there's no dedicated developers available to fix it. Your radio station's problems are at the whim of whenever one of their developers gets around to fixing it.

If you're serious about your radio station, especially commercial radio, RSAS Pro is for you.


Is there a hosted option for RSAS?


📧 Feedback and Feature Suggestions

Got an idea you'd like to see in our streaming audio server? We'd love to hear from you. We're actively working on the next set of features and your feedback will help us prioritize our roadmap.

« Prev Page Page 2 / 2