Skip to content
streamneo.
Troubleshooting11 min read

YouTube Stream Health Resolution Warning: Fix an FFmpeg Loop

Compare YouTube’s selected ingestion resolution with FFmpeg’s encoded output, then choose where to set matching dimensions.

sn.
StreamNeoPublished 7 October 2026
Worth sharing?

YouTube’s resolution warning means the encoded video reaching Live Control Room does not match the resolution selected in Ingestion Settings, or is unsupported for that configuration. Check those selected dimensions against FFmpeg’s actual output before changing the loop or guessing a new resolution.

The loop controls how frames repeat; it does not choose the output width or height. Once you know the target selected for your stream key and the dimensions being sent, you can decide whether FFmpeg’s -s option is enough or whether an explicitly placed scale filter makes the output graph easier to reason about.

Read the warning in Live Control Room

Open the live stream’s preview in YouTube Live Control Room and read the full health message, not just its red or yellow label. YouTube distinguishes a resolution that is not optimal from one that is unsupported for the selected configuration. In the latter case, the message may state the expected resolution. That expected value is useful evidence; it is not a reason to choose a different size by habit.

YouTube’s live streaming error messages describe the requirement: the video’s height and width must match the resolution chosen in Ingestion Settings. The warning concerns the encoded stream YouTube receives, not necessarily the dimensions shown in a media player or file browser.

Note the exact wording, the selected resolution, and whether the warning appears alongside another health message. If the warning names an expected size, record it as well. Do not assume the resolution warning explains every problem with the broadcast: codec, bitrate, frame rate, keyframe interval, connection quality, or a separate encoding issue may also need attention.

For a channel that loops a long devotional video or ambience recording, it is tempting to edit the repeat option as soon as something looks wrong. Keep the loop and the output size separate in your diagnosis. If the frames repeat continuously but arrive at dimensions that differ from the selected ingestion setting, the loop can be working correctly while the resolution check still warns.

Check the selected ingestion resolution

In Live Control Room, inspect the stream’s Ingestion Settings and write down the chosen resolution. Also check how the stream key handles resolution. YouTube recommends automatic resolution and frame-rate detection by default; a custom stream key can instead use manual settings. The official encoder settings, bitrates and resolutions guide explains the available settings.

With automatic detection, YouTube analyses what the encoder sends. With a manual choice, the selected configuration and the encoded dimensions need to agree. This makes the stream key relevant even when you have not changed the FFmpeg command: a key with manual settings may be enforcing a target different from the video your command produces.

Ingestion choice What to check Practical implication
Automatic detection What dimensions and frame rate FFmpeg is actually sending Avoid presuming the source file’s size is the final output size; verify the preview and health messages.
Manual resolution The selected resolution on the key and the encoded output dimensions Configure FFmpeg to send the chosen dimensions, or change the key’s selection deliberately.

Do not switch to manual settings simply to silence a message without checking the output. Nor should you change the output dimensions just because a familiar preset is common. The correct target is the selected resolution for your stream, provided that is the configuration you intend to use. If you deliberately want to retain the source dimensions, make the ingestion setting agree where available rather than encoding an arbitrary size.

Inspect FFmpeg’s actual output dimensions

The input file is only the beginning of the video path. A filter, a prior conversion, a rotation, or an output-size option can change dimensions before encoding. Therefore inspect the dimensions of the stream FFmpeg produces, rather than relying on the original file’s properties.

Read the command from input to output. Look for video filters such as scale, a filter graph introduced with -filter_complex, and output options such as -s. Check whether more than one output is declared: each output may have its own options and mapping. Confirm that the output sent to YouTube is the one whose dimensions you are checking.

FFmpeg’s documentation for the -s video option says it sets the output video size and inserts a scale filter at the end of the output filter graph. The filter documentation describes scale as a filter. That distinction matters when you are trying to understand the result of a graph: the final encoded size is determined by the filters and options that reach that output, not by a single option viewed in isolation.

If you can inspect the received stream or an equivalent output from a controlled test, check both width and height. Compare the pair with the Ingestion Settings value. A matching width but different height is still a mismatch. Also take account of any rotation metadata or a filter that changes orientation, since the dimensions can be transformed after the input is opened.

If you cannot verify the dimensions from your current workflow, do not replace the whole FFmpeg command on guesswork. Keep a copy of the working command, identify the output section, and test a minimal change. The FFmpeg guide to streaming pre-recorded video on Linux can help with command structure, but it does not establish the right target for your particular stream key.

Choose the dimensions that match your target

Once you have the selected ingestion resolution and the actual encoded dimensions, there are two straightforward paths. If they match, do not add scaling merely because the warning mentions resolution; investigate whether the warning refers to another output or whether a different encoding setting is at fault. If they differ, decide which configuration is meant to govern and make the output match that choice.

The target should not be guessed from the source file, channel type, or a conventional resolution preset. A small business information loop, a study channel with a static scene, and a music channel can have different source material and delivery constraints. The resolution selected in YouTube’s ingestion configuration is the reference point for this particular warning. If you change that choice, check the corresponding stream key settings and then verify the new output against them.

Keeping the source dimensions avoids an unnecessary resize and preserves the composition as encoded in the file. Scaling can be appropriate when the source dimensions differ from the selected target, but it changes the video and may alter its appearance or processing load. A non-matching aspect ratio needs particular care: forcing both dimensions can stretch the picture. Decide whether preserving proportions, cropping, or padding is suitable for the content, and test the result visually.

