Skip to content
streamneo.
Tools13 min read

How to Match FFmpeg Output Resolution to YouTube Live Ingest

Choose a YouTube Live ingest target, scale FFmpeg output without distortion, and test the stream before going live.

sn.
StreamNeoPublished 4 October 2026
Worth sharing?

You match FFmpeg output resolution to YouTube Live by choosing the ingest resolution you intend to send, then configuring the outgoing video dimensions to suit it. Preserve the source aspect ratio unless you deliberately choose to crop or add padding; YouTube creates the viewer renditions from the stream it receives.

The resolution sent to YouTube is not a promise that every viewer will watch at that resolution. It is the input to YouTube’s live processing, and your practical choice also depends on frame rate, bitrate, upload capacity and the detail or motion in your programme.

Choose the YouTube ingest target

Start with the programme and the connection, not with a scale-filter fragment. A devotional image with a mostly still background, a lofi loop, a local news presentation and a gaming rerun have different amounts of movement and source detail. The resolution you send should make sense for what is in the source and what your upload connection can sustain throughout the stream.

YouTube detects encoder settings automatically by default. If you use a custom stream key and enable manual settings in Live Control Room, you can select a stream resolution there. That distinction matters: with automatic detection, configure the feed you intend to send and let YouTube detect it; with manual settings, make your FFmpeg output agree with the resolution selected for that key. Check the current YouTube Live encoder settings and stream setup guidance before a planned broadcast, because interface labels and recommendations can change.

Resolution is only one part of the ingest target. YouTube’s current H.264 recommendations pair resolution and frame rate with bitrate. As listed on YouTube Help in September 2026, the following are the cited H.264 values:

Ingest target Minimum bitrate Recommended bitrate
720p30 3 Mbps 8 Mbps
720p60 3 Mbps 8 Mbps
1080p30 5 Mbps 14 Mbps
1080p60 6 Mbps 17 Mbps

Treat these as YouTube’s recommendations, not as a guarantee that your connection can deliver a stable broadcast at the listed rate. A connection with limited or variable upload capacity may be better served by a lower target that it can sustain. Leave headroom for ordinary network variation rather than setting the stream bitrate equal to the best result from one speed test. For more on the practical consequences of keeping an always-on feed running, see the comparison of cloud streaming and running OBS on a VPS.

Frame rate and resolution are separate choices, but they affect the bitrate decision together. A quiet ambience video may not gain much from a higher frame rate, while a source with regular fast movement can benefit from it if the source itself contains that motion and your connection can carry the feed. Do not upscale a low-resolution source merely to send a larger number; the extra pixels do not restore detail that was never present.

Match FFmpeg output dimensions

The FFmpeg output dimensions are the width and height of the frames sent to YouTube. If you intend to send a 1280-by-720 frame, for instance, configure the video filter or output settings so that the encoder receives frames of that shape. The scale filter is the usual place to resize a video stream; the precise command around it depends on your input, audio, encoder, protocol and installed FFmpeg build.

A scale fragment such as -vf "scale=1280:720" asks FFmpeg to produce those dimensions. It does not by itself decide whether the image should be stretched, cropped or padded when the source has another shape. Nor is that fragment a complete streaming command: it does not include the ingest URL and credentials, codec settings, bitrate, frame rate, keyframe interval or audio handling. Avoid pasting a partial example into a live command and assuming it settles the whole encoder configuration.

Before building a long-running loop, inspect the source file’s dimensions and aspect ratio, then decide what the output canvas should be. If a source is already 16:9 at 1920 by 1080 and you choose a 1280-by-720 target, both frames have the same shape, so a proportional downscale can fill the target without bars or cropping. If the input is portrait or square, a 16:9 output necessarily involves a presentation choice. That is a content decision, not just a resolution setting.

YouTube’s ingest feed should also be configured consistently beyond dimensions. Its current encoder guidance covers supported protocols and codecs, frame rates up to 60 fps, constant bitrate, and a recommended two-second keyframe frequency that should not exceed four seconds. It also recommends progressive scan and square pixels. Confirm what your installed FFmpeg build actually supports rather than assuming every documented encoder or option is available locally. Resolution matching will not compensate for an unsupported codec or an unstable bitrate.

Use proportional scaling

For most resizing, preserving aspect ratio is the safe starting point. If you set only the width and ask FFmpeg to calculate a compatible height, a fragment such as scale=1280:-2 targets 1280 pixels wide and calculates the height proportionally. The negative multiple asks FFmpeg to calculate an even-compatible dimension, useful with common video encoders that expect even dimensions. This is an example of filter syntax, not a full tested streaming command.

