If episodes repeat in an FFmpeg-powered YouTube podcast stream, first find out which list is repeating them: the local FFmpeg concat script or a playlist hosted on YouTube. Remove a duplicate from the list that actually contains it; changing the FFmpeg script will not remove an entry from a YouTube playlist, and vice versa.
A timing glitch, a stream restart, and a duplicated playlist entry can look similar while having different causes. Check when and where the repeat appears before changing codecs, stream keys or automation. The steps below separate those problems so you can make one useful change at a time.
Locate where the episode repeats
Start with the point at which you can observe the repeat. Is the same file played twice in the broadcast, are two copies of a video visible in a YouTube playlist, or does the entire sequence begin again after reaching its end? These clues point to different parts of the setup. Do not assume that every repeat is caused by FFmpeg simply because FFmpeg is involved in sending the stream.
If FFmpeg plays local files, identify the exact concat file named in the command. There may be several similarly named lists on your computer, but only the file passed to FFmpeg’s input option determines this run. An edit to a different copy has no effect. Write down the command or inspect the shortcut or script that launches it, then follow the path after the input option to the actual text file.
If you are looking at a YouTube playlist page and see the same episode entered twice, inspect that playlist in YouTube. It has its own list of videos and its own controls. YouTube’s guidance on editing and reordering playlist entries describes how to remove an item there. That action changes the hosted playlist, not your local concat script.
A sequence that runs through once and then starts again may be a loop or restart setting rather than a duplicate entry. Inspect the whole FFmpeg command and any process that relaunches it. If you are building a scheduled rotation of pre-recorded material, the choice of a file sequence versus a YouTube playlist also affects how you manage it; the guide to using playlists for pre-recorded live streaming can help frame that decision.
Inspect the FFmpeg concat list
The concat demuxer reads the files in a text script one after another. A basic list might look like this:
ffconcat version 1.0
file 'episode-01.mp4'
file 'episode-02.mp4'
file 'episode-03.mp4'
Open the file that the running command actually uses. Read every file directive from top to bottom and compare it with your intended episode order, rather than checking only the first few lines or relying on a separate spreadsheet. If episode-02.mp4 appears twice, FFmpeg has been instructed to include that path twice. The demuxer does not know that you intended each episode to appear only once.
Check paths, not just the titles you expect the audience to see. episode-02.mp4 and episode-02-final.mp4 may be different files, while the same file can appear under a relative path and an absolute path. A similarly named copy can also make a list look correct at a glance. Confirm the exact spelling and location of any suspicious entry against the files on disk.
The header matters when FFmpeg recognises the file automatically as an ffconcat script. The exact line ffconcat version 1.0 must be first, with no blank line or other text before it. If you instead specify a format explicitly in the command, recognition works differently, so avoid changing the header and command at the same time while diagnosing an episode repeat. See the FFmpeg concat demuxer documentation for its input format and requirements.
Paths containing spaces or special characters need correct quoting or escaping. A path that FFmpeg cannot parse as intended is a path problem, not proof that the same episode was deliberately added twice. Make a small, reversible edit, preserve a copy of the original file, and review the resulting text before restarting the broadcast.
Remove duplicate paths and verify order
When you find the same path more than once by mistake, remove only the unwanted directive. Then read the remaining entries again from top to bottom. The objective is not merely to reduce the number of lines: it is to leave each intended episode in the position where you want viewers to hear or see it.
For example, if your desired order is an introduction, episode one, episode two, and a closing message, the concat list should reflect that order explicitly. Do not sort filenames alphabetically unless that is also the intended sequence; names such as episode-10 can sort before episode-2, depending on the naming pattern. A hand-checked sequence is often safer than assuming filenames encode the right order.
Before restarting, check that each remaining path resolves to the intended file and that none of the retained entries is an old edit, trailer or alternate version. If you change filenames or move files, update the corresponding path and verify it again. Keep a copy of the previous list so you can restore it if the change introduces a different fault.
Once the edited script is ready, make sure your launch command points to that file. This catches a common source of confusion: the list on screen is clean, but the running process still reads an older copy from another folder. If you need the broader setup context, the instructions for installing FFmpeg on Oracle Linux for a 24/7 YouTube stream cover the command-line environment, while the duplicate-path check here remains the same regardless of operating system.
Check the YouTube playlist in Studio
A YouTube-hosted playlist is separate from the list FFmpeg reads. If the repeat appears in the playlist itself, open the correct playlist in YouTube Studio or the relevant YouTube playlist controls, find the repeated video entry, remove the unwanted entry and check the resulting order. YouTube’s playlist controls let you manage those items without editing local media files.
Be clear about the scope of the change. Removing a video from a hosted playlist corrects the hosted list; it does not edit a concat file on your computer. Removing a line from the concat file does not remove a duplicate shown in YouTube’s playlist. If both lists are used in your workflow, inspect both and decide which one is the source for the playback you are troubleshooting.
After the edit, revisit the playlist and check that the remaining entries are in the intended order. Do not infer that a live broadcast has changed just because a playlist page now looks right: the stream may be playing from a local file sequence or from an already running process. Confirm how the current broadcast is being produced before expecting a playlist edit to alter it.
This distinction is also useful when running several shows. A YouTube playlist can organise videos for viewers, while FFmpeg can use a separate sequence of local files for an encoder feed. If your aim is to rotate different podcast programmes on one channel, the practical considerations in streaming multiple podcast shows on one YouTube Live channel may help you decide which arrangement you are actually maintaining.
Keep media compatibility separate
A list can contain the right files in the right order and still produce awkward transitions. That is a different issue from duplicated entries. FFmpeg’s concat demuxer requires the input files to have matching stream layouts, codecs and time bases. If they differ, you may see playback or transition problems even though no file path appears twice in the script.
The demuxer also uses each file’s duration when setting timestamps for the next file. Inaccurate duration information can therefore contribute to timing artefacts. A brief jump, gap or overlap around a boundary does not by itself show that FFmpeg has played an episode twice. Compare the actual list with what happens at the transition before changing the list or media format.
If the files are not suitable for the concat demuxer, prepare compatible inputs or consider a different concatenation method. FFmpeg’s concatenation FAQ distinguishes the concat filter, which can be used when re-encoding is needed, from approaches suited to joining compatible inputs without re-encoding. Choose based on the files and the workflow, not as a speculative fix for a duplicate path.
| What you need | Method to consider | Practical trade-off |
|---|---|---|
| Join files whose streams suit the same layout, codecs and time base | Concat demuxer | Reads a script sequentially and can avoid re-encoding in suitable cases; check compatibility and timing information. |
| Join files while changing or normalising their media properties | Concat filter | Re-encoding may be part of the process, so allow for a conversion step and verify the output. |
| Join at the container or file level | Concat protocol | Applicability depends on container support; it is a separate method, not a general repair for a playlist duplicate. |
These methods solve different media-joining needs. None edits the entries in a YouTube-hosted playlist. If the episode appears twice as a list item, fix that list; if the entries are correct but a boundary behaves badly, investigate compatibility and timestamps separately.
Check the stream connection separately
The stream destination is another independent layer. YouTube’s encoder workflow tells you to obtain the stream URL and key from Live Control Room and enter them in the encoder. Those connection details determine where the feed is sent; they do not decide which local podcast files the concat demuxer reads. You can follow YouTube’s instructions for creating a live stream with an encoder to check that setup.
If you are diagnosing an episode repeat, avoid changing the stream key or destination unless there is a separate connection problem. A key change will not remove a repeated file line or a duplicate entry in a hosted playlist. Likewise, correcting the file list will not resolve an encoder that is pointed at the wrong stream destination.
Keep a note of which component you changed and what you observed afterwards. This is particularly useful if a broadcast is managed from a computer that may restart after power loss: the recovery process and the episode sequence are separate checks. For background on the recovery side, see keeping OBS streaming to YouTube after a power cut in India. That situation can explain why a process starts again, but it does not establish why an episode is repeated.
Test the corrected sequence
Do not wait for a full day’s broadcast to decide whether a small edit helped. Run a short, controlled test with a copy of the intended sequence or monitor the beginning and the point where the earlier repeat occurred. Check the actual output, not only the text file: verify that the expected episode follows the previous one and that the unwanted repeat is gone.
If the correction was to the local concat script, confirm that the relaunched command names the edited file. Watch or listen across the boundary around the removed entry. If a timing jump remains but the episode no longer plays twice, treat that as a separate compatibility or duration issue rather than putting the duplicate line back.
If the correction was to a YouTube playlist, refresh or reopen the playlist and inspect the entries and order. Then establish whether the live stream is driven by that hosted playlist or by a local FFmpeg process. The playlist can be correct while an already-running local process continues to follow its own input sequence.
If the entire programme begins again at the end, review loop options, scheduled restarts and any wrapper script that launches FFmpeg. A repeat after a complete pass differs from an adjacent duplicate path. Test one configuration change at a time, keep the original command and list, and note when the sequence restarts. That record makes it easier to distinguish a list error from an intentional loop or a process recovery.
For a 24/7 channel, choose a test window that lets you observe the relevant transition without leaving a broken sequence unattended. Check the channel’s live view and the source playback if possible. A clean local list is useful evidence, but it is not by itself proof that YouTube’s playlist was changed or that the running encoder has loaded the new list.
If maintaining the process through overnight interruptions is the part that causes repeated manual work, StreamNeo can take the uploaded-file playback out of your local computer’s daily running routine; keep the episode order and YouTube playlist checks as separate tasks.
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
Why does my FFmpeg playlist keep repeating an episode?
If FFmpeg is reading a concat script, check whether the same path appears more than once in the exact file named by the running command. If the list is correct, inspect loop or restart behaviour and distinguish a timing artefact from a second playback. The symptom alone does not identify which layer is responsible.
Will removing a line from the concat file fix a duplicate in my YouTube playlist?
No. A concat file controls the local sequence read by FFmpeg, while a YouTube-hosted playlist has its own entries and editing controls. Remove the repeated video from the hosted playlist if that is where the duplicate appears.
Can incompatible media make FFmpeg repeat an episode?
Incompatible streams or inaccurate duration information can cause playback or timing artefacts, but they do not establish that an episode path was listed twice. First verify the entries and order, then investigate compatibility if transitions remain wrong. The concat demuxer has matching-stream requirements.
Does changing my YouTube stream key change which episode plays?
No. The stream URL and key configure the encoder’s connection to YouTube; the local concat script or another playback source determines the episodes. Change connection settings only when you have a connection issue, not to remove a duplicate item.