Skip to content
streamneo.
Use Cases12 min read

How to Schedule Pre-Recorded Videos with FFmpeg for YouTube Live

Schedule a YouTube Live event, send a video with FFmpeg at real-time pace, and check its preview before going live.

sn.
StreamNeoPublished 5 October 2026
Worth sharing?

Scheduling a YouTube Live event creates an upcoming event and watch page; it does not start playback of your video. To send a prerecorded file, start FFmpeg as an encoder feed at the planned time, check the incoming preview in Live Control Room, and select Go live unless you have deliberately enabled auto-start.

The workflow has two separate parts: create the event in YouTube Studio, then connect an encoder to that event. FFmpeg can pace a file like a live input, but its command does not schedule the YouTube event or guarantee that the event becomes public. The steps below use an illustrative command, not a tested universal recipe; check the options and encoders supported by your own FFmpeg build.

Schedule the event in YouTube Studio

Before planning a broadcast, check that live streaming is enabled for your channel. YouTube says first-time enablement may take up to 24 hours, so do not leave that check until the scheduled start. Follow YouTube’s current encoder setup instructions to find the Live Control Room and schedule the event.

In Studio, the documented route is Create → Go Live → Manage → Schedule stream. Interface labels may change, so use YouTube’s current instructions if yours look different. You can create an event or reuse relevant settings from an earlier stream. Set its title, visibility, description and start time, and check the event’s other options before saving.

Scheduling gives viewers an event to visit and, where available, a reminder to set. It does not fetch a video from your computer or start FFmpeg. Think of the event as the destination and the encoder feed as the content arriving at that destination. Keep the event URL somewhere you can reach it when you check the watch page.

Choose whether the event should be private, unlisted or public according to who needs to see it and when. A private rehearsal may help you check the feed without presenting it as a public programme; an unlisted event can be shared with people who have its link. Review current YouTube visibility and access controls rather than assuming an event link is private.

After creating the event, open its stream settings and identify the stream URL and stream key. These connection details belong to the scheduled event you intend to use. Do not rely on an old key or assume a key from another setup is the right one; check the settings for the event and protocol you selected.

Prepare the media file and encoder settings

Check that the file opens and plays from beginning to end before the scheduled broadcast. Listen for silence, abrupt audio changes or an unintended soundtrack, and inspect the picture for black sections or incorrect orientation. A file that looks fine on your editing computer may still have unusual tracks, variable frame rate or a codec your encoder output cannot use as-is.

YouTube’s recommended settings depend on the resolution, frame rate and protocol. Consult its current live encoder settings rather than copying a bitrate from a guide written for a different profile. Pick a profile the source and your available upload connection can sustain. A higher output setting is not useful if the connection cannot keep sending it reliably.

There are two broad ways to handle the file’s streams. With transcoding, FFmpeg decodes and re-encodes video or audio into an output format and profile you choose. This gives you control if the source is incompatible, but it uses processing capacity and can alter picture or sound. With stream copy, FFmpeg passes compatible streams through without re-encoding; that can reduce processing, but only works when the source codecs, container, timestamps and YouTube’s ingest requirements agree.

If the source has multiple audio or video tracks, decide which ones should go out. An explicit stream map can prevent FFmpeg from selecting the wrong language, commentary track or camera angle by default. If you are not sure which streams are in the file, inspect it first with tools available in your installed FFmpeg package, and do not assume that a command for a single-track MP4 fits every file.

YouTube recommends RTMPS when supported by the encoder. Use the exact URL and protocol shown for your event, and verify current protocol guidance if you have a special format or feature requirement. Protocol, stream key and FFmpeg output format have to fit together; changing one part without checking the others can leave you with no preview. For differences in delivery delay and protocol choices, see this comparison of low-latency streaming technologies.

Use realtime pacing with FFmpeg

