Skip to content
streamneo.
Troubleshooting11 min read

FFmpeg Playlist Skips Gaming VOD Files During a YouTube Stream: Fix

Diagnose skipped gaming VODs in an FFmpeg playlist by checking input type, paths, stream compatibility, durations and transition logs.

sn.
StreamNeoPublished 4 October 2026
Worth sharing?

If FFmpeg skips gaming VOD files during a YouTube stream, first identify what kind of playlist it is reading, then inspect the entries around the first skipped transition. For a concat-demuxer list, the likely causes include rejected paths, inaccurate duration metadata, or differences in streams, codecs and time bases.

There is no reliable single fix without the command, playlist, logs and media metadata. Do not assume a loop flag or stream-copy setting can make incompatible files work; establish what the evidence shows before changing the workflow.

Identify the kind of playlist FFmpeg is reading

The word “playlist” can refer to different inputs. A concat-demuxer playlist is a text file containing entries such as file 'clip-a.mp4'; an HLS playlist is usually an M3U8 manifest. Those inputs are handled differently, so a concat-demuxer fix should not be applied until you confirm that the command is actually reading a concat list.

Look at the input arguments in the full FFmpeg command. A command using -f concat and a text-list input is a strong clue that the concat demuxer is involved. An M3U8 input points to a different path of investigation. Also check whether a wrapper, script or streaming application generates the list: the playlist you need to diagnose may not be the one you expected it to use.

The distinction matters because “skipped” can describe more than one symptom. FFmpeg may reject an entry before opening it, open it but report timestamp or decoding errors, or move to the next file at an unexpected point. A player or live ingest may also appear to skip material even though FFmpeg read it. Capture the messages at the transition rather than guessing from the picture alone.

For background on building a scheduled list, see this guide to FFmpeg livestream playlists on Ubuntu. Its playlist workflow is relevant, but the particular files still need to be checked individually when one gaming VOD behaves differently.

Find which files are skipped

Start with one reproducible occurrence. Write down the last file that plays correctly, the entry expected next, and what actually happens: a jump to a later file, a black or frozen picture, silence, a short fragment, or a stream stopping. “File B is skipped” is less useful than “the list moves from A to C without opening B” because those symptoms point to different checks.

Save the exact command and a copy of the playlist as used at the time. Keep the order intact, including any directives between file entries. If the command or logs include a YouTube stream key or another ingest credential, remove it before sharing them. A stream key is private access information, not diagnostic evidence.

Run a test that captures FFmpeg’s output around the transition. Record the messages before the previous file ends and as the next one should open. The first error is often more useful than later messages: a path error, for example, should be addressed before interpreting subsequent timestamp warnings. If a file opens successfully but playback jumps, compare its timing and stream information with the files either side of it.

Do not start by changing every file or rebuilding the whole playlist. Preserve a copy of the original, then test the affected entry and its neighbours in a small diagnostic list if appropriate. That keeps the symptom reproducible and makes it easier to tell whether a change helped or merely moved the failure elsewhere.

Check paths and playlist directives

Inspect the exact file entries, their order, spelling and relative or absolute paths. A relative path is interpreted in the context of the process running FFmpeg, which might not be the directory where you edited the playlist. This matters on a VPS or after a restart, when the working directory can differ from the one used during a manual test. Check that the FFmpeg process can read the file, not just that you can see it in a desktop file manager.

The concat demuxer has a safety check for paths. FFmpeg documents that its safe option defaults to 1; paths outside its safe subset may be rejected. Read the actual error first. If the list deliberately uses paths that the safety check does not accept, -safe 0 permits any filename, but it should be used only with a playlist whose contents you trust. It relaxes a path restriction; it does not repair a missing file or make an invalid media file readable. See the FFmpeg concat demuxer documentation for the option and the concat input format.

Check the file-list syntax as well. FFmpeg documents an ffconcat version 1.0 marker for automatic format recognition; if you rely on recognition, it must be the first line, with no extra space or byte-order mark. A malformed marker, unexpected directive or character encoding issue can make the file behave differently from a hand-written test. Keep directives such as duration attached to the intended entry and verify that quoting and paths survive whatever generates the list.

If the path error occurs only after the channel restarts, compare the live process’s working directory and permissions with your test environment. If the same entry fails in both places, focus on its spelling, syntax and accessibility. Do not switch to -safe 0 simply because it is a familiar troubleshooting flag; the log should show that the safe-path check is the obstacle.

Compare streams, codecs and time bases

For concat-demuxer concatenation, compare the files that cross the failing boundary. FFmpeg’s documentation says the files need the same streams, including codecs and time bases. A gaming VOD may look similar to the previous one while having a different audio layout, a missing audio stream, a different stream order, or a changed video codec. Visual similarity does not establish compatibility for stream copy.

Probe the affected files and compare their stream count and order, codec names, time bases, and relevant audio and video properties. Focus on the previous file, the suspected skipped file and the next one that does play. If the problematic VOD has two audio tracks where the others have one, for instance, that is a useful difference to investigate; it is not proof by itself that this is the cause. The command, logs and complete metadata must be read together.

A time base describes the units used for stream timestamps. Different time bases can affect how timestamps are represented across files, and the concat demuxer expects compatible stream layouts for this method. A mismatch is not fixed by changing a playlist order or by assuming that the files’ extensions tell the whole story. Likewise, matching codec names alone does not confirm matching stream layouts or time bases.

Audio and video may also end at different points within a file. The demuxer adjusts timestamps across the concatenated sequence, and a difference in stream lengths can produce gaps. Check whether audio or video ends first in an affected VOD and whether that matches the point where the transition looks wrong. This is particularly worth checking if playback continues but one component drops out or pauses.

