First decide whether you want one portrait-only feed or simultaneous horizontal and vertical formats. A single 9:16 FFmpeg output sends one format; it does not automatically create both versions.
For a portrait-only stream, send the vertical output to the stream destination and key shown in YouTube Live Control Room. To send horizontal and vertical formats together from an encoder, use YouTube’s vertical experience and configure a separate stream key for the vertical feed.
Choose portrait-only or dual-format output
A portrait video has a 9:16 aspect ratio: it is taller than it is wide. Portrait-only is usually the simpler route when the programme is designed for phone viewing and you do not need a separate landscape composition. You prepare a vertical picture in FFmpeg, then send that picture to the selected YouTube Live stream.
Dual-format output is a different production choice. YouTube’s vertical live streaming guidance describes a vertical experience in Live Control Room, including an encoder route that uses RTMP(S) and a second stream key for the vertical feed. You must provide the formats to their corresponding destinations. Sending one portrait output does not make YouTube or FFmpeg produce a matching horizontal programme for you.
| Choice | What you send | Best suited to | What to check |
|---|---|---|---|
| Portrait-only | One 9:16 feed to the selected stream key | A channel with a mobile-first layout and no separate landscape version | Vertical preview, crop, text placement, and audio |
| Horizontal and vertical | Corresponding horizontal and vertical feeds to their respective destinations and keys | A programme that needs a deliberately composed version for each format | Vertical encoder option, second key, both outputs, and upload capacity |
Consider what the viewer should see, rather than choosing a format only because the source file happens to be vertical. A devotional reading with large text, for example, may suit portrait viewing, but titles positioned at the edge can still be cut off by a crop. A news loop may need a distinct landscape layout to keep a map and captions legible. If you need two deliberate compositions, plan for two outputs.
Also consider whether your workflow can keep both outputs running. Each encoded feed needs its own processing and upload capacity. Check YouTube’s current encoder guidance for the chosen codec, resolution, and frame rate, and test your real connection rather than assuming one feed’s requirements apply unchanged to two. If you are comparing always-on workflows, our guide to running two 24/7 YouTube streams from one computer covers the broader operational question.
Create or select a YouTube Live stream
Open YouTube Studio and enter Live Control Room. Create a scheduled stream or select an existing stream that is appropriate for this broadcast. Check its title, audience setting, visibility, and schedule before connecting FFmpeg; a technically healthy encoder cannot correct a stream configured for the wrong audience or time.
For a portrait-only setup, inspect the vertical preview and layout options available for the stream. YouTube’s vertical controls can use layouts such as a centre crop, fit-to-phone-width, or a stacked arrangement. Those are composition choices, not interchangeable fixes: a crop fills the vertical frame by discarding parts of a wider picture, while fitting or stacking can preserve more material but change how it occupies the screen. Preview the actual content before settling on one.
If you plan dual output, follow the vertical experience in Live Control Room and select the encoder path from the vertical preview’s options. Choose the RTMP(S) route and arrange the separate vertical key described there. Do this before writing the second output command so you know which destination belongs to which format.
A scheduled stream is useful for checking details and preparing the event in advance. Do not assume that selecting or scheduling it means the encoder is already sending video. You will still need to start FFmpeg at the appropriate time and confirm that Live Control Room receives the feed. For an always-on channel, operational planning matters too: our explanation of whether a 24/7 YouTube music stream needs a live encoder running outlines why the source and broadcast process must keep running.
Copy the stream URL and account-specific key
In the selected stream’s settings, find the stream URL and stream key. Copy the values for that exact stream into your FFmpeg configuration. The ingestion URL and key are specific to the account and stream; do not use a key from a tutorial, another channel, or a different scheduled broadcast.
Treat the key like a password. Do not place it in a public script, screenshot, chat message, or article. If you store a command in a file, limit access to that file and avoid sharing it with the key included. If you think the key has been exposed, use YouTube Studio’s controls to replace or reset it, then update the encoder configuration.
The URL and key are used together, but their exact arrangement depends on the endpoint format shown by YouTube and how your FFmpeg build accepts the output URL. Some formats present the key as part of the destination path; follow the displayed instructions rather than blindly appending text. YouTube’s Live Streaming API documentation describes stream resources and their status, but your practical connection details should come from the selected stream in Studio.
Prefer RTMPS when the selected YouTube destination supports it. YouTube recommends the secure protocol, and its RTMPS setup guidance specifies using the correct secure endpoint and port 443. If a connection fails, check the scheme, host, path, port, and key against the values shown for your stream instead of substituting an endpoint found in an unrelated example.
Prepare the picture and a 9:16 FFmpeg output
Start by deciding what belongs in the portrait frame. If the input is already 9:16, verify its dimensions and framing. If it is landscape, choose between cropping away the sides, fitting the full image with unused space, or designing a layout that places parts of the picture in a vertical canvas. A crop can make the subject larger, but it can also remove a person, instrument, sign, or caption near an edge.
FFmpeg’s crop filter takes a width, height, and horizontal and vertical position. When no position is specified, the filter centres the crop. The official FFmpeg filter documentation explains the filter’s parameters. For a landscape source where a centre crop is appropriate, this template illustrates one possible crop and scale operation:
-vf "crop=ih*9/16:ih:(iw-ih*9/16)/2:0,scale=720:1280"
This is an instructional filter expression, not a universal tested preset. It takes a vertical slice from the centre of the input based on its height and scales that slice to portrait dimensions. Check the source’s dimensions, pixel format, and the installed FFmpeg build; preview the result to confirm the crop contains what matters. A fixed centre crop is often unsuitable when a subject moves across a wide frame. Adjust the crop position or build a fit, pad, or stacked layout instead.
Once the picture is right, choose encoding settings that YouTube accepts. Its encoder settings and bitrate guidance covers RTMP/RTMPS, supported video and audio codecs, frame rates, constant bitrate, keyframe intervals, and bitrate by codec and resolution. YouTube recommends a two-second keyframe interval and says it should not exceed four seconds. Use the current table for the actual codec, resolution, and frame rate you intend to send.
As one reference point, YouTube’s guidance lists H.264 at 1080p30 with a 5 Mbps minimum and 14 Mbps recommended bitrate; for AV1 or H.265 at that resolution and frame rate, it lists 4 Mbps minimum and 10 Mbps recommended. These are YouTube recommendations, not a promise that a particular connection can sustain the feed. Select a quality your upload connection can reliably carry, leave headroom for other network use, and check YouTube’s current page before configuring a different resolution or frame rate.
FFmpeg’s command structure puts input options and the input before filters and output options. A schematic output pattern is:
ffmpeg [input options] -i INPUT [filter and encode options] -f flv 'RTMP_OR_RTMPS_INGEST_URL/STREAM_KEY'
This is a template, not a verified copy-and-run command. The input, loop or capture method, chosen encoder, audio source, endpoint, and key all vary. FFmpeg’s documentation and examples describe its input/output model and RTMP usage; confirm that the installed build includes the encoder and protocol you intend to use. Follow the URL/key format YouTube provides, and do not leave a real key in a command you plan to publish or share.
For an audio-bearing programme, configure an audio input and an accepted audio codec such as AAC or MP3. For a silent visual stream, make a deliberate decision about whether to include audio rather than allowing an unintended input or empty channel to go live. Check both picture and sound in the preview. If you are building a prerecorded loop, this guide to updating videos in an FFmpeg YouTube playlist without stopping the stream is relevant to playlist operation, though it does not replace the portrait composition and ingest setup here.
Configure a second key for a vertical feed when dual streaming
If you chose dual output, return to Live Control Room’s vertical experience and select the encoder option for the vertical preview. Choose RTMP(S) and create or select the separate stream key for that vertical feed as YouTube’s interface directs. Keep the horizontal destination and key associated with the horizontal output, and the vertical destination and key with the vertical output.
Configure FFmpeg to send content in the format each destination expects. The horizontal feed should be composed as horizontal; the vertical feed should be composed as 9:16. Do not point both commands at one key, and do not assume that one 9:16 destination will be converted into a second format. If the two versions need different framing, prepare separate filters or source layouts rather than sending the same crop to both.
Before running both, verify that your machine can encode each output and that your connection can upload them together. The required capacity depends on the chosen codecs, resolutions, frame rates, and bitrates. YouTube’s bitrate table is a starting point for each feed; test the combined workload under the conditions in which you expect to broadcast. A preview that works with one output does not establish that two outputs will remain healthy.
Keep the two output configurations clearly labelled, but keep their keys secret. If the vertical preview is absent or shows the wrong composition, confirm that the encoder route is selected, that the vertical key is the one being used for that output, and that the sent dimensions are actually portrait. YouTube may otherwise show a Studio-managed crop or layout, which is a different path from the encoder supplying a separate vertical feed.
Test the output in Live Control Room
Test before making the stream public. Send a private or unlisted test, where appropriate for your channel, and use representative movement, titles, transitions, and audio. A static frame can conceal a crop that loses a moving subject; a silent test cannot reveal an audio routing mistake. For a looped programme, check the point where it returns to its start as well as an ordinary section.
Watch the preview and stream health in Live Control Room. Confirm that the image is portrait when expected, that important content remains inside the frame, and that audio is present at a sensible level. Check status and error messages rather than judging only by whether a preview image appears. YouTube’s live stream status distinguishes states such as ready, active, inactive, and error, while health information can report detected issues.
If no picture arrives, confirm FFmpeg is running and sending data, then recheck the stream URL, key, protocol, and port. For RTMPS, verify the secure scheme and endpoint details shown by YouTube. If the stream connects but the image is not vertical, check the output dimensions and filter, then establish whether Live Control Room is using the encoder feed or a Studio-managed layout.
If the crop cuts off the subject, change its position or choose a fit or stacked composition and test again. If health warnings appear while the image looks acceptable, use the specific warning to investigate bitrate, frame rate, keyframe interval, or connection stability. Our guide to understanding a YouTube Live Control Room stream health warning can help you interpret that separate diagnostic. Do not treat a successful short test as proof of long-term continuity: monitor a longer run before relying on the setup unattended.
For a channel that needs a prerecorded video to continue broadcasting without a computer left on, StreamNeo removes the specific burden of keeping FFmpeg running locally by turning an uploaded video into a YouTube live stream that can continue with your computer switched off. It does not change the format decisions here: prepare the intended portrait composition and verify the channel’s YouTube stream setup first.
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 one 9:16 FFmpeg output create horizontal and vertical YouTube formats?
No. One FFmpeg output sends one feed in the format you configured. For simultaneous horizontal and vertical encoder feeds, use YouTube’s vertical experience and send the corresponding formats to their separate destinations, including the second key for the vertical feed.
How do I make a landscape video look portrait?
Choose a composition before encoding. A centre crop fills the vertical frame but discards content at the sides; fitting, padding, or stacking can preserve more of the source while changing how it appears. Preview the result, especially if the subject or important text moves near the edges.
Which bitrate should I use for FFmpeg on YouTube Live?
Use YouTube’s current encoder guidance for your codec, resolution, and frame rate, then consider what your upload connection can sustain reliably. The published recommendations vary by those settings, so a number from another tutorial may not suit your output. Check stream health during a representative test.
Why does YouTube show no video after I start FFmpeg?
Check that FFmpeg is sending data to the selected stream’s exact URL and key, and confirm the protocol and endpoint are correct. Then look at Live Control Room’s status and health messages. If the stream connects but the format is wrong, verify both the actual output dimensions and whether Studio is showing an encoder feed or a managed vertical layout.