For a 24/7 YouTube lofi radio, OBS Studio can play a local playlist, shuffle its order and loop it into an encoder stream. Its documented shuffle controls do not promise a fresh order on every loop or prevent tracks repeating across continuous cycles.
If ordinary variety is enough, an OBS VLC Video source is a practical starting point. If a track must not play again until every eligible track has been heard, use a history-aware scheduler that stores what has played; do not rely on shuffle alone.
Prepare a library you can keep on air
Start with audio or video files that you have the rights to use in a continuous livestream. A track labelled “royalty free” is not automatically cleared for every use: check that the licence covers livestreaming, the territory and duration you need, and any attribution or monetisation conditions. YouTube's Livestream terms and conditions place responsibility on the creator to hold the necessary rights for live content, including music licensing rights.
Rights and playback are separate problems. A file can play perfectly in OBS while still triggering a copyright claim or interruption on YouTube. YouTube warns that even licensed third-party content may interrupt a live stream if the rights holder has not allowlisted the channel for Content ID. Confirm the arrangement with the rights holder rather than assuming that a licence alone will prevent an automated interruption.
Before importing files, make a working folder and give tracks clear, stable names. Keep one copy of the source files somewhere other than the machine running OBS, and avoid changing paths after building the playlist. If OBS cannot find a moved file, the playlist entry may be present but silent or skipped. A simple inventory with filename, rights status and source makes troubleshooting easier when a track is questioned later.
Check the actual files before a long run. Listen for silence at the head or tail, abrupt cuts, unexpected spoken material and large differences in loudness. Normalise or edit only where your rights permit and where your workflow supports it. If your stream uses a static visual, make sure the file format still produces a valid picture; for audio-only tracks, pair them with a suitable visual rather than assuming the playlist source will create one.
A longer library increases the time before a loop returns to the first entry, but it does not create a strict no-repeat rule. Decide what matters: a shuffled order that is varied enough for background listening, or a guarantee that every track in a defined pool is played before any is repeated. Those are different requirements and call for different tools.
Add a playlist source in OBS
OBS Studio's playlist-capable source is called VLC Video. It relies on VLC being installed separately. The OBS VLC Video Source guide notes that VLC must match OBS's architecture; for example, 64-bit OBS requires 64-bit VLC. Install the matching version, reopen OBS and add a VLC Video source to a scene.
Create a scene for the radio output, then add the playlist files to the source. You can use a still image, visualiser or other prepared picture in the scene if the music files themselves do not contain video. Preview the scene and confirm that both picture and sound are present. Keep the scene uncomplicated until the playlist is stable; elaborate overlays do not solve a missing-file or audio-level problem.
In the source properties, add each file in the intended pool and check that the list is complete. Do not treat the visible order as proof that every file will decode correctly. Play through representative files, including those with different formats, lengths or encoding, and watch the source transition from one item to the next. Keep your media paths stable and retain the library's inventory for later edits.
The built-in Media Source in OBS is suitable for an individual file, but the VLC Video source is the documented route for a playlist. If you choose another tool to schedule tracks, check that it can output to the OBS scene or directly to an encoder, and test the hand-off rather than assuming compatibility.
For a separate example of a playlist source issue, the steps in fixing an OBS playlist that stops between videos can help distinguish a source transition fault from a YouTube connection fault.
Set loop and shuffle deliberately
The VLC Video source exposes separate controls for Loop Playlist and Shuffle Playlist. Looping tells the source to start again when it reaches the end of its files. Shuffle randomises the media-file order. Enable both if you want an ordered playlist to be played in a shuffled sequence and then looped, but understand what those settings do and what they do not establish.
After enabling the controls, test playback from the start and let the source move between files. Check the audio during transitions, confirm that the last entry leads back to playback, and note the order you hear. If you edit the list or its settings, repeat the test: applying changed settings can alter the current shuffled order.
Do not infer a reshuffle at the end of every pass. OBS documentation describes shuffle as a source control, not as a history-aware service that draws a new permutation after each cycle. This distinction matters for a channel that runs unattended. A playlist that appears varied during the first session may still settle into a repeatable sequence across later loops.
If the stream has a visual loop as well as a music playlist, test both independently. A frozen picture can make an otherwise healthy audio stream look broken; a moving visual cannot prove the music source is advancing. Check the OBS mixer meter and listen to the output you actually intend viewers to receive.
Shuffle is not the same as no repeats
A shuffled list is an ordering of the files. It is not, by itself, a rule that records a track as played and excludes it until the rest of the library has been heard. The OBS VLC source code applies shuffle when source settings are updated; it does not document a history-aware draw at every track boundary or a guaranteed new permutation at each loop.
This is the key limit behind reports that a playlist shuffles once and later repeats that order. Treat that behaviour as a possible consequence of the source's controls, not as a promise that every OBS setup will reproduce the exact same sequence. The reliable point is narrower: the documented controls do not promise fresh shuffling across loops or strict de-duplication across continuous cycles.
For background listening, that may be acceptable. If your library is broad and the channel is intended as ambient company, an occasional return to a familiar track is often less disruptive than adding a more complex scheduling chain. You can rebuild or reorder the list between planned broadcast sessions to vary its starting sequence, but that is an operational task, not a guarantee against repeats while a session remains live.
For a strict requirement, define the pool and the reset rule. “Do not repeat” can mean no duplicate in the next few tracks, no repeat during one full pass, or no repeat until every item in the entire library has played. A scheduler cannot enforce a useful rule unless the eligible pool and reset point are clear.
| Approach | What it provides | Repeat behaviour | Best fit |
|---|---|---|---|
| OBS VLC Video with shuffle and loop | A playlist source with shuffled order and looping controls | A shuffled order can recur on later loops; cross-cycle de-duplication is not established | Straightforward ambient variety |
| History-aware scheduler | Selection based on stable track IDs and recorded play history | Can hold back played tracks until the defined pool is exhausted, if state is retained correctly | A strict no-repeat rule |
Use a history-aware scheduler when repeats are unacceptable
A history-aware scheduler needs more than a random button. It should assign each track a stable identity, record which IDs have played, choose only from eligible unplayed items, and reset history only when the whole defined pool has been exhausted. This is what changes the behaviour from “shuffle a list” to “do not select a played item yet”.
Before choosing a scheduler, check how it stores its state. If OBS or the computer restarts, does the schedule resume from its saved history, or does it begin a new pass and potentially repeat yesterday's tracks? Verify support for your file formats, transitions and output path. Also check whether you can see what is playing and detect a stalled source while away from the studio.
This research does not verify a particular plugin or product that meets those requirements, so test the scheduler you select with a copy of your library before putting it on a public channel. Simulate a restart, remove or replace a track, and confirm that its history stays consistent. A scheduler that forgets its state after a crash may meet the rule during normal playback but fail precisely when recovery is needed.
There is a trade-off. OBS alone is simpler to assemble and understand, and it may be entirely adequate for a lofi station where variety matters more than a strict rotation. A history-aware layer adds state and another point to test, but it is the sensible direction when repeating a track before the pool is exhausted is not acceptable. For a related playlist workflow with a different use case, see keeping background music consistent across a YouTube store promo loop.
A scheduler also does not clear music rights or ensure the stream reaches YouTube. Keep rights records alongside the library and preserve a recovery plan for the broadcast itself. For a discussion of how rights arrangements can affect a live music channel, see splitting revenue with a music rights holder.
Send the programme to YouTube Live
YouTube Live receives an encoder feed from OBS. In YouTube Studio, open Live Control Room and create or select an encoder stream. Copy the stream URL and stream key into OBS's streaming settings, start the OBS output and wait for the incoming preview. Check that the expected picture and audio arrive before you take the stream live. YouTube's encoder setup guide describes this workflow.
Live streaming eligibility can depend on the channel's current status. Check Studio and YouTube's current getting started guidance rather than relying on an old setup note. Keep the stream key private: anyone who can use it may be able to send an encoder feed to your broadcast.
Before making the channel public, run a short private or unlisted test. Confirm that the playlist advances, the loop transition works, the audio is audible without clipping, the scene is correct and the Live Control Room reports a healthy incoming feed. A local preview in OBS is not enough; the test should include the path from OBS to YouTube.
A playlist loop does not make the broadcast itself resilient. OBS must continue producing and sending the programme, and a network disruption can break the live feed. YouTube's stream health and monitoring guidance advises checking preview and stream quality. Leave upload bandwidth headroom, use a connection you have tested, and decide how you will notice and recover from a stopped output.
If managing a computer and reconnecting after a drop is the part that makes an always-on channel difficult, StreamNeo removes that particular burden by turning an uploaded video into a YouTube live stream that runs with your computer switched off and is monitored and restarted if it drops. It is YouTube-only; it does not solve music rights or change the need to choose an appropriate rotation strategy.
Test the sequence and monitor playback
Before a long run, keep a written test checklist. Confirm that every intended file appears in the source, representative files play, the picture remains present, and the audio does not disappear at a transition. Listen to the stream preview rather than relying only on meters, since meters show signal but not whether the right track is playing or whether the sound is distorted.
Test the end of the playlist. Let the final item finish and observe whether playback returns to the beginning. If shuffle is enabled, note the sequence and test again after applying settings or reopening the project. This helps you understand the behaviour of your actual setup without mistaking one observed order for a guarantee on future cycles.
For a strict scheduler, test the state as well as the sound. Let it play enough entries to verify that played IDs are excluded, then restart the scheduler or machine and confirm that history is retained. Test what happens if a file is unavailable and whether the scheduler skips it cleanly or stalls. Keep a manual way to identify the current programme and intervene if the output stops.
Monitor the YouTube Live Control Room after launch. Watch the incoming stream status and audio/video quality, and arrange a way to check the channel when you are not at the production computer. If you make changes to files, source settings or network equipment, test the full signal path again. A 24/7 label describes the intended schedule, not a guarantee that a particular device, connection or channel will never need attention.
Archive behaviour is separate from live availability. YouTube says streams under 12 hours can be automatically archived, while a stream exceeding 12 hours may not be captured at all; DVR rewind may also be limited for very long streams. Check the current YouTube archive and DVR guidance. If a replay matters, record locally and consider planned sessions with an announced restart, accepting that ending and restarting interrupts the live audience.
If your setup depends on OBS staying active on a computer, plan for sleep settings, power interruptions and recovery rather than assuming the playlist source handles them. The practical considerations overlap with running a 24/7 devotional YouTube stream from cloud compute, though the choice of where to run a stream does not alter the shuffle limitation.
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
Does OBS reshuffle the playlist every time it loops?
OBS documents shuffle and loop as playlist controls, but it does not promise a new random order at each loop. Treat the shuffled order as capable of recurring rather than assuming every pass will be freshly mixed.
Can OBS guarantee that a track will not repeat until every other track has played?
No such guarantee is established by the documented shuffle control. For that rule, use a scheduler that tracks stable track IDs, excludes played items until the pool is exhausted, and retains its history after a restart.
Is a larger playlist enough to prevent repeats?
A larger pool can make returns less frequent in practice, but it does not change the selection rule. If repeats are unacceptable before a full pass, use a history-aware scheduler and test its state recovery.
Will a looped playlist keep the YouTube stream live if OBS or the connection stops?
No. The playlist controls what the source plays; OBS and the network still have to send the programme to YouTube. Test monitoring and recovery separately from track rotation, and check YouTube's current stream health guidance.