Use SHOUTcast/Icecast as a live stream encoder with Wowza Streaming Engine

Wowza Streaming Engine™ media server software enables you to use SHOUTcast and Icecast servers as live stream encoders. This article describes how to configure Wowza Streaming Engine to automatically ingest SHOUTcast1, SHOUTcast2 (Ultravox 2.1), and Icecast 2 streams. When a SHOUTcast or Icecast stream is connected to Wowza Streaming Engine, it is treated like any other incoming stream.

Note: Wowza Streaming Engine 4.7.0 or later is required.

Before you start


You should complete the following tasks:

  • Configure the ServerListenerLoadAndLockAppInstances server listener according to Load and lock an appinstance with a Wowza Streaming Engine server listener. Make sure to specify the name of the live application you'll use to ingest the SHOUTcast or Icecast broadcasts so that Wowza Streaming Engine will automatically start the applications and keep it loaded.
  • Create a SHOUTcast or Icecast broadcast. Go to SHOUTcast.com or Icecast.org, sign in or register, and follow the instructions to create a broadcast.

1. Configure playback


Before connecting a live source and publishing a live stream, complete the following steps to configure playback support for your application.

  1. Click the Applications tab at the top of the page and then select your application in the contents panel.
  2. Click the Setup tab on your application's page and then click Edit.
  3. Under Playback Types, select any streaming protocols you need to support for playing streams sent to this application. The playback types enable transmuxing a source stream into MPEG-DASH, HLS, RTMP, and RTSP/RTP.
  4. Click Save.

  1. In the application's contents panel, click Playback Security, and then click Edit.


     
  2. Under Client restrictions, select No client restrictions to allow players to connect from any IP address.

  3. Click Save and then restart the application.

For more information about Playback Security options, see Playback security options.

2. Configure Wowza Streaming Engine to ingest the SHOUTcast/Icecast broadcast 


Complete the following steps to enable ingesting a SHOUTcast or Icecast broadcast with Wowza Streaming Engine.

Note: These instructions require an administrator user with advanced permissions. For more information, see Enable access to advanced administrative settings.

  1. Add the ShoutcastIngest module to your live application.
    1. In Wowza Streaming Engine Manager, click the application in the contents panel and then click on the Modules tab.
    2. Click Edit and then click Add Module.
    3. In the Add New Module dialog box, complete the required fields and then click Add.
      • Name - Enter ShoutcastIngest.
      • Description - Enter Shoutcast or Icecast ingest.
      • Fully Qualified Class Name - Enter com.wowza.wms.protocol.icy.Ingest.
    4. Click Save and then restart the application to apply your changes.
  2. Create a file named ICYSourceMap.txt in the [install-dir]/conf/ folder.
  3. Add the required SHOUtcast or Icecast username and password content to the [install-dir]/conf/ICYSourceMap.txt file for each broadcast you'll ingest:
    • SHOUTcast 1 
      SHOUTcast 1 clients only send a password. The ICYSourceMap.txt entry should use the following format, where:
      • [password] is your SHOUTcast 1 broadcast password.
      myStream = {password:”[password]”}
    • SHOUTcast 2 
      SHOUTcast 2 clients send a username, password, and stream ID (SID). The ICYSourceMap.txt entry should use the following format, where:
      • [password] is your SHOUTcast 2 broadcast password.
      • [username] is your SHOUTcast 2 broadcast username.
      • [SID] is your stream ID.
      myStream = {password:”[password]”,userName:”[username]”, sid:”[SID]”}
    • Icecast 2 
      Icecast 2 clients send a username, password, and mountpoint. The ICYSourceMap.txt entry should use the following format, where:
      • [mountpoint] is the mountpoint (this must be same as the stream name).
      • [password] is your Icecast 2 broadcast password.
      • [username] is your Icecast 2 broadcast username.
      [mountpoint] = {password:”[password]”,userName:”[username]” }
  4. Save your chances to the ICYSourceMap.txt file, and restart Wowza Streaming Engine. 

3. (Optional) Configure custom SHOUTcast/Icecast properties

Use the following properties, as needed, for additional configuration of SHOUTcast/Icecast streams in Wowza Streaming Engine. 

  1. In Wowza Streaming Engine Manager, click the Applications tab and select your application in the contents panel.
  2. In the details page, click the Properties tab, and then click Custom in the Quick Links bar.
  3. In the Custom section, click Edit.
  4. Click Add Custom Property and specify /Root/Application for Path.
  5. Use the following information to specify the Name, Type, and Value for any of the following properties and then click Add.
     
    Name Type Description
    icyListenPort Integer

    Specifies the port on which SHOUTcast and Icecast clients should connect to Wowza Streaming Engine. The default port is 8000.

    Note that the specified port is used to determine the SHOUTcast 1 port, which is the icyListenPort plus one. So, with the default value, the SHOUTcast 1 port is 8001.

    icyShoutcastVersionOneEnabled Boolean Enables the use of the SHOUTcast 1 port. The default value, true, allows SHOUTcast 1 connections. To disable SHOUTcast 1 connections, set to false.
    icySourceMapPath String

    The full path, including the file name, to an alternate location for the ICYSourceMap.txt file. The default location is [install-dir]/conf/ICYSourceMap.txt. The specified path can contain the following variables:

    • ${com.wowza.wms.context.VHostConfigHome}
    • ${com.wowza.wms.context.VHost}
    • ${com.wowza.wms.context.Application}
    • ${com.wowza.wms.context.ApplicationInstance}

    For example:
    ${com.wowza.wms.context.VHostConfigHome}/conf/ICYSourceMap.txt


     
  6. Click Save, and then restart the application when prompted to apply the changes.

4. Verify the connection


To verify that Wowza Streaming Engine is receiving the published stream, complete the following steps in Wowza Streaming Engine Manager.

  1. Click Incoming Streams in the contents panel for your live application.

    You should see your stream listed with Active for the status.

  2. Click the stream name to see the uptime, network throughput, and other information about the published stream.

5. Test playback


Although you can use SHOUTcast and Icecast for audio/video streams, they are usually audio-only streams. If you want to deliver the audio-only stream to an HLS player, you must packetize the chunks using TS. See Configure Wowza Streaming Engine to packetize HLS audio using TS chunks for more information.

  1. From your application's page in Wowza Streaming Engine Manager, click Incoming Streams.
  2. Click the name of your stream and then click Test Playback from your stream's page.
  3. Review and, if needed, edit the following information in the Test Playback window for your stream:
     
    • Server – The IP address or domain name of the server and the streaming port ([address]:[port]).

  4. (Optional) In the Streaming URLs section, select Secure URL for the streaming protocol you want to use to test playback if you have configured SSL/TLS for streaming over https, rtmps, or rtsps.
  5. Click the Copy icon for the streaming protocol you want to use to test playback.
  6. Paste the playback URL into your player or a mobile browser depending on the protocol. Alternatively, you can use the Wowza Video Test Players webpage.

For more information about playback URLs, see About playing Wowza Streaming Engine streams.

Next steps


More resources