A folder of property videos can be turned into a continuous YouTube Live feed with FFmpeg, but first you need to decide what “rotate” means for each clip. Correcting a phone’s orientation, fitting portrait footage into a landscape frame, choosing playback order and sending the finished feed to YouTube are separate jobs.
There is no single command that safely handles every folder. The examples below state their assumptions; inspect representative clips and test the result before applying a workflow to the whole folder. Operating system, codecs, dimensions, frame rates and audio tracks all affect the command you should use.
Decide what needs rotating
People use “rotate” to mean at least three different things. A clip may display sideways because it was recorded with a phone held in a different orientation. It may have correct orientation but be portrait-shaped when you want a landscape live frame. Or you may deliberately want every view turned by a quarter or half turn. These require different decisions.
Start by viewing a few files in a player that respects orientation metadata, then compare that view with the raw dimensions and metadata reported by FFmpeg. Some cameras store a rotation instruction as metadata while leaving the encoded pixels unchanged. Other clips have the rotation already applied to the pixels. If you apply a turn without checking, a correctly oriented shot can become sideways.
Make a simple inventory: filename, dimensions, apparent orientation, codec, frame rate, audio presence and any rotation metadata. Do not assume every property walkthrough was captured on the same phone or with the same settings. A folder may include horizontal camera footage, vertical phone clips, drone shots and still-image exports.
For each clip, choose whether to preserve its shape, transform its pixels, or place it on a common canvas. A consistent landscape programme may use portrait shots with side padding; a portrait channel may preserve them as full-height material. Cropping to fill a frame can remove a doorway, window or other important feature at the edge, so inspect the composition before choosing it.
If the channel will run for long periods, layout is only one part of the programme. The practical decisions in a YouTube live-streaming strategy include audience expectations, testing and continuity, all of which matter when a property loop is left running unattended.
Inspect samples and state your assumptions
FFmpeg has probing tools for examining media streams. A typical starting point is ffprobe -hide_banner -show_streams -show_format "sample.mp4". The output can identify video and audio streams, codec names, dimensions, frame rates, durations and format metadata. For a first pass, choose at least one ordinary clip, one portrait clip and any file that looks different from the rest.
The command is not a complete automated quality check. Read the output alongside playback: confirm that the picture is upright, that the intended audio can be heard, and that the file ends where you expect. If you see a rotation tag or display-matrix entry, note its direction and check whether your chosen player already applies it. FFmpeg versions and builds can differ, so consult the [FFmpeg documentation] (https://ffmpeg.org/documentation.html) for the installed version and filter syntax. Remove the space between the bracket and parenthesis when using that link.
Before using an example, write down its assumptions. For example: “These sample commands assume a POSIX-style shell, an installed FFmpeg build with the named filters and encoders, MP4 inputs, one video stream, optional AAC audio, and a landscape 1920-by-1080 output.” That is a description of one possible test case, not a claim about your folder. Windows PowerShell and other shells have different quoting and file-list behaviour; adjust paths and syntax for your environment.
Test on copies of short representative clips first. Use output filenames outside the source folder so a repeated run does not process its own outputs. Check that there is enough free storage for re-encoded files, and keep the originals unchanged until the transformed clips have been reviewed. A successful exit code does not establish that the framing, order or sound is right.
Correct orientation with FFmpeg
A quarter-turn can be performed with a video filter. In a POSIX shell, assuming the sample is an MP4 with a single video stream and optional audio, one example for turning pixels clockwise is:
ffmpeg -i "sample.mp4" -vf "transpose=clock" -c:v libx264 -crf 20 -preset medium -c:a aac "sample-rotated.mp4"
This is an illustrative re-encode, not a universal quality or compatibility prescription. It assumes the FFmpeg build includes the transpose filter, the H.264 encoder and AAC encoder; it also assumes the input audio can be decoded and encoded as AAC. The chosen quality value is a local test setting, not a YouTube requirement. Check the result for the intended direction and for audio synchronisation before using that filter on comparable files.
The opposite direction can use transpose=cclock; a half-turn can use hflip,vflip. Filter choice depends on the actual correction required. Rotation changes video pixels, so -c:v copy cannot perform it. Audio may be copied only when no audio conversion is needed and its format is suitable for the next stage; otherwise decode and encode it deliberately.
Do not automatically apply the same filter to every input just because they are in one directory. Make a per-file decision from inspection, or split the files into groups whose orientation correction is genuinely the same. If rotation metadata is the issue, determine whether you need to preserve or remove metadata and whether the playback or ingest path honours it. A metadata-only change and a pixel transform are not interchangeable.
After the sample pass, watch the entire output clip, including its opening and ending. Look for sideways frames, unexpected black borders, a cropped edge, changed aspect ratio, or audio that has disappeared. Repeat with a sample from each materially different group before batch processing. The FFmpeg documentation and FAQ are the primary reference for available filters and concatenation behaviour; syntax can vary with build and version.
Fit portrait clips into the intended frame
A portrait video can be delivered in a landscape programme without turning the subject sideways. The common choices are to preserve the complete image and pad the unused sides, crop the image to fill, or create a designed background behind the portrait clip. Padding retains more of the property view; cropping makes a full frame but may lose useful details. A background treatment takes extra production work and should be checked for legibility and distraction.
For a controlled example, assume a correctly oriented 1080-by-1920 portrait input, a POSIX shell, an FFmpeg build with scale and pad, H.264 output, and no audio. This command scales the whole image to fit within a 1920-by-1080 canvas and pads the remainder black:
ffmpeg -i "portrait.mp4" -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2" -c:v libx264 -an "portrait-landscape.mp4"
Here -an deliberately omits audio because the example assumes none is needed. If the clip has narration, music or location sound that belongs in the programme, remove -an and specify an audio treatment appropriate to the source and delivery settings. Do not use this command unchanged for arbitrary dimensions, rotated metadata, variable frame rates or clips with different audio needs. Inspect the output for padding colour, framing and readable detail.
A crop-to-fill approach is different: scale until the canvas is covered and crop the excess. It can be suitable for some close shots, but it can cut off a property feature or person. Review the crop against the source rather than assuming the centre is always the right point of interest. When presenting multiple aspect ratios, consider making separate outputs for separate channel formats instead of repeatedly changing the live canvas.
For an always-on channel, decide how the transition from a padded portrait clip to a full-width landscape clip should look. If the aim is a clean property showcase, a consistent frame and deliberate padding may be preferable to zooming every vertical shot. The right treatment is editorial as well as technical: preserve the information viewers need to see.
Build and verify the clip order
A folder is not a playlist. Filesystem order can differ between systems and applications, and alphabetical order may not match the order you intend. Put the desired sequence in a manifest or rename copies with zero-padded prefixes such as 001-entry.mp4, 002-kitchen.mp4 and 003-garden.mp4. A hand-curated list is often clearer when the tour has a narrative: exterior, entrance, living areas, bedrooms and grounds.
For a POSIX-shell example, a concat demuxer list can look like this:
file '001-entry.mp4'
file '002-kitchen.mp4'
file '003-garden.mp4'
Save it as playlist.txt in the directory containing the files, then inspect every line against the intended sequence. Paths with apostrophes or unusual characters need careful escaping; do not assume filenames can be pasted unmodified into the list. Keep the manifest separate from generated outputs, and use a deliberate way to repeat the programme if looping is needed.
FFmpeg’s concat demuxer can join files without re-encoding when their streams are compatible. Compatibility involves more than the file extension: stream layout, codecs, time bases and other media properties matter. If one clip is 4K and another is HD, or if audio is missing from some inputs, a direct stream-copy join may fail or yield an unsuitable result. Normalising clips to shared output properties and using a filter-based concat workflow with re-encoding is often safer when sources differ, but it requires more processing and a tested filter graph.
Do not confuse ordering with rotation. First create and check the transformed outputs, then make a manifest from those outputs in the chosen order. Play the joined result from beginning to end, including the transition points, and confirm there are no pauses, missing sections or unexpected repeats. If separate property playlists are needed for separate channels, the planning considerations in separate YouTube Live playlists are relevant; a single folder does not determine which programme a channel should show.
Check codecs, audio and output compatibility
The file you play locally is not necessarily ready to become a live encoder feed. Decide on a consistent output resolution, frame rate, pixel format, video codec, audio codec and channel layout, then make sure the prepared sequence conforms. The choice should reflect source quality and the available upload connection, not simply the largest dimensions in the folder.
For YouTube Live, current encoder guidance lists RTMP or RTMPS delivery, H.264, H.265/HEVC or AV1 video, and AAC or MP3 audio among its supported settings. It recommends constant bitrate and a two-second keyframe interval, which should not exceed four seconds. YouTube also recommends RTMPS for encrypted transport. Check the current YouTube encoder settings before configuring a broadcast, since platform guidance can change.
YouTube's listed H.264 recommendations include 10 Mbps for 1080p at 30 fps and 6 Mbps for 720p at 30 fps, with stereo audio at 128 Kbps. These figures are YouTube recommendations, not a guarantee of picture quality or a promise that an unstable connection can sustain them. As listed on YouTube Help in September 2026, these values are reference settings for the specified resolutions and frame rate; choose settings for your actual output and test the available upload capacity.
Audio deserves its own check. Some real-estate clips contain speech or location sound, while others are silent or have different audio formats. Decide whether to preserve, replace, mix or omit each track. A concat operation can be complicated by inconsistent audio presence or channel layout, so make the intended result explicit rather than accepting whatever the first input happens to define.
A 24/7 feed also needs a defined behaviour at the end of the ordered set: stop, restart the sequence, or move to another approved segment. Test the full programme structure and monitor it when live. The OBS settings guide for a 24/7 YouTube stream in India covers related delivery considerations if you are using OBS as part of your workflow; do not assume its settings replace the checks for this FFmpeg pipeline.
Send the prepared feed to YouTube Live
Once the media sequence is prepared, configure a live event in YouTube Studio and use the stream key and ingest details shown for that event. Keep the key private. FFmpeg can send an encoded live feed to an RTMP or RTMPS ingest URL, but the exact command depends on how the sequence is being produced, the codec settings chosen and how credentials are supplied. Avoid placing a real stream key in a command that may be saved in shell history, shared in a screenshot or copied into a public script.
For a continuous feed, you need a process that keeps supplying frames after each clip ends and follows the intended order. A prejoined output may suit some workflows; another workflow can feed a playlist into the encoder. Whichever method you choose, test that the transition occurs without a long black interval, that motion continues, and that sound is present only where intended. A file that plays correctly as an ordinary video is not by itself proof that the live ingest is configured correctly.
Before public transmission, make a controlled test in the relevant YouTube Studio mode and check both the preview and stream health messages. YouTube recommends testing before the event and checking audio and movement comparable to the intended stream. Its streaming tips also recommend leaving upload headroom: the total stream bitrate should fit within outbound capacity, with 20% headroom recommended. Treat that as a planning recommendation, then test the actual connection at the place and time you expect to stream.
Watch the first few transitions and monitor the broadcast rather than relying on the fact that the encoder started. If a property channel must continue while your editing computer is off, StreamNeo can remove the need to keep that computer running by taking an uploaded video and carrying it as a YouTube live stream. It does not remove the need to prepare the media, check rights, configure the channel or verify the live result.
A dependable workflow keeps an untouched source folder, an inspected set of samples, processed outputs, an explicit playlist manifest and a recorded test result. If you change source clips or output settings, repeat the checks that could be affected. For broader planning around the trade-off between a local computer and cloud playout, see YouTube Live Control Room versus cloud playout.
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 I rotate an entire folder with one FFmpeg command?
You can automate repeated work, but one filter choice is not safe for a folder whose clips may have different orientation metadata, dimensions or codecs. Inspect representative files, group clips that genuinely need the same treatment, and test a batch on copies before replacing or deleting anything.
Should I rotate the video or change its metadata?
That depends on how the orientation problem is stored and how the playback and live pipeline interpret it. Compare the metadata and the displayed image, then test the transformed output in the intended playback path; changing metadata alone does not turn pixels, and a pixel transform may make a correct clip wrong.
Can FFmpeg stream the folder directly to YouTube Live?
FFmpeg can encode and send a live feed, but you must define the playlist order, output settings and method for continuing from one clip to the next. Test ingest, audio, movement and transitions in a controlled YouTube Studio event before making the programme public.
Why does concatenation fail even when all files are MP4?
MP4 is a container, not a guarantee that the streams inside match. Different codecs, dimensions, timing properties or audio layouts can make stream-copy concatenation unsuitable; inspect the streams and consider normalising and re-encoding through a tested filter workflow.