Skip to content
streamneo.
Setup Guides13 min read

How to Configure FFmpeg to Rotate Property Tour Videos on YouTube Live

Inspect a property-tour source, choose the right FFmpeg transpose direction and frame shape, then test the YouTube Live output before going live.

sn.
StreamNeoPublished 4 October 2026
Worth sharing?

To rotate a property-tour video for YouTube Live, first confirm how the source actually displays and what shape you want viewers to see. Then put the appropriate FFmpeg transpose filter before scaling and encoding, send the result to the ingest details shown in YouTube Live Control Room, and preview the complete output before using it for a live event.

A quarter-turn is not a framing decision by itself. A rotated wide room view can become a tall image, but it will not automatically become a well-composed portrait tour, and the same input may already display upright because of its rotation metadata. Check the source and the intended final frame before using a command copied from another camera.

Inspect the source and choose the final frame shape

Start by watching the property-tour file, not by guessing from its filename or camera model. Check whether doors, window frames, labels and room geometry are upright. Some cameras record pixels in one orientation and store metadata that tells a player how to display them; another player or processing stage may interpret that metadata differently. If the source already displays as intended in the workflow you will use, adding a transpose can make it wrong.

Inspect the file’s streams and metadata with ffprobe, which is distributed with FFmpeg. Record the video dimensions, any rotation information, whether an audio stream exists, and the frame rate reported for the source. Dimensions alone do not settle the question: a file with landscape pixel dimensions may be intended to display in portrait, or its orientation metadata may already describe a display rotation. The useful test is to look at the actual image and verify how your chosen FFmpeg path handles it.

Next decide the canvas the audience should receive. Portrait framing can give a vertical phone screen a full-height view, but it can reduce the amount of a wide room visible at once. Landscape framing usually preserves more horizontal room context. That is an editorial trade-off, not a prediction about discovery or viewing performance. If the tour needs both shapes, plan and inspect two compositions; one filtered output does not create simultaneous portrait and landscape versions.

Write down the intended output dimensions before constructing the filter chain. A portrait canvas might be 1080×1920, as in the illustrative command later in this article; use that only if it suits the source and planned composition. Do not infer the right canvas solely from the original file’s dimensions, because rotation changes the effective width and height. For a practical overview of ways to deliver a prerecorded feed, see this guide to streaming a playlist to YouTube with FFmpeg.

Choose clockwise or counterclockwise

FFmpeg’s transpose video filter applies a quarter-turn. Use transpose=clock for a clockwise rotation and transpose=cclock for a counterclockwise rotation. The correct direction is the one that makes the image upright when you watch the result, not the one suggested by a camera label or someone else’s command.

A simple check is to take a short representative clip and try the likely direction. If a doorway that was tilted sideways becomes upright, the direction may be right; if the room is upside down or still sideways, remove or reverse the transform and check again. Do not stack rotations until the picture looks plausible. Recheck fixed references such as vertical door frames, printed text, windows and furniture, because a moving camera can make an incorrect orientation less obvious in a quick glance.

The other essential choice is whether the result should remain a portrait frame or be composed onto a landscape canvas. A quarter-turn swaps the effective width and height. It does not create additional image content at the sides, and it cannot restore a part of the room that was outside the camera’s field of view. If the rotated video is taller than the intended canvas, you must decide how it fits: preserve the entire image with padding, crop some edges, or make a deliberate reframing choice.

If you are changing direction or removing a filter during troubleshooting, change one thing at a time and inspect again. That makes it easier to distinguish an orientation error from a crop or scaling problem. A correct transpose fixes only the direction of the image; it will not fix missing audio, unstable delivery, or other stream-health problems.

Put rotation before scaling and encoding

In a typical filtered FFmpeg output, write the filters in the order that the picture should be processed: rotate first, then scale to fit the intended dimensions, then pad or crop to make the final frame shape. The rotation determines the image’s effective shape, so scaling before it can produce a different fit than scaling the already-rotated image. Keeping that order explicit also makes a command easier to review later.

For a portrait output that should keep the complete rotated image visible, a scale filter can fit it inside a portrait canvas while preserving its proportions, and pad can fill the unused space around it. Padding may leave bars or blank background around the image, depending on the dimensions. That is preferable to stretching a room unnaturally, but it is not always the most polished composition. If the shot has useful room context near the edges, cropping to fill a portrait canvas may discard it; review the crop rather than assuming it is acceptable.

