FFmpeg can play files in a chosen order from a concat manifest, but it does not provide a built-in calendar scheduler for selecting a different playlist each day. Create a manifest for each day, then use an external scheduler or wrapper—such as Linux cron—to select the right manifest and launch FFmpeg.
1. Create a concat manifest for each playlist
Make one text manifest for each day or schedule variant. Put the media paths in the order you want them played:
ffconcat version 1.0
file /srv/media/clip-one.mp4
file /srv/media/clip-two.mp4
Save this, for example, as /srv/playlists/monday.ffconcat, and create equivalent files for the other days. The ffconcat version 1.0 marker must be the first line, with no leading whitespace or byte-order mark, for FFmpeg to recognize the format automatically. Each directive belongs on its own line. For paths with spaces or special characters, follow FFmpeg’s documented escaping and quoting rules. The concat demuxer’s safe option defaults to 1, which rejects unsafe paths; setting it to 0 allows any filename, so do that only with manifests you trust. FFmpeg concat demuxer documentation.
2. Check that the media is suitable for concat
The concat demuxer is intended for files with matching streams, codecs, and time bases. As the FFmpeg documentation puts it, “All files must have the same streams (same codecs, same time base, etc.).” If the files do not match, normalize them in advance or use a re-encoding/filter workflow instead of assuming stream copy will work. FFmpeg concat demuxer documentation.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problems#1 Best Overall
- Get NVMe solid state performance with up to 1050MB/s read and 1000MB/s write speeds in a portable, high-capacity drive(1) (Based on internal testing; performance may be lower depending on host device & other factors. 1MB=1,000,000 bytes.)
- Up to 3-meter drop protection and IP65 water and dust resistance mean this tough drive can take a beating(3) (Previously rated for 2-meter drop protection and IP55 rating. Now qualified for the higher, stated specs.)
- Use the handy carabiner loop to secure it to your belt loop or backpack for extra peace of mind.
- Help keep private content private with the included password protection featuring 256‐bit AES hardware encryption.(3)
- Easily manage files and automatically free up space with the SanDisk Memory Zone app.(5). Non-Operating Temperature -20°C to 85°C
FFmpeg uses file durations to adjust timestamps between inputs. If a duration is missing or inaccurate, transitions can have timestamp problems or artifacts; the concat manifest supports a duration directive to override a duration when needed. Check the resulting output rather than assuming a manifest alone will resolve mismatched media.
3. Run the selected manifest with FFmpeg
For a file output, an illustrative command is:
ffmpeg -f concat -i /srv/playlists/monday.ffconcat -c copy /srv/output/monday.mp4
This is a command pattern, not a tested command for every set of files. Stream copy avoids re-encoding, but it depends on compatible inputs. If the goal is a live broadcast rather than a generated file, the output URL and options must match the destination platform; the FFmpeg references cited here do not establish any particular platform’s ingest requirements.
Rank #2
- Solid state performance with up to 800MB/s read speeds in a portable drive. (Based on internal testing; performance may be lower depending on host device, interface, usage conditions and other factors. 1MB=1,000,000 bytes.)
- Back up your content and memories on a storage solution that fits seamlessly into your mobile lifestyle.
- Take it with you on your adventures—up to two-meter drop protection means this durable drive can take a beating. (Based on internal testing.)
- Secure it to your belt loop or backpack for extra peace of mind thanks to the tough rubber hook.
- From Sandisk, a brand professional photographers trust to take on assignments.
4. Choose how the day’s manifest gets selected
One daily wrapper
For a recurring daily job, use a wrapper to determine the intended weekday, select the corresponding manifest, and invoke FFmpeg. Keep the mapping in one place so the playlist selection logic is easy to inspect and change. Use absolute paths to the FFmpeg executable, manifests, and media, since cron does not run with an interactive login shell’s environment.
For Linux, a cron entry can run that wrapper at midnight:
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Rank #3
- Easily store and access 2TB to content on the go with the Seagate Portable Drive, a USB external hard drive
- Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop
- To get set up, connect the portable hard drive to a computer for automatic recognition no software required
- This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
- The available storage capacity may vary.
0 0 * * * /usr/local/bin/run-daily-playlist >> /var/log/daily-playlist.log 2>&1
Set the schedule’s time zone deliberately. The cron implementation documented in the cited manual supports CRON_TZ; use it when the schedule must follow a particular local time zone. Otherwise, the host’s time-zone configuration and cron environment can affect which day the wrapper selects. Linux crontab manual.
Separate cron entries
You can instead put a separate scheduled entry for each day in the crontab. That makes the schedule visible in the crontab itself, but repeats the launch configuration and can be harder to maintain if paths or options change. The wrapper approach centralizes the weekday-to-manifest mapping; separate entries expose each scheduled launch directly.
Rank #4
- NEARLY 2X FASTER THAN OUR PREVIOUS GENERATION(8) – move 1,000 high-res photos in under 60 seconds(6) with up to 2000MB/s transfer speeds(2).
- IP65 RATING AND UP TO 3M DROP PROTECTION(3) – protects against spills and drops.
- POCKET-SIZED – fits easily in pockets and small bags.
- SPACE TO OWN YOUR AI CONTENT – speed and capacity to download your high-res clips and photo edits.
- 256-BIT AES ENCRYPTION(4) – helps keep private files secure with password protection.
5. Decide what should happen at midnight
A daily cron launch is enough for a batch job that creates one output per day. It does not, by itself, specify how to replace an FFmpeg process that is already running when the date changes. For continuously running output, use a process supervisor or a long-running wrapper designed to stop the old invocation and start the new one. Define what should happen after a failed launch or restart, and account for daylight-saving transitions if the schedule follows local time. Those choices depend on whether you are producing files or maintaining a continuous stream; cron’s time-zone and job behavior are described in the Linux crontab manual.
6. Troubleshoot common problems
- FFmpeg does not recognize the manifest automatically: Confirm
ffconcat version 1.0is exactly the first line, without leading whitespace or a byte-order mark. - A path with spaces or unusual characters fails: Apply the concat demuxer’s documented escaping and quoting rules. Review whether the default
safesetting rejects the path before considering a less restrictive setting; only disable safety checks for manifests you trust. - Concat reports incompatible streams or output artifacts appear: Check the files’ streams, codecs, and time bases. Normalize incompatible files or use a re-encoding/filter workflow. If timestamps are wrong between files, check whether durations are accurate and consider the manifest’s
durationdirective. - The wrong day’s playlist runs: Make the schedule’s time zone explicit and have the wrapper select the weekday in that same zone. Cron jobs have a defined environment, so do not rely on variables or paths available only in an interactive shell.
- The old playlist keeps running after midnight: A cron launch does not automatically define replacement of a live FFmpeg process. Add explicit stop-and-restart behavior through a supervisor or a wrapper, and decide how it should respond to failures.
- A live destination rejects the output: Verify the destination’s current ingest requirements and configure the output accordingly. The concat and cron references describe playlist sequencing and scheduling, not platform-specific live settings.
Or let it run in the cloud
If your goal is a YouTube channel that plays uploaded videos continuously, StreamNeo is an alternative to running this FFmpeg schedule yourself. Upload your recording or build a playlist, add your YouTube stream key, and go live. Nothing has to stay on at home; StreamNeo loops the uploaded video from the cloud. It streams the uploaded file as made, up to 4K 60fps, at one price per slot regardless of quality, and automatically recovers if YouTube drops the stream. The first day is free with no card. Monthly pricing is $9.99 per month. StreamNeo is for YouTube and uploaded videos, not a live camera feed. Learn about StreamNeo, then start your free day.
Recommended Free Tools
Quick Recap
Best Value
- Easily store and access 5TB of content on the go with the Seagate portable drive, a USB external hard Drive
- Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop
- To get set up, connect the portable hard drive to a computer for automatic recognition software required
- This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
- The available storage capacity may vary.
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.




