Skip to content
streamneo.
Setup Guides13 min read

How to Stream an Internet Radio Station to YouTube from AzuraCast

Send AzuraCast radio audio, a video loop and Now Playing details to YouTube with the official Liquidsoap example.

sn.
StreamNeoPublished 4 October 2026
Worth sharing?

If your radio station already runs in AzuraCast, you can send its audio to YouTube with a video loop and a Now Playing overlay. AzuraCast’s official radio-video-stream example does this through a custom Liquidsoap configuration and a YouTube RTMP destination.

This is not a one-click AzuraCast feature or a guaranteed plug-and-play recipe for every installation. It is an advanced example for operators who can inspect Liquidsoap logs, adjust station paths and recover the station if a software update changes how the custom script works.

The model: AzuraCast radio to YouTube

The useful distinction is between your radio station and the YouTube broadcast. AzuraCast continues to produce the station’s normal audio output through its AutoDJ and Liquidsoap workflow. The video-stream example takes that composed radio audio, combines it with a visual loop, and sends the result to YouTube over RTMP.

The path looks like this:

AzuraCast media and AutoDJ → Liquidsoap radio output → video loop and Now Playing overlay → YouTube RTMP destination

YouTube is not receiving your station’s playlist directly. It receives a live encoded feed from the Liquidsoap process. This means the YouTube stream depends on the AzuraCast station being healthy, the custom configuration loading correctly, the media files being available, and the RTMP credentials remaining valid.

That architecture is suitable when your main programme already lives in AzuraCast. You do not need to rebuild the station as a camera production with scenes and microphones. You do, however, need to understand that adding a custom output changes the station’s broadcast configuration rather than merely changing a YouTube setting.

Before you begin, decide whether you want the YouTube channel to mirror the station continuously or only during particular shows. If the station is always on, a persistent destination is simpler operationally. If you only want scheduled broadcasts, you will need to manage when the YouTube stream is created and launched as well as when the AzuraCast output is available.

The radio audio should be yours to broadcast on YouTube. A licence to play music on an internet radio service does not automatically settle every right needed for a YouTube live broadcast. YouTube’s monetisation rules also do not confirm that a particular station or music catalogue is eligible. Check the current official requirements and your own rights position before publishing.

What the official radio-video-stream example does

AzuraCast’s radio-video-stream repository describes an example Liquidsoap script that sends the radio alongside a video loop to an RTMP destination such as YouTube. It can also write the currently playing song across the video dynamically.

That description is the right way to understand the project. It is a reference configuration that shows how the pieces can be connected inside an existing AzuraCast installation. It is not a hosted YouTube connector, a supported visual editor, or a promise that the same script will parse unchanged after every AzuraCast or Liquidsoap update.

The example expects you to customise installation-specific values, including the station directory, the RTMP key and the font specification. It also expects the required media files to exist in the station’s media storage. The repository includes a sample video loop, but you still need to make sure that your own installation can read the selected file and that the content is appropriate for your channel.

A sensible way to approach the example is to treat it as code that you are introducing into a working radio system. First record how the station behaves before the change. Then add the custom output, restart broadcasting, and check both the station and YouTube. If the station stops starting afterwards, remove or correct the custom code rather than repeatedly restarting without reading the log.

For a practical comparison, the main choices are where the video composition happens and how much maintenance you accept:

Approach Where the composition happens Main advantage Main trade-off
AzuraCast custom Liquidsoap example In the station’s Liquidsoap workflow Radio audio and the video output stay together Custom code can be affected by version changes
Separate desktop encoder In an additional computer application More flexible scenes and graphics Another machine, application and failure point
Cloud video workflow Outside your local computer Your computer does not need to remain on Requires a suitable service and separate configuration

The official example is the direct AzuraCast-native route, but “native” does not mean turnkey. If you are not comfortable restoring a station after a custom Liquidsoap change, start with a test station or choose a workflow with a graphical encoder. The FFmpeg versus OBS comparison for prerecorded YouTube loops may help you compare the operational difference between a code-led and application-led setup.

Liquidsoap and AutoDJ: which part does what

AzuraCast uses Liquidsoap as part of the AutoDJ and station-audio workflow. AutoDJ decides what should play according to your station configuration, while Liquidsoap handles the audio pipeline and can expose the output to an additional destination.

For this setup, the important source is the station’s already-composed radio stream. The YouTube output should follow the audio that listeners would normally hear from the station, including its playlist logic and scheduled content. The custom script is not a replacement for your music library, playlists or station scheduling.