A landscape output needs the same thought in reverse. If the source is naturally wide after rotation, scaling to a landscape canvas may preserve its composition. If it is tall, you can leave space at the sides, crop a portion of the image, or compose a background and foreground deliberately. The goal is not to fill every pixel at any cost; it is to make the room legible without distorting its proportions or cutting out important details.

Rotation and scaling require FFmpeg to decode and re-encode the video. A video filter cannot be applied while simply copying the compressed video stream with -c:v copy. This also means the output encoder and rate control must be configured for the actual output, rather than assuming the source file’s existing encoding can be passed through unchanged. For a broader comparison of FFmpeg and OBS workflows, read the guide to OBS versus FFmpeg for a prerecorded church stream.

Build and adapt the filter chain

This command shows one possible construction for a portrait canvas. It is an adaptable example, not a tested command for every camera, FFmpeg build or channel. In particular, confirm the source orientation, the output shape, audio availability and encoder support before using it:

ffmpeg -i INPUT \\
  -vf "transpose=clock,scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" \\
  -c:v libx264 -pix_fmt yuv420p \\
  -c:a aac -b:a 128k -ar 44100 \\
  -f flv "RTMPS_INGEST_URL/STREAM_KEY"

Replace INPUT with the input filename, and replace the destination placeholders with the ingest URL and stream name or key supplied by YouTube’s current stream setup. Do not paste a real key into a published article, screen capture or shared log. The sample uses transpose=clock; use transpose=cclock only if that is the direction the source needs, or omit transpose if the image already displays correctly.

The scale and pad sequence fits the transformed image inside a 1080×1920 portrait canvas without stretching it. Change those dimensions if your intended output differs. If the target is landscape, use dimensions for that output and reconsider the fit strategy: the example’s portrait canvas is not a universal choice. You may instead choose a deliberate crop or build a more considered composition if padding is unsuitable.

Before turning the example into a production command, inspect your input and explicitly map the streams you want. If the file has several audio tracks or video streams, relying on default stream selection can send the wrong one. Use -map deliberately for the intended video and audio streams. If audio is absent, provide an appropriate audio input or mapping rather than expecting the command to create sound; YouTube’s stream health checks can flag missing audio.

The sample uses libx264, AAC audio, and FLV output as an example of command structure, not a guarantee that these options are available or suitable in every build. Confirm that your FFmpeg build includes the encoder you intend to use. The sample’s audio settings correspond to YouTube’s listed stereo recommendation in the current encoder guidance, but audio needs depend on the source and channel. Keep the actual stream key private, and confirm the complete destination format expected by your encoder and the supplied YouTube ingest details.

Use the ingest details from YouTube

Create or select the live stream in YouTube Live Control Room and use the ingest address and stream name or key shown for that setup. YouTube’s live streaming encoder settings give the current delivery guidance, including supported ingest protocols and video encoder options. YouTube recommends RTMPS as the encrypted ingest option; use the address displayed for your stream rather than constructing one from an example found in a tutorial.

The stream name or key is a credential for sending a feed to the channel. Keep it out of source code repositories, shared terminals, screenshots, published commands and logs that other people can read. If it is exposed, use YouTube’s current controls to replace or reset it. Check the stream setup in the Control Room before the event, since interface labels and available choices can change.

If you use the YouTube Live Streaming API or another production tool, distinguish the stream’s ingest configuration from the broadcast itself. The YouTube Live Streaming API documentation describes stream resources and ingestion details. Use the address and stream name supplied for the actual configuration; do not treat a sample URL or key in documentation as a destination for your channel.

A single command with one filtered output delivers one orientation and frame shape. If a production needs both landscape and portrait, plan separate outputs and check both previews and stream details. YouTube’s vertical live streaming guidance describes vertical output and related workflow choices. Availability and exact interface options can vary, so confirm what your account and current Control Room offer rather than assuming a particular dual-output arrangement.

Match codec and bitrate to the output

Do not choose a bitrate until you have chosen the output codec, resolution and frame rate. YouTube’s current encoder settings page gives recommendations by those variables, along with guidance for keyframes and constant bitrate encoding. For example, in YouTube’s current table, 1080p at 30 fps is listed at 14 Mbps for H.264 and 10 Mbps for AV1 or H.265; 1080p at 60 fps is listed at 17 Mbps for H.264 and 12 Mbps for AV1 or H.265. These are YouTube recommendations, not a claim that your connection or camera can sustain them.

The same table lists 720p at 30 or 60 fps at 8 Mbps for H.264 and 6 Mbps for AV1 or H.265. Choose the row for the actual output you intend to send, not the resolution of the input file before rotation or a frame rate you have not selected. YouTube’s settings also recommend a two-second keyframe frequency and say not to exceed four seconds, and recommend constant bitrate encoding. Check the current page before the event, because guidance can change.

