Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallIf FFmpeg reports Unsafe file name, the concat demuxer is rejecting a playlist entry under its default path-safety rules. If it reports No such file or directory, the entry is not resolving to a readable file from the playlist’s effective location. Keep the playlist beside its clips and use safe relative paths when possible; for intentional absolute paths to files you trust, put -safe 0 before -i.
First, identify which path problem you have
FFmpeg’s concat demuxer reads a text playlist containing one file directive for each input. The two common errors point to different checks:
Unsafe file name: the entry was rejected by the concat demuxer’s safety validation. Absolute paths commonly trigger this when the defaultsafe=1is in effect.No such file or directory: the entry did not resolve to a file at the path FFmpeg tried, or the file is missing or inaccessible.
Fixing a path only gets FFmpeg to the media. It does not establish that the clips can be joined without re-encoding, or that the output options match YouTube’s selected ingest protocol.
Make the playlist paths resolve predictably
Use relative paths from a persistent playlist
For the least surprising setup, put the playlist in the same directory as the promo clips and use filenames relative to that playlist. For example, if the files are in /home/ubuntu/shop-promo/, save this as /home/ubuntu/shop-promo/playlist.ffconcat:
Free tools Windows power users keep installed
One-click scans. No signup required.
#1 Best Overall
ffconcat version 1.0
file 'promo-01.mp4'
file 'promo-02.mp4'
The first line identifies the concat script format. Each following file line adds one media input, in playlist order. With the playlist alongside the clips, these relative entries have an uncomplicated base location.
Use absolute paths only when you intend to bypass the default check
The concat demuxer defaults to safe=1. Under that setting, a path must be relative, contain no protocol specification, and use permitted portable characters in each component; components cannot begin with a period. If files live elsewhere and you want to name them absolutely, use entries such as:
ffconcat version 1.0
file '/home/ubuntu/shop-promo/promo-01.mp4'
file '/home/ubuntu/shop-promo/promo-02.mp4'
For trusted playlist contents, disable that path screening with -safe 0 as an input option before -i. This permits unsafe path forms; it is not a repair for a misspelled path, missing file, or permission problem. Do not use it casually with playlist contents you do not trust.
Rank #2
Quote names with spaces and special characters
Quote or escape whitespace and special characters using the concat script’s syntax. For example, a filename containing spaces can be represented as file 'promo day one.mp4'. An embedded single quote requires FFmpeg’s concat-script quoting and escaping rules; shell quoting rules alone do not define how the text inside the playlist is parsed. When possible, rename clips to simple portable filenames to reduce quoting errors.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsRun FFmpeg with the matching input option
Relative-path example
From the directory containing playlist.ffconcat and the clips, a basic stream-copy pattern is:
ffmpeg -re -stream_loop -1 -f concat -i playlist.ffconcat -c copy -f flv "$YOUTUBE_RTMP_URL"
This is an illustrative RTMP-shaped command, not a tested, complete YouTube encoder configuration. The source streams must be suitable for stream-copy concatenation, and your output settings and destination must match the ingest setup actually selected in YouTube Studio.
Rank #3
Absolute-path example
For a playlist with trusted absolute entries, add -safe 0 before the input:
ffmpeg -re -stream_loop -1 -f concat -safe 0 -i playlist.ffconcat -c copy -f flv "$YOUTUBE_RTMP_URL"
Options that configure an input belong before that input’s -i; placing -safe 0 after -i will not configure the concat input as intended. Store the actual ingest URL and stream key securely. Do not put a stream key in a public script, article, or logs that others can read.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Check the playlist’s actual base location
Relative paths must be written for the playlist’s effective location, not automatically for the directory where you launched the shell. A normal playlist saved beside the clips makes that location easy to reason about. A playlist supplied through process substitution can instead be presented through a temporary path; relative entries may then be resolved from a different location than expected.
Rank #4
If paths work from a saved playlist but fail when you switch to process substitution, keep the playlist as a persistent file or use a path strategy that matches its effective location. For diagnosis, print or inspect the exact playlist contents and confirm where that playlist is stored before changing the entries.
Verify every file and the Ubuntu permissions
- Open the playlist and check every filename, directory component, capitalization, and extension against the actual file. Linux paths are case-sensitive.
- Check that each listed file exists at the path represented by the entry, relative to the playlist when using a relative path.
- Confirm the same Ubuntu user that runs FFmpeg can read the playlist and every media file. A path can be correct but inaccessible because of ownership or permissions.
- Rerun FFmpeg and read the exact error. If it changes from an unsafe-name error to a missing-file error, the safety check was bypassed, but path resolution still needs correction.
No specific installed FFmpeg version, playlist, command, file permissions, or media properties are known here. If the general checks do not resolve the problem, those details are needed to diagnose the individual setup.
After paths work, check whether the clips can be concatenated
The concat demuxer expects compatible streams. If clips differ in stream layout or codecs, -c copy may fail or produce unsuitable output even though every path is valid. Compare their video and audio streams after resolving the path error. Where they cannot be concatenated as-is, FFmpeg’s concat filter can be used with re-encoding to normalize the inputs; that is a media-compatibility solution, not a path fix.
Best Value
Do not mix up YouTube RTMP and HLS ingest
The command examples above show an RTMP-shaped output, but the title alone does not establish which ingest protocol you selected. YouTube’s HLS requirements apply specifically when sending HLS: use TS segments of 1–4 seconds, a rolling playlist with no more than five outstanding segments, no byte ranges, HTTPS POST/PUT, and no encryption beyond HTTPS. YouTube also notes that HLS has higher latency than continuous RTMP. These HLS settings should not be copied into an RTMP setup; confirm the protocol and its settings in your YouTube streaming configuration.
Troubleshoot by symptom
| Symptom | Likely cause | What to check or change |
|---|---|---|
Unsafe file name |
The entry violates concat demuxer safe-path validation, often because it is absolute. | Prefer a safe relative path. If an absolute path is intentional and the playlist is trusted, add -safe 0 before -i. |
No such file or directory |
The path is relative to a different playlist location than expected, or the name does not match. | Check the playlist’s effective location, filename spelling and case, and whether the file exists there. |
| The path appears correct, but FFmpeg cannot read it | The FFmpeg process’s Ubuntu user may not have access to the playlist or media. | Check readability and permissions for the same user that launches FFmpeg. |
| Paths resolve, but stream-copy concat fails | The clips’ streams may not be compatible for concat demuxer stream copying. | Compare stream layouts and codecs; use a concat-filter workflow with re-encoding if normalization is required. |
| FFmpeg runs, but YouTube does not accept the stream | The output protocol or settings may not match the selected YouTube ingest method. | Confirm RTMP versus HLS before applying protocol-specific output settings. For HLS, follow YouTube’s HLS requirements rather than assuming RTMP options apply. |
Or let it run in the cloud
If the goal is to keep a prerecorded shop promo looping on YouTube, StreamNeo is an alternative to running FFmpeg continuously on Ubuntu: upload the video, add your YouTube stream key once, and go live. The cloud keeps it running, so nothing has to stay on at home; it streams the upload as made, up to 4K 60fps, at one price per slot; and it automatically recovers if YouTube drops the stream. The first day is free with no card. Monthly pricing is $9.99 per month. StreamNeo plays uploaded videos and streams to YouTube only. See StreamNeo, or start the free first day.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