The video side is separate from the radio programming. A loop may show artwork, a branded background, an animation or another prepared visual. The script can combine that visual with the radio output and place text over it. If the visual file ends, is missing or cannot be decoded, the audio station may still be healthy while the YouTube output fails, so check both paths independently.

The exact syntax matters. Liquidsoap configuration is not generic shell text, and a script copied from an older example may fail if functions, encoders or source handling have changed. Do not assume that a line which worked on another AzuraCast installation will work on yours.

The AzuraCast Liquidsoap documentation is the appropriate place to check the current configuration context. Compare the repository’s current script with the Liquidsoap version and configuration fields available in your installed release before you paste anything into production.

Prepare the video loop and font

The example needs a video file for the visual output and a TTF font for the Now Playing text. Upload them to the station’s media storage in the location expected by the script. The research example refers to a folder named videostream, but the important point is not the folder name by itself. The configured path and the actual station directory must agree.

Prepare the visual with long unattended playback in mind. Avoid a short clip that makes an obvious, distracting jump unless that is intentional. Check that the file plays from beginning to end, has a usable frame size, and does not rely on a missing audio track. The radio audio should remain the programme source; the video loop is there to provide the YouTube picture.

A still image placed inside a video container can be enough for a simple station identity, but a moving loop may make the broadcast more recognisable as live. Neither choice changes the need to confirm that the file can be read by the encoder on the AzuraCast installation.

The font is not decoration only. It is an input to the text overlay. Use a TTF file that the configuration can access and that contains the characters your station needs. If you broadcast song titles in Hindi or another script, test those characters before going live. A font that lacks the required glyphs can produce missing or unreadable text even when the stream itself is running.

Keep the station assets organised and avoid changing or replacing them while troubleshooting the first launch. Once the stream is stable, you can test a revised loop or font as a separate change. That gives you a clearer answer when something breaks.

If you are building a devotional, bhajan or spoken-word station, check the visual content against the same rights and branding decisions as the audio. For a simple prerecorded visual workflow, the guide on looping prerecorded meditation videos on YouTube Live covers a related problem, although it does not replace the AzuraCast-specific Liquidsoap setup here.

Create the YouTube RTMP destination

In YouTube Studio, open Live Control Room and create or schedule the stream. YouTube provides a server URL and a stream key for the encoder. The official YouTube encoder setup instructions explain where these values are displayed and how to start the broadcast.

The server URL identifies the YouTube ingest destination. The stream key authorises the encoder to publish to the selected stream. Treat the key like a password. Anyone who obtains it may be able to publish to that stream or channel, so do not place it in screenshots, public repositories or support posts. If you think it has been exposed, replace it in YouTube and update the custom configuration.

In the repository’s example, the RTMP details are part of the Liquidsoap configuration. Read the current script and identify the fields that need your station directory, RTMP key and other destination values. Do not paste the key into a different field because a label looks familiar. The script’s current instructions and comments take precedence over an old tutorial.

A safer first test is to use a scheduled or otherwise controlled YouTube broadcast rather than altering a well-established public stream during a busy programme. Start the AzuraCast output, wait for YouTube to receive the encoder feed, and inspect the preview. Confirm that the sound is the expected station output, the video is moving or looping as intended, and the overlay is readable.

For a scheduled YouTube stream, receiving a preview is not always the same as making the stream public. Follow the current Live Control Room steps and click the relevant control to go live when you are ready. YouTube says streams under 12 hours are automatically archived; do not assume that the same archive behaviour applies to longer broadcasts.

If YouTube shows no incoming feed, separate the possible causes. A wrong server URL or key points to YouTube credentials. A failed Liquidsoap parse points to the custom configuration. A missing video or font points to station media storage. A healthy audio station with no YouTube output suggests that the additional destination, rather than AutoDJ itself, needs investigation.

Display the current song information

The Now Playing overlay is produced from the station’s current metadata, not from YouTube’s title field. When the station advances to another item and the metadata is available, the Liquidsoap example can render the current song information across the video.

That distinction matters when you troubleshoot. The YouTube broadcast title and description are configured in YouTube Studio. The song text printed on the video comes from the station metadata and the font and overlay settings in the Liquidsoap workflow. Updating one does not necessarily update the other.

