Skip to content
streamneo.
Setup Guides14 min read

How to Send Liquidsoap Audio to a YouTube Radio Livestream

Connect Liquidsoap to YouTube Live with a version-checked setup for sources, encoders, stream keys, monitoring and troubleshooting.

sn.
StreamNeoPublished 4 October 2026
Worth sharing?

Liquidsoap can send a continuous audio source to a YouTube livestream through its YouTube output and an encoder. You need a source, a version-matched output configuration, the ingest URL and stream key from YouTube Live Control Room, and a visual track if your chosen output requires video.

Start by checking the Liquidsoap version installed on the machine that will run the stream. The operator name and arguments changed between releases, so copying a script from an older tutorial can produce a syntax error before YouTube receives anything.

Confirm your Liquidsoap version first

Before choosing an example, find the version that will actually run the channel. A script tested on your laptop may not match the version installed on a hosted machine, container, or remote server. Check the command-line version output and keep the result beside your configuration while you work.

The current versioned reference for Liquidsoap 2.4.5 documents output.youtube.live.rtmp. Older material may use output.youtube.live, or may send an RTMP URL through the more general output.url. These are not interchangeable names that can safely be mixed together.

The change is more than cosmetic. The newer YouTube output uses an encoder argument, while older examples may show bitrate or quality arguments that are no longer part of the same interface. The Liquidsoap 2.4.5 reference should be your starting point if that is the version you have installed.

Write down three details before you proceed:

  • The installed Liquidsoap release.
  • Whether the build has the FFmpeg support and codecs required by your encoder.
  • Whether you are sending audio with a static or moving visual, or trying to use an audio-only path.

That last point matters because YouTube is a video livestreaming destination. Your radio programme may contain only music and speech, but the output may still need a video stream carrying a static image, artwork, waveform, or another visual source. Do not assume that an audio source alone will satisfy every encoder and output arrangement.

Create or choose the Liquidsoap source

Liquidsoap separates the source from the destination. A source produces the programme, while an output continuously reads that source and sends encoded data elsewhere. Keeping those pieces separate makes it easier to replace a playlist, live input, or fallback source without rewriting the YouTube connection.

For a radio channel, the source might be a playlist of devotional tracks, a folder of licensed music, scheduled programmes, or a remote audio feed. The exact source declaration depends on the files and inputs you use. The important check is that Liquidsoap can produce audio continuously before you involve YouTube.

Start the source locally or inspect the Liquidsoap logs and confirm that it can select the first item. Check the file format, permissions, path, and duration. If the source is remote, check whether it can reconnect after a network interruption. A source that works once during a short test may still be unsuitable for an unattended channel if it becomes unavailable between tracks.

Playlists and remote inputs can be fallible. In practical terms, Liquidsoap may not always have usable content available. A normal output expects a source that remains available, while a fallible output can stop while its child source is unavailable and resume when it becomes available again. The correct choice depends on how you want the channel to behave during an empty playlist or failed input.

If your plan is a repeating visual with radio audio, treat the visual as a separate part of the design. You could use a static image or another video source, depending on the encoder path supported by your version. Test the combined result rather than testing the audio source in isolation and assuming the muxed output will behave identically.

For a broader example of the content planning behind an always-on music channel, see how to start a 24/7 lofi music stream on YouTube. The same distinction applies here: the programme content and the transport to YouTube are separate jobs.

Match the YouTube output to your release

Once the source is working, read the output reference for the installed release. For Liquidsoap 2.4.5, the direct route is output.youtube.live.rtmp. Its documented inputs include a YouTube URL, a secret key, an encoder, and the source. The reference gives rtmp://a.rtmp.youtube.com/live2 as the default URL, but you should still use the endpoint shown for the stream in YouTube Live Control Room when it differs.

The output reference describes the encoder as most likely an FFmpeg encoder. That does not mean every Liquidsoap installation has identical FFmpeg support. Builds can differ in the protocols, codecs, and container formats available to them, so confirm what your installed build can actually use.

The dedicated YouTube output is the clearest starting point when it is available for your release. It expresses the intended destination directly and keeps the stream key as a separate argument. A generic output.url path can be useful when you need more control over the encoder or when a particular release does not provide the dedicated operator you need. It is not a reason to combine syntax from two different references.

Liquidsoap documents output.url as an encoder-driven output for cases where the encoder handles its own data output. Its controls include options such as fallible, restart_delay, and self_sync. The reference notes that self-synchronisation can matter for certain FFmpeg RTMP uses. Treat this as an alternate, more general route, not as the default when the versioned YouTube output fits your setup.

A useful way to compare the two paths is this:

