You can stream a pre-recorded playlist from a Mac mini to YouTube Live without re-encoding if the files have compatible encoded audio and video streams. FFmpeg’s concat demuxer can read an ordered list of local files, and -c copy can pass their existing packets to YouTube without a new encode pass.
That condition matters: stream copy does not convert codecs, resize video, change frame rate, add overlays, or repair mismatched media. Check the files as a group first; if their streams or timing do not line up, make consistent files before the broadcast or use a workflow that re-encodes.
What “without re-encoding” means
Encoding turns decoded picture and sound into compressed streams. Re-encoding decodes those streams and creates new compressed audio or video, which can change quality and requires processing. Stream copy instead passes compatible encoded packets through FFmpeg without performing that decode-and-encode cycle.
For a playlist, there are two related jobs: joining the files logically in the desired order, then sending the resulting timeline to YouTube as a live encoder feed. FFmpeg’s concat demuxer handles the ordered input list; the -c copy option requests that the media streams be copied rather than encoded again. The list is local to your Mac mini. It is not a playlist uploaded to YouTube, and YouTube does not read playlist.txt.
The benefit is that you avoid a fresh encode when the input files already suit the output path. The trade-off is that you have little room to alter the media. A filter that adds a logo or text, a resize, a frame-rate conversion, or a change to the audio all require processing the relevant stream rather than simply copying it. Do not expect stream copy to make a set of different files behave like one uniform export.
This method is most useful when the videos have already been prepared consistently and your priority is sending their existing encoded streams. If a playlist mixes exports from different sources, inspect it before choosing the no-re-encode route. A straightforward OBS stream-key setup for an always-on loop is a different route if you need a graphical production workflow, but any workflow that changes media may encode it.
Check that playlist files are compatible
Concat stream copy is conditional on the files being compatible with each other and with the output. In practice, inspect whether they expose matching stream structure, compatible codecs, and compatible timing information such as time bases. Audio and video streams should be present and arranged consistently across the files. A filename extension alone cannot establish any of this.
You can start by probing each file with FFmpeg tools available in your installation, then compare the reported streams and properties across the playlist. Check the video and audio codec, dimensions, frame rate, channel layout, stream order, and duration or timestamp behaviour. These checks help reveal differences, but a report that looks similar does not prove that every concat edge will work. Test the exact ordered playlist before scheduling an important event.
A practical example is a devotional channel with six MP4 exports. If all six use the same video and audio formats, matching dimensions and frame rate, and compatible stream layouts and timing, concat with stream copy is a reasonable candidate to test. If one export has a different frame size, variable timing, another audio arrangement, or a codec the others do not use, stream copy cannot reconcile that difference. Keep it out of the copy workflow until it has been normalised or re-exported to match.
Also check that the selected output container can carry the streams you intend to send. The command below uses an FLV output for an RTMP-style ingest path, but that example is not a universal promise that every source/container combination will work unchanged. Confirm that the FFmpeg build installed on your Mac mini supports the output protocol and test the exact files. YouTube’s encoder setup guidance explains the general live encoder connection; follow the current instructions shown for your event.
If your content is assembled from several pieces, think about the join as well as the individual files. A mismatch at a boundary can appear as a pause, abrupt sound change, timestamp issue, or failed output even when each file plays on its own. For symptoms after a loop, this guide to a black screen after a video loops may help distinguish a looping problem from a source-file incompatibility.
Prepare the FFmpeg concat input
Create a plain-text file containing one file line for each source, in the order you want viewers to see them. Use full paths to avoid depending on the terminal’s current folder. For example:
file '/Users/you/Videos/opening.mp4'
file '/Users/you/Videos/main-set.mp4'
file '/Users/you/Videos/closing.mp4'
Save it as playlist.txt in a location you can find. The order in the text file is the order FFmpeg reads the files. If filenames or paths contain apostrophes, spaces, or other characters that need escaping, use FFmpeg’s concat demuxer syntax rather than assuming a shell-style path will be interpreted exactly as you expect. Keep the list private if it reveals personal file locations; it should never contain your stream key.
The concat demuxer supports a safe-path setting. The example command uses -safe 0, which permits paths outside the restricted safe syntax. Use it only for a list you created and trust, and make sure each path points to the intended local file. If you can place the playlist and media in a suitable working folder using relative paths, that may make the list simpler to move and review.
Before connecting to YouTube, run the concat input locally and inspect the output or test it with a short session. Errors at this stage are easier to diagnose than errors after you have announced a live event. A concat input list is not a media conversion step: it does not align mismatched tracks, change their formats, or add transitions between files. If you need those changes, prepare a new consistent set first.
Create the YouTube encoder event
In YouTube Studio, open Live Control Room and create or schedule an encoder-based live stream. Copy the ingest URL and stream key shown for that event. You will need both for the FFmpeg destination. YouTube notes that first-time enablement of live streaming can take up to 24 hours, so confirm that your channel can stream before planning a broadcast. Check current eligibility and any restrictions in Studio rather than relying on an old checklist.
Treat the stream key like a password. Do not publish it in a script, screenshot, shared text file, public repository, or article. If you think it has been exposed, YouTube documents resetting it in Live Control Room. Keep the destination as a placeholder while preparing or sharing commands, then insert the real event credentials only in your private working environment.
Choose the event’s visibility deliberately. Public, private, and unlisted streams serve different audiences; the setting does not alter whether FFmpeg can connect. Make sure the prerecorded picture and sound are cleared for the intended distribution, and review YouTube’s current requirements and Community Guidelines. An encoder connection is a technical path, not a guarantee that content or an account meets platform requirements.
The official YouTube live streaming setup page covers configuring a live stream. Event screens and instructions can change, so take the ingest destination and key from the current event rather than copying a URL from an old command. Do a private or unlisted test if that suits your workflow, then check the event’s preview before making the broadcast public.
Send the playlist with stream copy to YouTube
Once the list and event are ready, the command has this form:
ffmpeg -re -f concat -safe 0 -i playlist.txt -c copy -f flv 'YOUTUBE_INGEST_URL_AND_STREAM_KEY'
Replace the placeholder with the current ingest URL and key supplied for your event. Do not include a real key in notes you intend to share. In this example, -re paces file input at real-time speed rather than sending the prerecorded timeline as fast as the Mac mini can read it. -f concat selects the concat demuxer, -i playlist.txt supplies the ordered list, -c copy requests stream copy, and -f flv selects the example output container for an RTMP-style connection.
That command is a pattern to adapt, not a guarantee for every media set or FFmpeg build. The output format and ingest protocol must suit the event and the selected streams. Confirm the current destination in Live Control Room and check that your installed FFmpeg supports it. If FFmpeg reports that a codec cannot be used in the selected output, or the files fail at a join, stop and diagnose compatibility instead of removing options at random.
The Mac mini must remain on and available, FFmpeg must keep running, and the network connection must stay usable for the stream to continue. This is a local-computer workflow, not an unattended recovery guarantee. A computer restart, application failure, or internet outage can interrupt it; plan who will notice and what they will do if the process stops. If the playlist is intended to run continuously, also make sure the input sequence actually reaches the next item or loops as intended. The guide on keeping a YouTube loop from ending with its source file covers that separate end-of-file problem.
Handle mismatched files with normalisation or re-encoding
If the source files do not meet concat stream-copy conditions, do not try to make -c copy do work it cannot do. It cannot convert codecs, resize the picture, change frame rate, add overlays, or make different stream layouts compatible. Decide which output characteristics you need, then create a consistent set of files with a normalisation or re-encoding workflow before the live session.
Normalisation here means preparing the files to share suitable stream properties for the intended combined output. Depending on what differs, that can involve producing matching video and audio codecs, dimensions, frame rate, stream layout, and timing. If you simply remux a file into another container without changing its encoded streams, that may help with a container issue, but it will not fix incompatible codecs or media properties. Choose the operation based on the specific mismatch you found.
Re-encoding gives you more control: you can choose common output settings and apply transformations that stream copy cannot. The costs are an additional encode pass, time to prepare the files, and the possibility of quality change. A Mac mini’s ability to complete a particular encode at a useful pace depends on the files and its configuration; no single model threshold can be assumed here. Test a representative file and inspect the resulting picture and sound before processing the whole playlist.
A software encoder workflow may be a better fit if you need overlays, transitions, scene changes, or live control. YouTube describes software encoders as a standard way to connect to Live Control Room; the audio and video sync troubleshooting guide is useful background when timing problems persist. A standalone hardware encoder is another category of setup, but it is a distinct choice rather than a requirement for the Mac mini method.
For a simple set of files, choose deliberately: stream copy when inspection and testing show compatibility and preserving the encoded streams is the priority; prepare consistent files when they do not match; use a production workflow when you need transformations or controls during the broadcast. Trying the copy command first on a mixed collection and hoping it fixes the differences is not a fourth option.
Validate playback and stream health
Test the complete sequence before the scheduled event. Confirm the first file starts, the next file follows, sound remains present, and joins do not introduce a black screen, unexpected pause, or abrupt audio change. Watch the Live Control Room preview before starting publicly. YouTube’s live encoder troubleshooting and streaming tips recommend testing and monitoring stream quality; use the current guidance for your event.
Check upload capacity against the total outgoing bitrate. YouTube recommends keeping upload bandwidth above the bitrate being sent and specifies 20% headroom as its recommendation. That is capacity guidance, not a promise that a shared or congested connection will perform steadily. Test from the actual network and time of day where practical, and avoid saturating the connection with other uploads during the broadcast.
Once live, monitor the preview and the Mac mini process, as well as the connection. Look for dropped or unstable output, audio that falls behind, or the playlist stopping at a boundary. A local test may establish that the files join; it does not establish that the network will remain stable overnight. Set a practical check-in plan and know how to stop and restart the event if something goes wrong.
Do not confuse YouTube’s archive behaviour with continuous recovery. YouTube says streams under 12 hours are automatically archived; that statement does not establish what happens to longer broadcasts or guarantee recovery after a computer or network failure. Confirm current platform behaviour if archiving matters, and plan separate supervision for any stream that needs to run beyond a single tested session.
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
Can every MP4 playlist stream with -c copy?
No. MP4 is a container, and files with that extension can still use different codecs, dimensions, timing, or stream layouts. Inspect and test the full ordered set; if the streams are incompatible, prepare matching files or re-encode.
Does stream copy preserve the original quality exactly?
It avoids a new encode pass for the copied streams, so it does not introduce another lossy encoding step. That does not guarantee identical playback in every output path, nor does it fix a bad source file or incompatibility at a join.
Can I add a logo or resize the picture without re-encoding?
No. Adding an overlay or changing dimensions requires processing video, which is not stream copy. Use a workflow that re-encodes the affected stream, then test the resulting files before sending them to YouTube.
Can I leave the Mac mini streaming overnight without checking it?
The command requires the Mac mini, FFmpeg process, and network connection to remain available, and the cited YouTube guidance does not establish automatic recovery from failures. Test the setup and arrange supervision or a separately tested recovery plan for a long-running broadcast.