Suppose a 1920-by-1080 source is resized to 1280 pixels wide. Its height scales in the same proportion, giving 720 pixels. Both width and height shrink by the same factor, so circles stay circular and people do not appear stretched. If instead you force the source directly to 1280 by 720 when its original shape is not 16:9, the picture can be distorted unless you use an explicit fit, crop or padding method.

FFmpeg’s filter documentation describes the scale filter, including force_original_aspect_ratio for fitting within or beyond a specified width-and-height box. Check the documentation for the version you have installed: syntax and available options can vary. When you need a particular canvas as well as proportional content, use the filter options to express that intention rather than hoping two hard-coded dimensions behave as a proportional resize.

A practical check is to work through the source and output shapes before testing: note the input width and height, the target width and height, and whether you want the whole source visible. If the input is 4:3 and the output canvas is 16:9, showing the complete image leaves unused space at the sides or requires padding; filling every part of the canvas requires cropping or distortion. Usually distortion is the option to avoid. Write down the chosen treatment so a later file replacement does not silently change how the channel is framed.

For programmes assembled from multiple clips, do not assume all inputs share the first file’s dimensions. A loop may combine landscape footage, stills or differently encoded segments. Test representative files and decide whether each should be normalized to one output canvas before encoding. If FFmpeg is also handling a repeating video-and-audio sequence, the related guide to adding background music to an FFmpeg YouTube loop is relevant to the separate audio and looping concerns; it does not replace checking your output dimensions.

Choose fit, crop or padding behavior

When source and target aspect ratios differ, there are three sensible presentation choices. Fit keeps the complete source visible and may leave unused space. Crop fills the output canvas but removes part of the source. Padding keeps the whole image while adding blank or designed space around it. Choose based on what viewers must see, not on a belief that one filter is right for every source.

Approach What viewers see Main trade-off Suitable example
Fit Entire source, possibly with bars or empty space The output canvas is not filled by picture A portrait announcement that must remain readable
Crop A full canvas, with edges removed Important material near the edge can disappear Wide scenic footage where the centre can be safely trimmed
Padding Entire source inside a filled canvas, with added border space The added area needs a deliberate colour or graphic treatment A square devotional image placed within a 16:9 frame

Avoid stretching a 4:3 source to a 16:9 frame simply to eliminate bars. Faces and lettering become unnaturally wide, and the viewer may see the distortion even if the output dimensions technically match the ingest target. If the source is a designed graphic, you may be able to add a background or border that makes padding look intentional. If it is footage with action near the edges, cropping can remove context or captions.

Consider a portrait phone recording intended for a landscape live channel. Fit or padding preserves the full frame, though the surrounding canvas will be visible. A centre crop fills the landscape frame but removes a substantial amount of the vertical composition. The correct choice depends on whether the subject’s face, text or demonstration extends beyond the cropped area. Preview the result rather than deciding from dimensions alone.

This is a separate decision from bitrate. A padded frame and a cropped frame can have the same output dimensions and ingest bitrate, but show different content. Likewise, changing from 720p to 1080p does not determine whether the source should be cropped. Keeping these choices separate makes troubleshooting easier: first settle the composition, then settle the encoding target.

If you are working from an existing OBS or replay layout, a wrong shape may originate upstream rather than in FFmpeg. The article on fixing an incorrect replay aspect ratio in OBS is a useful parallel: correct the canvas or source framing where it is introduced, then confirm the encoded output rather than layering compensating changes later.

Understand automatic ingest detection

YouTube’s automatic detection means you do not necessarily need to select an ingest resolution manually in Live Control Room. You send a correctly configured feed, and YouTube detects the encoder’s resolution and frame rate. If you prefer an explicit selection, use the manual settings available with a custom stream key and make FFmpeg’s output dimensions match that selection. Do not configure one resolution in the key and send another while assuming the difference will be harmless.

The resolution you send is also not the same thing as the playback resolution every viewer receives. YouTube transcodes the incoming stream into multiple output formats so viewers can watch across devices and network conditions. You are configuring the ingest feed, not encoding every viewer rendition yourself. This is why the encoder target should be chosen for the source and upload path, rather than by attempting to produce a separate FFmpeg output for every possible viewer screen.