If you routinely mix containers, the checks in how to stream mixed MP4 and MKV files to YouTube Live can help frame the container question. Container names alone do not establish that streams are compatible: inspect the actual tracks in each file. For audio-specific symptoms, compare the affected track with the considerations in this lofi stream audio settings guide, while keeping the diagnosis tied to your own files.

Inspect duration metadata and transition logs

The concat demuxer uses a file’s duration to place the following file in the sequence. If that duration is wrong, the next file’s timestamps can be positioned incorrectly and the transition may show artifacts. FFmpeg warns that duration values can be inaccurate, including values derived from bitrate or a truncated file. A VOD that appears to be skipped may therefore be a timing problem rather than a missing playlist entry.

Compare the duration FFmpeg reports with the playable content and the transition messages. Check that the VOD is complete and that its audio and video durations make sense. A file cut off while being copied or uploaded can have misleading metadata; do not treat a reported duration as proof that the recording contains that much usable media.

The concat list supports a duration directive that can override a stored duration. Use it only when you have a measured or otherwise defensible duration for the relevant file. Guessing a value can shift later timestamps and make the next transition worse. Keep a record of the original value and the test value so you can reverse the change if the evidence does not support it.

Read the log around both sides of the boundary. A path rejection points to list syntax or safety settings. A file that opens but produces timestamp warnings calls for closer attention to duration and stream timing. A decoding or stream error may call for comparing the stream layout or testing whether the media itself is damaged. Logs are clues, not verdicts: confirm them against the exact command and probe results.

Choose between compatible concatenation and normalisation

The choice of method depends on what the files actually contain. If the files have matching streams, codecs and time bases and their timing is sound, the concat demuxer may suit a workflow that avoids re-encoding. If they are incompatible, do not assume it can safely stream-copy them as one continuous sequence. Consider normalising the inputs to a consistent layout or using a filtering and re-encoding workflow.

FFmpeg’s FAQ distinguishes the concat demuxer from the concat filter: the filter is the re-encoding-oriented choice, while the demuxer can avoid re-encoding when file-level concatenation is suitable and the streams are compatible. See the FFmpeg concat FAQ. Re-encoding takes additional processing and can change the output, so it is not a harmless first step. It can nevertheless be the more appropriate route when the source files do not meet the demuxer’s compatibility requirements.

What the checks show Direction to investigate Trade-off
Matching streams, codecs and time bases; credible durations Test the concat demuxer with the existing files Avoids a re-encode, but depends on compatible inputs and sound timing
One path is rejected or inaccessible Correct the path or review the safe-path setting Changes the list or its access rules, not the media itself
Duration is demonstrably inaccurate Test a defensible duration override or repair the source Can correct timestamp placement, but an estimate can introduce a new shift
Stream layouts or timing differ Evaluate normalisation or the concat filter with re-encoding Adds processing and may alter output, but addresses incompatibility rather than hiding it

Normalisation is not a synonym for renaming a file or changing its extension. It means bringing relevant media properties into a consistent form, which requires decisions based on the actual audio and video streams and the intended output. Choose those settings from your workflow and current platform requirements; this evidence does not establish YouTube-specific ingest values. If only one VOD differs, test a copy of that file and inspect the output before replacing a source in a live rotation.

For a channel that should continue while your personal computer is off, StreamNeo removes the specific task of keeping a local machine running the upload-and-broadcast process; it does not make incompatible source files compatible, so resolve the media issue before relying on a playlist.

Test the playlist with the actual command

A test is useful only if it represents the real path that is failing. Keep the same FFmpeg command, playlist and relevant options, and test the section around the affected transition. A separate one-file playback check can confirm that a VOD opens, but it cannot show that the concat demuxer can place it correctly after the preceding file.

Change one thing at a time. If the log identifies a rejected path, test the corrected path before changing duration metadata. If the path works but the transition is mistimed, investigate duration and stream ends before choosing an override. If the streams differ, do not try to prove compatibility by changing unrelated timestamp flags; test a normalised copy or a re-encoding path instead.

Keep the original command and playlist unchanged as a rollback point. For each test, note the file order, the single change, the relevant log excerpt and what happened at the boundary. Confirm that a fix works across the affected transitions, not just the one that first drew attention. A playlist can contain several distinct problems, so success at one boundary does not validate every entry.

Before sharing a diagnostic bundle, remove the stream key and any private access details, but retain the arguments that explain the input type and concat settings. Include the relevant playlist lines and probe information for the files either side of the fault. Without those, someone may be able to suggest checks, but cannot responsibly name the cause or prescribe one fix.

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 FFmpeg skip one gaming VOD but play the others?

The skipped entry may have a path or syntax problem, or its streams, codecs, time bases or duration may differ from neighbouring files. The symptom alone does not identify which one. Compare the transition log and metadata for the affected files before changing the list.

Will -safe 0 fix a concat playlist that skips files?

Only if the log indicates that the concat demuxer is rejecting a path because of its safety check. FFmpeg documents that safe defaults to 1, and -safe 0 permits any filename. It will not correct inaccurate durations, incompatible streams or a missing file, and should be used only with trusted list contents.

Can the concat demuxer stream-copy mixed VOD files safely?

Do not assume so. FFmpeg requires matching streams, including codecs and time bases, for this concatenation method; differences in layout or timing need investigation. If the files are incompatible, evaluate normalisation or a filter and re-encoding workflow rather than relying on stream copy.

Should I add a duration line to every file entry?

Not without evidence that the stored duration is inaccurate. The demuxer uses durations to position following files, so an unsupported override can create a timestamp shift instead of fixing one. Add or change a duration only when you have a measured or otherwise defensible value and can test the transition.

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 Troubleshooting guides ↗ · All topics ↗