Path Best suited to Main trade-off
output.youtube.live.rtmp A release that documents the dedicated YouTube output Simpler destination-specific configuration, but tied to that release’s API
Generic output.url with an encoder A setup needing generic encoder control or a different output arrangement More flexibility, but more responsibility for URL, container, timing, and encoder details

Do not publish a complete script until you have matched the operator, argument names, encoder syntax, and source expectations to your release. A short, apparently complete example is less useful than a version-checked configuration that you can explain and troubleshoot.

Get the ingest URL and stream key from YouTube

Open YouTube Studio and enter Live Control Room for the channel that will host the broadcast. Create or select the stream, then copy the stream URL and stream key shown in the stream settings. YouTube explains the stream key as the value that tells the encoder where to send the feed and allows YouTube to accept it through the selected ingest endpoint. See YouTube’s guidance on stream keys for the current interface and account requirements.

The URL and key have different roles. The URL identifies the ingest destination. The key identifies your broadcast configuration and should be treated like a password. Put the URL in the output’s url setting, and put the key in its key setting when using the dedicated Liquidsoap YouTube output.

Do not paste a real key into a public script, support forum, screenshot, issue tracker, or shared document. Use a placeholder while writing and insert the real value only on the machine or service that needs it. If you think the key has been exposed, reset it in the Stream tab of YouTube Live Control Room and update Liquidsoap with the replacement.

YouTube recommends RTMPS for encrypted ingest, but the precise endpoint and protocol support available to you depend on the YouTube stream settings and your installed encoder build. YouTube’s live encoder settings document the current ingest guidance. Do not assume that an RTMPS URL will work in every Liquidsoap and FFmpeg build without checking supported protocols.

Keep the stream set up in the way you intend to operate it. If you want a recurring radio broadcast, decide whether YouTube should create a new event, reuse a persistent stream arrangement, or wait for a scheduled event. Those choices affect what you see in Live Control Room, but they do not change the basic Liquidsoap responsibility: send the encoded feed to the correct URL with the correct key.

Configure and start the output

The configuration has four logical parts: the source, the encoder, the YouTube destination, and the startup behaviour. Build and check them in that order rather than debugging all four at once.

First, make sure the source is producing audio. Second, define an encoder supported by the installed Liquidsoap and FFmpeg build. Third, create the version-matched YouTube output with the URL, key, encoder, and source. Finally, decide whether the output should start automatically or be started explicitly.

For the documented 2.4.5 route, the reference describes output.youtube.live.rtmp with optional fallible, start, and url settings, plus the required key, encoder, and source arguments. The exact arrangement and encoder expression must come from the reference for your installed release. Do not take the operator from 2.4.5 and combine it with the bitrate arguments from an older snippet.

YouTube’s encoder guidance applies to the encoded stream, not to the Liquidsoap source files themselves. For RTMP or RTMPS ingest, YouTube lists H.264, H.265/HEVC, and AV1 video, with AAC or MP3 audio, constant bitrate encoding, and frame rates up to 60 frames per second. For keyframes, YouTube states: recommended two seconds and do not exceed four seconds.

For stereo audio, YouTube recommends AAC or MP3 at 44.1 kHz and 128 Kbps in its advanced settings. If you include video, select the bitrate row for the actual codec, resolution, and frame rate rather than copying a value from an unrelated example. YouTube lists H.264 at 720p and 30 fps as 3 Mbps minimum and 8 Mbps recommended, and H.264 at 1080p and 30 fps as 5 Mbps minimum and 14 Mbps recommended.

Those are YouTube’s encoder recommendations, not a promise that a particular connection or device will deliver a stable stream. Your outgoing connection needs room for the complete stream bitrate, protocol overhead, and ordinary variation. YouTube’s streaming guidance recommends keeping an additional 20% bandwidth headroom above the stream bitrate.

If your channel uses a static image, test the image dimensions and readability on a phone as well as a desktop screen. A technically valid video track can still be a poor radio presentation if the artwork is too small, stretched, or replaced by a black frame. For a useful comparison of a different software route, see FFmpeg or OBS for 24/7 YouTube streaming from prerecorded videos.

Start Liquidsoap only after checking the key and URL one more time. Watch the initial logs for source errors, encoder errors, protocol errors, and connection attempts. A successful process start does not prove that YouTube is receiving a valid programme.

If the machine running Liquidsoap is also expected to remain unattended, make its operating environment part of the test. Check that it restarts after a reboot, that the configuration is available after login or service startup, and that logs can be inspected without opening a desktop session. A software stream still needs an operating location that remains available.

Verify audio and stream health in YouTube

Open the stream in Live Control Room and wait for YouTube to detect the incoming feed. Check that the preview contains the expected visual and that the audio meter responds to real programme material. Speech, music, silence, and transitions should all be represented in the test, not only a brief loud section.