Resolution is not the only encoder setting to revisit if the warning persists or other health messages appear. YouTube’s current encoder settings guidance gives bitrate recommendations that vary by codec, resolution and frame rate, and specifies supported codecs and keyframe guidance. For example, the guide lists H.264 recommendations for 1080p at 30 and 60 frames per second; those are YouTube’s recommendations, not independent performance measurements. Use the current table for your intended configuration and make sure your upload connection can sustain the stream with headroom. YouTube’s streaming tips discuss leaving bandwidth headroom.

Set output size with -s or scale

The -s option is a concise way to request output dimensions. It is useful when the output is simple and the scaling should happen at the end of the output filter graph. In the example below, replace TARGET_WIDTH and TARGET_HEIGHT with the dimensions selected for your ingestion configuration; these placeholders are not a resolution recommendation.

ffmpeg -i input.mp4 -s TARGET_WIDTHxTARGET_HEIGHT ... output

Do not paste that fragment over a working command without accounting for its existing inputs, mappings, filters and output options. In particular, place output options with the output they are intended to affect. A command that streams audio and video, maps particular streams, or has multiple outputs may need its existing structure preserved. The size option does not change how the video loops or how audio is mapped.

A directly placed scale filter is clearer when you need control over where the resizing occurs. For example, within a simple filter chain, you could write:

-vf "scale=TARGET_WIDTH:TARGET_HEIGHT"

Again, the names are placeholders. Choose actual dimensions from the selected ingestion setting, not from this example. If the command already has -vf, another video filter, or a complex graph, integrate scale into the existing graph rather than adding a conflicting second filter option. FFmpeg’s filter syntax and options are documented in its filters reference.

Prefer -s when the graph is uncomplicated and an end-of-graph resize is what you intend. Prefer a placed scale filter when order matters—for example, because other video filters need to run before or after resizing, or because the command’s graph should show explicitly where the dimensions change. Neither option is inherently a fix for unrelated warnings, and neither supplies the correct target automatically.

Check filter placement in the output graph

Filter order can make a seemingly correct change ineffective or confusing. Since -s inserts scaling at the end of the output filter graph, it may not be the clearest choice if you need scaling at a particular point. An explicitly placed scale filter makes that point visible in the chain and gives you a place to inspect how other filters interact with it.

For a simple -vf chain, inspect the filters from left to right and identify which one changes dimensions. If you use -filter_complex, follow the video path that is mapped to the output: a scale filter on a different labelled stream will not change the output you send to YouTube. A filter graph can produce more than one branch, so verify the branch that reaches the intended video output rather than merely finding the word scale somewhere in the command.

Check that you are not applying a later filter that changes dimensions again, or setting conflicting output options. Check the stream mapping too; a correctly scaled stream is no help if a different unscaled stream is mapped to the live output. When you are unsure, simplify the test copy of the command, make the video path explicit, and confirm the resulting dimensions before restoring the rest of the production setup.

Keep the loop option separate. FFmpeg’s video loop filter documentation describes frame repetition, including loop=-1 for infinite repetition. That filter controls how frames repeat; it does not set the output width and height. A looping file can therefore need output scaling, while scaling can be correct without changing the loop configuration.

If the stream is meant to run while your computer is off and the recurring task is keeping a prepared file live rather than editing filters locally, StreamNeo removes the need to keep that computer running for the broadcast; first confirm that the file’s encoded dimensions suit the selected YouTube ingestion setting.

Retest and confirm stream health

Make one change at a time. Keep the original command, note the current ingestion selection, and change only the setting you have diagnosed. That makes it possible to tell whether the dimensions now match, rather than attributing an improvement or a new problem to several simultaneous edits.

Start a private or otherwise appropriate test stream before relying on the change for a long broadcast. Include representative motion, not only a still opening frame, and confirm the audio path as well. Preview it in Live Control Room, wait for the health messages to update, and verify the displayed stream dimensions against the selected target. A test that begins cleanly is useful evidence, but it is not a guarantee that every later connection or encoding issue has been resolved.

If the resolution warning remains, return to the two values you wrote down: the chosen ingestion resolution and the actual output dimensions. Confirm that you are looking at the same stream key and output, and check whether a manual key setting differs from the setting you intended. If those dimensions match, look at other health messages and adjacent encoder settings rather than repeatedly changing the size.

If the resolution warning disappears but another warning appears, treat that as a separate diagnosis. Check codec, frame rate, keyframe interval, bitrate and upload capacity against YouTube’s current official guidance. For a looping meditation stream, for instance, resolving an AAC error is separate from matching video dimensions; the AAC troubleshooting guide for a looping stream addresses that different issue. Similarly, if your stream key itself is rejected, use the stream key troubleshooting steps rather than altering video dimensions without evidence.

Keep a short record of the known-good combination: stream key mode, selected resolution, output dimensions, frame rate and the relevant FFmpeg filter path. If you later change the file or command, compare it against that record before editing. This is particularly useful for an always-on channel, where a change made for one test can otherwise be copied into a longer-running loop without checking whether the source or key has also changed.

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 -stream_loop set the YouTube resolution?

No. A loop option repeats input content; it does not choose the encoded output width and height. Check the filters and output-size settings that determine the video sent to YouTube.

Should I use -s or a scale filter?

Use -s when a final resize at the end of the output filter graph is suitable. Use an explicitly placed scale filter when its position in an existing chain or complex graph matters, and verify that the scaled stream is the one mapped to the output.

Which resolution should I choose?

Do not infer one from the file or from a common preset. Use the resolution selected in YouTube Ingestion Settings as the target, or deliberately change that setting and make the encoded output agree with it.

What if the dimensions match but the warning remains?

Confirm that you checked the actual encoded output for the same stream key and output shown in Live Control Room. Then read any other health messages and review the current YouTube encoder guidance; changing dimensions alone will not fix a warning caused by another configuration or encoding issue.

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 ↗