A file on disk can be read faster than it would play. FFmpeg’s -re option reads an input at its native frame rate, which is useful when simulating a live input. Without realtime pacing, a command may consume the file as quickly as the computer can process it instead of sending the programme over its intended duration. The FFmpeg documentation explains the option and documents RTMP output examples.

The following is an illustrative template for a typical video-and-audio file. It is not a tested command and may need changes for your file, FFmpeg build, YouTube endpoint and current recommendations:

ffmpeg -re -i "/path/to/video.mp4" \\
  -c:v libx264 -preset veryfast -pix_fmt yuv420p \\
  -c:a aac -b:a 128k \\
  -f flv "<YouTube ingest URL>/<PRIVATE_STREAM_KEY>"

Here, -re paces the file input; -i names the source; the codec options request video and audio encoding; and -f flv selects an output container used in FFmpeg’s RTMP examples. The destination is a placeholder, not a working endpoint. Do not paste a key into a command copied from a public article or share a screenshot that reveals one.

The example leaves out video bitrate, frame rate and keyframe interval on purpose. YouTube’s current recommendations vary with the output profile, so fill in suitable values only after checking its current table and the actual file. Also confirm that your FFmpeg build includes the requested encoder. Some builds may not have libx264; an unavailable encoder produces an error rather than a stream.

For compatible sources, stream copy may be an alternative to encoding, but compatibility is not something to infer from the .mp4 suffix alone. A container can hold different codecs and track layouts, and timestamps can affect whether a stream is accepted. If the source does not match the expected output, transcode or adjust the command after inspecting the media and current ingest requirements.

Option order matters in FFmpeg because some options apply to the next input and others to the output. Confirm syntax against the installed version’s help and documentation, especially if you add scaling, mapping, audio filters or other inputs. Treat a copied command as a starting shape, not a guarantee that your channel is receiving a clean feed.

Fill in endpoint and private key placeholders

In the command’s final argument, replace the placeholders with the precise ingest URL and stream key YouTube displays for the event. Follow the URL format YouTube gives you; do not assume every protocol expects the key to be appended in the same way. In particular, if you are using RTMPS, follow the exact URL or instructions shown for that protocol rather than relying on a generic RTMP example.

A stream key works like a password. Keep it out of public scripts, shared documents, screenshots, source control and logs that other people can read. If a key is exposed, reset it in Live Control Room and update the encoder configuration. Do not put a real key in a tutorial command, even if you plan to remove it later.

The endpoint and key are separate from the scheduled event’s title and watch-page link. A viewer uses the event URL; FFmpeg sends media to the ingest destination. Confusing those addresses, or using a key that does not match the intended event’s settings, can mean that the event remains empty while FFmpeg reports a connection attempt.

Before you start, check the command for unexpanded placeholders, typos and unsafe quoting. A path containing spaces should be quoted as in the template. Avoid pasting secrets into a shell history or a support request. If you need help diagnosing a connection, describe the error without including the key.

Connect and wait for the incoming preview

Start FFmpeg at a time that leaves room to correct a problem before the planned programme begins. A successful command launch alone is not proof that viewers can see the right picture and hear the right audio. Keep Live Control Room open and wait for its incoming preview and status information to reflect the feed.

Check the preview for the expected video, orientation, audio and programme point. If the picture is black, the sound is missing or the wrong track is playing, stop and correct the source or command before making the event live. YouTube’s streaming guidance recommends setup and checks ahead of time, including checking the preview and monitoring stream quality.

Allow for the fact that an encoder connection and a usable preview may not appear at exactly the same moment. If no preview arrives, check FFmpeg’s output for errors, then re-check the event’s stream URL, key, protocol and output format. Also check the network connection and whether your installed build recognises the selected encoders. Change one likely cause at a time so you can tell whether the preview improves.

If you need an operator to watch the transition but do not want to keep a desktop running, decide that before the event rather than discovering the requirement at start time. StreamNeo can remove the specific burden of keeping your computer on to send an already prepared file, while leaving you responsible for the YouTube event and its checks. It is a YouTube-only service; it does not change YouTube’s preview or Go live decisions.