Automatic detection removes one manual selection, but it does not remove the need to inspect the output. If the encoded feed is unexpectedly small, has the wrong aspect ratio or uses a frame rate you did not intend, YouTube can only process what it receives. Read YouTube’s current setup page and pay attention to the resolution and frame-rate status that the Live Control Room reports during a test.

For someone running a continuous channel, matching dimensions is one part of reducing small avoidable failures. A scaled output that is correct at the start can still be wrong after replacing a source file or changing the FFmpeg command. StreamNeo can remove the need to keep a home computer running for the broadcast: you upload the video and provide the YouTube stream key, while the stream is monitored and restarted if it drops. It is YouTube-only, so it does not replace a local FFmpeg workflow when you need custom processing or a different destination.

Test the resulting stream

Test the actual output before relying on it overnight or during a scheduled programme. A successful connection does not prove that the picture is framed correctly, the intended dimensions are being sent or the audio is present. Use the exact source, filter chain, encoder and stream key settings you plan to use, then inspect the result in YouTube’s Live Control Room and on a viewer device if possible.

Check four things. First, confirm the reported ingest resolution and frame rate agree with your target. Second, inspect the frame edges: look for stretched faces, unexpectedly missing titles, bars you did not intend or padding that obscures content. Third, check audio and motion using a representative segment, not only a static opening card. Fourth, watch stream-health notices while the test runs and compare the encoder’s bitrate with the upload capacity available to the machine sending it.

YouTube recommends testing with similar audio and movement before the event. That is useful for looping channels too: a still image can conceal problems that appear in a moving transition, and a silent test says little about an audio path that is meant to carry bhajans, commentary or music. If your content has different types of material, choose a sample that includes the most demanding representative section.

A speed test is a point-in-time observation, not a guarantee of sustained upload performance. Where possible, test at the time and on the connection you expect to use. Keep room for other household or business traffic, and consider the effect of interruptions if the machine is on Wi-Fi. If the stream-health panel reports a problem, do not change resolution, bitrate and filters all at once; alter one part, repeat the test and note what changed.

Before the first full broadcast, record the final output dimensions, aspect-ratio treatment, frame rate, codec and bitrate alongside the command or configuration you used. Keep credentials out of shared notes. If you later swap in a different source, repeat the shape check; a new source may be portrait, lower resolution or a different frame rate even when the previous file behaved correctly. For a long-running devotional channel, the practical guidance on alternatives for a 24/7 devotional stream can help with the broader operating choice, while this page remains focused on the dimensions sent to YouTube.

A practical configuration sequence

Work through the decisions in order so a resolution change does not hide another issue. Choose the ingest resolution and frame rate from source quality and sustained upload capacity. Decide whether the stream key uses automatic detection or a manual resolution selection. Then select the output canvas and the fit, crop or padding treatment that preserves the composition you need.

Next, create the proportional resize and verify its output dimensions with the installed FFmpeg version. Configure the rest of the ingest to match YouTube’s current guidance for the chosen codec and frame rate, including bitrate and keyframe interval. Confirm that your build exposes the codec and options you plan to use. The documentation is a reference for supported settings, not proof that your particular installation has them enabled.

Finally, test with representative video and audio, inspect the frame and check YouTube’s stream-health messages. If the target needs to change, revisit bitrate and upload headroom as well as dimensions; resolution does not exist in isolation. For a static source, keeping the frame simple may matter more than sending a higher resolution. For detailed moving footage, a lower target may trade some fine detail for a feed the connection can sustain.

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

Do I have to encode every YouTube viewer resolution in FFmpeg?

No. You configure the ingest feed you send, and YouTube transcodes it into multiple playback formats for viewers. Choose the feed’s resolution and frame rate to suit your source and upload path rather than creating separate encodes for every viewer rendition.

Is scale=1280:-2 the right filter for every source?

No. It is a proportional example that targets a width and calculates a compatible height. When source and target shapes differ, decide whether to fit, crop or pad; the right treatment depends on what must remain visible.

Should I use automatic detection or manual resolution settings?

YouTube detects encoder settings automatically by default. Manual resolution selection is available with a custom stream key; if you use it, make FFmpeg’s output match the selected resolution and verify the result in Live Control Room.

Can the right resolution fix a stream-health problem?

Not by itself. Resolution is only one factor alongside frame rate, bitrate, codec, keyframes, audio and sustained upload capacity. Test the complete stream with representative content and use YouTube’s current health messages to identify what needs attention.

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