Look at YouTube’s stream health messages while Liquidsoap is running. YouTube asks streamers to test representative audio and video before an event and to monitor health warnings during it. Record the messages you see during a controlled test so that you know which conditions are normal and which require action.

Listen from a separate device or network where possible. The local Liquidsoap process may be producing audio even when the outgoing stream is stalled, while the YouTube preview may show a connection with a missing or damaged track. Compare three points: the source, the encoded output, and the viewer-facing YouTube stream.

Check for these basic signs of a healthy radio feed:

  • The source continues moving from one item to the next.
  • The encoder remains running without repeated failures.
  • YouTube receives both the visual track and audio track expected by the configuration.
  • The preview does not repeatedly disconnect or return to an idle state.
  • Stream health messages do not show sustained bitrate, keyframe, or connection problems.

Test a source failure deliberately if the channel is meant to run unattended. Pause or remove a test item, then observe whether Liquidsoap stops, waits, falls back, or resumes according to the fallibility settings you chose. This is safer than discovering during the night that an empty playlist causes the output to terminate.

If you are moving from a desktop workflow to a continuously running arrangement, how to run a 24/7 worship stream on YouTube using OBS in India gives useful context about continuity checks. The Liquidsoap commands differ, but the operational question is the same: what happens when the content, connection, or host fails outside working hours.

Troubleshoot connection and syntax problems

If Liquidsoap rejects the configuration immediately, check the version and operator name before changing the YouTube settings. An error about an unknown operator or argument usually indicates a release mismatch, not a bad stream key. Compare the installed release with the reference page and remove arguments that belong to another version.

If the output starts but does not connect, check the ingest URL and stream key character by character. Confirm that you copied the current key from the intended channel and did not include spaces or quotation marks that are not part of the value. If the key has appeared in a public place, reset it rather than trying to protect the exposed copy.

If the URL is correct, check encoder availability. An encoder expression can be valid in documentation but unavailable in your build if the required FFmpeg support or codec is missing. Inspect the Liquidsoap and FFmpeg logs for the exact encoder or protocol error instead of changing several settings at once.

If YouTube reports missing video, check whether your chosen output expects a video track. An audio source does not automatically create a visual stream. Add the visual part required by the version-matched encoder arrangement, or choose a documented audio and video path that matches your purpose. Do not add capture hardware merely to solve a software configuration problem.

If the stream connects and then drops, examine outgoing capacity and timing. Compare the total encoded bitrate with the available upload speed and leave the recommended headroom. Look for repeated reconnects, keyframe warnings, source stalls, and host-level network interruptions. A stream that survives a short test may still fail when the connection is busy or the source changes format.

If the source becomes unavailable, decide whether the output should tolerate that condition. The documented YouTube output’s fallible option allows the child source to fail, in which case the output stops until the source becomes available again. That may be preferable to sending silence, or it may be the wrong choice for a channel that must keep a viewer-facing broadcast alive. The decision belongs in your channel design rather than being copied blindly from a sample.

If you need to run the channel without keeping your own computer switched on, StreamNeo removes the specific burden of leaving Liquidsoap or another desktop workflow running locally: upload the prepared video, provide the YouTube stream key, and let the cloud broadcast handle monitoring and automatic restart. It is a YouTube-only workflow, so it is not a replacement for a Liquidsoap setup when you need live source logic or custom audio processing.

For a diagnosis checklist covering a different encoder path, see how to set FFmpeg to stream at 720p to YouTube from a Raspberry Pi. The relevant lesson is to separate source, encoder, destination, and network checks rather than treating every failed connection as a YouTube problem.

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 Liquidsoap send audio to YouTube without a video track?

It depends on the output and encoder arrangement used by your Liquidsoap version. YouTube is a video livestreaming destination, so many radio setups combine the audio with a static image or another visual source. Verify the requirements of the versioned output and test what YouTube receives before relying on an audio-only configuration.

Where do I find the YouTube stream key?

Find it in YouTube Studio’s Live Control Room after creating or selecting the stream. Copy the stream URL and key into the matching Liquidsoap output settings, and treat the key as secret. Reset it in the Stream tab if it has been exposed.

Why does an old Liquidsoap example fail with an unknown operator?

Liquidsoap’s YouTube output API changed between releases. Older examples may use output.youtube.live or a generic output.url, while the 2.4.5 reference documents output.youtube.live.rtmp. Check the installed version first, then use the operator and arguments documented for that release.

Should I use RTMP or RTMPS?

YouTube recommends RTMPS for encrypted ingest, but support depends on the endpoint and protocols available in your installed Liquidsoap and FFmpeg build. Check the current YouTube instructions and your build’s supported protocols before selecting the URL. A connection test in Live Control Room is more reliable than assuming an example will work unchanged.

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 ↗