For a sequence of recorded lessons rather than a single event file, the details of playlist behaviour differ; this guide on restarting a recorded lesson playlist in OBS covers that separate use case. If your aim is a continuous station rather than one scheduled broadcast, first consider how a YouTube radio livestream differs from an uploaded radio mix.

Select Go live or check auto-start

Once the incoming preview is present, decide how the scheduled event should transition to live. With a manual workflow, inspect the preview and select Go live in Live Control Room when you are ready. Connecting FFmpeg supplies the encoder feed; it does not itself mean the public event has started.

Check the event’s auto-start setting rather than assuming it is on or off. YouTube’s controls and wording may change, and the setting can affect whether an operator must manually start the event after the feed arrives. If you deliberately use auto-start to reduce a hands-on step, test that behaviour ahead of an important broadcast and make sure someone knows how to verify the result.

Manual start has a useful pause for quality control: you can see that the correct file is arriving and sound is present before you make the event live. Auto-start can reduce the action needed at the transition, but it removes that same manual gate. Neither setting fixes a bad source file, a mismatched key or an unstable upload connection.

If you are using an operating system scheduler or wrapper to launch FFmpeg at a particular time, treat that as a separate automation task. It may start the encoder process, but it does not create the YouTube event or ensure that the event transitions from preview to public/live. Arrange the process timing around the Studio workflow and allow time for a person or a tested auto-start configuration to handle the transition.

Confirm the event is actually live

After selecting Go live, check Live Control Room for the event’s live status and open the watch page using its event URL. Confirm that the expected picture and sound reach the page, not just the local player or the encoder’s console. Keep monitoring the broadcast for dropped connection warnings, a frozen image or changes in audio while it runs.

A useful rehearsal checks the whole path: the right scheduled event, the right media, the correct connection settings, preview, the transition to live and the viewer-facing page. It is better to discover that a file has a silent section or that an output profile is too demanding during a rehearsal than during a devotional programme, study session or local news loop. Re-check YouTube’s current encoder settings when the resolution, frame rate or protocol changes.

When the broadcast should end, stop sending content and end the stream in Live Control Room as YouTube instructs. Do not assume that closing a terminal window or stopping a computer always ends the event in the way you intend. If you need the recording afterwards, check the event’s archive in Studio and confirm that it is usable before relying on it as your only copy.

YouTube currently documents automatic archiving for streams under 12 hours, but platform behaviour can change. Check the current help page before depending on that limit, and make your own recording if the archive is important to your programme. An archive is also not a substitute for verifying that the live event was visible and audible when it mattered.

If the real requirement is a channel that keeps playing through power cuts or unattended hours, a single scheduled FFmpeg command may not address the operating problem. This guide to keeping a YouTube FFmpeg stream running during power cuts in India discusses that distinct continuity concern. Choose the approach that fits whether you need one scheduled event, a repeating playlist or an always-on channel.

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

Does scheduling a YouTube Live event start the video?

No. Scheduling creates the upcoming event and watch page, while FFmpeg or another encoder must send the media to it. You still need to follow the event’s preview and Go live behaviour, or check that auto-start is configured as intended.

What does -re do when I use FFmpeg?

It tells FFmpeg to read the input at its native frame rate, which is useful for sending a file at live-like pace rather than consuming it as fast as possible. It does not schedule the event, validate your stream key or make the YouTube event public.

Should I use stream copy or transcode the file?

Use stream copy only when the source’s codecs, container, tracks and timestamps are compatible with the destination’s requirements. Transcoding gives you control over the output profile but uses processing capacity and may change quality; check YouTube’s current recommendations and test the actual file.

Do I need to click Go live after FFmpeg connects?

For a manual scheduled workflow, wait for the incoming preview, check picture and sound, then select Go live in Live Control Room. Inspect the event’s auto-start setting because it can change the manual step, and test any automated transition before relying on it.

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