Test metadata with several types of programme. A normal artist and title pair may display correctly while a long devotional title, a Hindi song name or a presenter-led show produces clipping or missing characters. If your station uses custom metadata, confirm what the AutoDJ actually passes into the current-song field.

Keep the overlay readable at the size used by your viewers. Text that looks clear in a full-size local preview may be difficult to read on a mobile screen. Avoid placing it over parts of the loop with similar colours, and leave enough contrast for both light and dark artwork.

Metadata can also be delayed or absent. That does not automatically mean that the YouTube connection has failed. Check whether the station’s own Now Playing information changes correctly first, then inspect the video output. If the audio continues but the text is stale, investigate metadata handling and overlay configuration separately from RTMP connectivity.

Apply the custom configuration carefully

In AzuraCast, manage the station and open Broadcasting → Edit Liquidsoap Configuration. The research instructions place the video_stream.liq example in the bottom custom configuration field, or have you paste or import the relevant current script there. Follow the repository’s present README rather than treating this article as a substitute for its code comments.

Before saving, make a copy of the existing custom configuration and record the values you changed. At minimum, note the station directory, media paths, font path and YouTube destination values. Keep the RTMP key private even in your local notes.

Save the configuration and use the notice in AzuraCast to restart broadcasting. A restart is part of applying this kind of change. After it returns, confirm that the normal station stream is available before judging the YouTube output. Then check the YouTube preview and the live picture.

Read the station’s Liquidsoap application log if the restart fails. The repository recommends inspecting that log and temporarily removing the custom code if necessary to restore the station. This is an important recovery step: a YouTube experiment should not leave your primary radio broadcast offline for the rest of the night.

When you make a correction, change one category at a time. First resolve a parse or startup error. Then resolve missing media. Then check the RTMP destination and metadata. Changing the script, video, font and YouTube stream together makes the next error harder to identify.

Check compatibility and overnight operation

The repository describes the example as intended for power users and provides it as-is without active support. It also warns that AzuraCast updates can change the underlying Liquidsoap version, which may cause custom scripts not to parse or launch. Treat the version information in an old README as historical guidance, not as a guarantee for every current release.

Before applying the example, compare the current repository script with your installed AzuraCast release. Look for changes in Liquidsoap syntax, encoder functions, source names and configuration locations. If you update AzuraCast later, plan a daytime test rather than assuming the custom output will continue unchanged.

An overnight test should include more than checking that YouTube says “live”. Listen to the station and watch the preview long enough to see a track change, a scheduled item and a video-loop transition. Check whether the Now Playing text updates and whether the stream remains connected after the station reloads the relevant media.

Also decide who will respond if it fails. A useful runbook includes the station log location, the last known working configuration, the steps to remove the custom block, and the YouTube stream key replacement procedure. Do not rely on memory after an update at an inconvenient hour.

The guide to restarting an FFmpeg YouTube stream automatically on a VPS discusses restart planning for a different stack, but the operational lesson applies here: recovery should be tested, not merely hoped for. If maintaining custom Liquidsoap code is not a good fit, a cloud workflow such as StreamNeo removes the need to keep your own computer running for a prepared YouTube video, but it does not turn this AzuraCast integration into a supported built-in feature.

Before committing, compare the operating options on the pricing page. When the file and channel are ready, start free — 24-hour trial, no card.

FAQ

Can AzuraCast send a radio station to YouTube without a video file?

The official radio-video-stream example is designed to send radio audio alongside a video loop and can add the current song as text. A video asset and a readable TTF font are therefore part of the documented example setup, rather than optional details to ignore.

Is the AzuraCast radio-video-stream script guaranteed to work on every version?

No. It is an advanced custom Liquidsoap example, provided as-is, and changes to the underlying Liquidsoap version can make custom code fail to parse or launch. Check the current repository instructions against your installed release and keep a rollback path.

Where do I get the YouTube server URL and stream key?

Create or schedule the broadcast in YouTube Studio’s Live Control Room. YouTube provides the server URL and stream key for the encoder, and the key should be kept private because it authorises publishing to the stream.

What should I check if the station works but YouTube does not?

Check the Liquidsoap application log, then verify the configured media paths, font path, server URL and stream key. If the custom configuration prevents broadcasting from starting, temporarily remove it to restore the station before testing the corrected version.

YOU’VE REACHED THE END

Keep the ideas coming.

More guides, useful tools and a little help for your next broadcast.

Back to the journal ↗
YOUR NEXT READ

A little more to explore.

More Setup Guides guides ↗ · All topics ↗