Intended output YouTube-listed video bitrate recommendation What to verify
1080p at 30 fps, H.264 14 Mbps Confirm the encoder and the connection can sustain the chosen output.
1080p at 30 fps, AV1 or H.265 10 Mbps Confirm the encoder supports the codec and YouTube accepts the configured feed.
1080p at 60 fps, H.264 17 Mbps Use this row only if the output is actually 60 fps at 1080p.
1080p at 60 fps, AV1 or H.265 12 Mbps Check the same resolution and frame-rate conditions.
720p at 30 or 60 fps, H.264 8 Mbps Select based on the actual output, not an assumed camera setting.
720p at 30 or 60 fps, AV1 or H.265 6 Mbps Check the current YouTube guidance and encoder capability.

For property tours, camera movement and fine architectural edges can make compression artefacts visible. A slow pan past a tiled wall, window frame or patterned floor may reveal problems that are not apparent in a static test image. At the same time, a bitrate recommendation does not guarantee a clean stream over an unreliable upload path. Test the available upload capacity and the complete output, then use YouTube’s health feedback to identify whether the chosen settings are acceptable.

Do not copy a bitrate from a different resolution or codec simply because it appears in a working command. Rate-control flags also depend on the encoder and build. A command can express a target and maximum rate with a buffer, but those numbers must be selected for the relevant YouTube recommendation and configured correctly for the encoder in use. If you need to keep a feed running without leaving a computer on overnight, StreamNeo addresses that specific operating burden by running an uploaded video as a YouTube live stream from the cloud; it does not remove the need to prepare and check the video and channel settings.

Preview the rotated stream before going live

Test the output with a representative section of the tour before a scheduled live event. Include the kinds of pans, turns and room transitions viewers will see, along with the audio. Preview the actual encoded output or use a private test setup, then verify that doors, windows, signs and room geometry are upright, the intended frame shape is clear, and important room details have not disappeared into a crop.

Check the audio path even if the video is your main concern. Confirm that the intended track is present and that YouTube’s preview and health messages do not report missing audio or an unsupported configuration. Listen during movement and transitions as well as during a still shot. A visually correct transpose cannot fix an empty audio stream, a bad map, or a separate ingest issue.

Watch the Live Control Room stream health feedback while testing. YouTube’s Live Streaming API can report configuration and health issues such as missing audio, unsupported codec, high or low bitrate, bitrate starvation, frame-rate mismatch, long or mismatched GOP spacing, and unsupported or suboptimal resolution. Treat these messages as evidence about the delivered feed; do not assume a rotation filter is at fault when the issue concerns rate, codec or audio.

If the picture is sideways, first verify whether the source was already oriented correctly, then reverse the transpose direction or remove it and inspect again. If the image is upright but looks squeezed, revisit the scaling and padding rather than changing rotation. If a room appears cut off, decide whether the output should show the full frame with padding or use a carefully chosen crop. To prevent a separate operational failure from a sleeping machine, see how to keep a YouTube stream from stopping when the computer sleeps.

A good test uses the same ingest setup, encoder settings, audio path and representative movement planned for the real stream. Check the final orientation and composition in the viewer-facing preview, not only in a local player, because players may interpret rotation metadata differently. When you change a filter or encoding option, test the result again. Rotation is one part of a reliable output, not a cure for unrelated stream problems.

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

Which FFmpeg transpose direction should I use?

Use transpose=clock for a clockwise quarter-turn and transpose=cclock for a counterclockwise quarter-turn. Confirm the result on a representative clip; camera orientation and rotation metadata vary. If the source is already upright in your FFmpeg output, do not add a transpose.

Should I scale before or after rotation?

Apply rotation before scaling and encoding so the scaling and fit decision use the transformed image shape. Follow it with a deliberate fit strategy, such as preserving the image within a canvas using padding or cropping to a chosen composition. Preview the frame to ensure it is neither stretched nor missing important room detail.

Will one FFmpeg output create portrait and landscape streams?

No. A single filtered output has one orientation and frame shape. If you need both at once, configure separate outputs and verify the current YouTube stream setup and each preview rather than assuming one crop works for both.

What bitrate should I use for a rotated property tour?

Rotation does not determine bitrate. Choose the recommendation on YouTube’s current encoder settings page for the output codec, resolution and frame rate, then test that the connection and encoder can sustain it and inspect stream health. Do not borrow a value from a different output format.

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