
A reel that plays back perfectly in your editor can still be rejected, silently compressed, or stripped of its audio the moment it hits a publishing pipeline. The failure is rarely caused by one broken setting. It is almost always a mismatch — between your export profile and the platform's ingestion rules, your audio timing and a hidden re-encode pass, your file size and the transfer window, or your generated footage and the continuity expectations of a multi-scene sequence.
That distinction matters because it changes how you troubleshoot. If you treat every failure as 'the platform is broken,' you will re-upload the same file five times. If you treat every failure as a settings problem, you can fix it in ten minutes and document the fix so it never costs you again.
This guide walks through the failure classes that cause the most pain, in roughly the order you should check them: format compliance, metadata and audio integrity, AI generation artifacts, transfer and queue problems, and post-production habits that create errors before an upload ever starts. Each section includes concrete diagnostics, tool suggestions, and a short decision rule you can apply when you are staring at a vague error message.
Most platforms return uselessly generic errors — 'processing failed,' 'upload error,' 'unsupported file.' Treat these as pointers to a category, not a diagnosis. A 'processing failed' message after a successful upload almost always means a codec, container, or audio-stream problem. An error that appears before the progress bar moves is a transfer problem. An error that appears minutes or hours into a queue is a capacity, timeout, or moderation problem.
Before touching settings, run this triage. It takes five minutes and saves hours.
First, play the file locally in a browser, not in your editor. Editors are forgiving; browsers and mobile players are closer to what a platform's transcoder sees. If the file stutters in a browser but looks fine in your NLE, you likely have a variable frame rate, a long-GOP issue, or an audio stream the browser cannot decode.
Second, check the container and streams. Use MediaInfo or run ffprobe on the file. Write down four things: container format, video codec and profile, audio codec and channel layout, and frame rate mode (constant versus variable).
Third, test with a short clip. Export the first eight seconds as a separate file using the same settings and upload that. If the short clip succeeds, the problem is scale — duration, bitrate, file size, or a specific timestamp in the timeline. If it fails too, the problem is format.
Fourth, test with a stripped file. Remove all audio and upload again. Audio streams cause a surprising share of failures, especially multi-channel files or unusual sample rates.
Fifth, check the account-side limits. Duration caps, file-size caps, resolution caps, and format allowlists change over time and sometimes differ by account tier or region.
Write down which test changed the outcome. That single data point usually identifies the failure class.
This is the largest category of hard failures, and the easiest to fix once you know what to look for.
Creators often say 'the format is wrong' when they mean the codec is wrong. They are different layers. The container is the box — MP4, MOV, MKV, WebM. The codec is what is inside — H.264, HEVC/H.265, AV1, ProRes, VP9.
Most publishing pipelines accept an MP4 container with H.264 video and AAC audio. That combination is the safest default in existence. It is not the best quality per byte, but it is the most reliably ingested. Common mistakes include exporting ProRes or DNxHR masters directly to a platform, using HEVC because the camera shot in HEVC, delivering in MKV, or wrapping H.264 in MOV when MP4 would do.
If you are unsure, transcode rather than re-export. HandBrake, Shutter Encoder, and FFmpeg all produce clean H.264/AAC MP4s from almost anything.
A reliable baseline command:
ffmpeg -i input.mov \
-c:v libx264 -profile:v high -level 4.2 -pix_fmt yuv420p \
-crf 18 -preset slow \
-c:a aac -b:a 192k -ar 48000 -ac 2 \
-movflags +faststart \
output.mp4
Two flags in that command matter more than people expect. -pix_fmt yuv420p prevents the 'file plays in the editor but shows green or black in the browser' problem caused by 4:2:2 or 4:4:4 chroma. -movflags +faststart moves the metadata index to the front of the file so streaming and ingestion do not have to seek to the end.
Vertical reels are usually 1080x1920. Horizontal is 1920x1080. Square is 1080x1080. Odd dimensions — 1079x1919, for example — break encoders that require even numbers. Always export even dimensions.
Frame rate is the more dangerous variable. Platforms generally tolerate 24, 25, 30, 50, and 60 fps. What they do not tolerate well is variable frame rate, which is what many phones and screen recorders produce. A VFR file can drift out of sync with its own audio during transcoding, producing the classic 'audio slowly slides out of sync' complaint.
Fix it by forcing constant frame rate on export, or by conforming:
ffmpeg -i input.mp4 -vsync cfr -r 30 -c:v libx264 -crf 18 -c:a copy output_cfr.mp4
Also avoid mixing frame rates inside one timeline without a deliberate conform. A 24 fps clip dropped into a 30 fps timeline will either duplicate frames or drop them, and the result can look like judder that a platform's quality pass interprets as low quality.
High bitrate is not automatically better for delivery. A 90 Mbps vertical clip is often re-encoded anyway, and the re-encode is less predictable than a clean, moderate source. For 1080x1920 at 30 fps, 12–20 Mbps is a comfortable range. For 4K vertical, 40–60 Mbps.
Color is where modern pipelines get strict. If you shoot in HDR (HLG or PQ) and deliver an HDR file without correct metadata, viewers see washed-out or oversaturated footage. If you deliver an SDR file that still carries HDR side data, some transcoders misread it.
Decision rule: unless you have confirmed HDR support and a real reason to use it, deliver SDR Rec.709 with correct tagging. If you must deliver HDR, confirm the transfer function, primaries, and mastering display metadata match what the platform documents.
Format is binary — it works or it does not. Metadata and audio fail in subtler ways that still count as errors.
Sync drift has three common causes: variable frame rate source footage, mismatched sample rates between clips, and long recordings where a small offset accumulates.
Diagnose by clapping once at the start and once at the end of a long take. If the offset grows, it is drift, not a fixed offset. Fix drift at the source by conforming to constant frame rate, then re-align. Fix fixed offsets by nudging the audio track by the exact frame count.
Always deliver 48 kHz audio. 44.1 kHz works often, but 48 kHz is the delivery standard everywhere and removes one variable.
Two audio problems produce confusing downstream errors. The first is true peak clipping — samples hitting 0 dBFS and distorting. The second is a channel layout mismatch, such as a stereo file where one channel is silent, or a 5.1 file delivered to a stereo pipeline.
Target integrated loudness around -14 LUFS for social delivery, with true peak no higher than -1 dBTP. Use a loudness meter rather than your ears; ears adapt. For channel layout, collapse to stereo for social delivery unless the platform explicitly asks otherwise.
Caption errors are frequently reported as upload errors. Common issues: encoding must be UTF-8, timestamps must be sequential and non-overlapping, and file extensions must match what the platform expects (SRT and VTT are the safest). If a caption file has a byte-order mark or Windows-1252 characters, some parsers reject the entire upload. Rendered captions burned into the video avoid parser issues entirely and are worth using when a platform's caption support is unreliable.
Generated footage introduces a failure class that did not exist in traditional delivery: the clip is technically valid but visually inconsistent.
The classic symptom is a character whose face, hair, or clothing subtly changes between shots. This happens when each shot is generated independently with a slightly different prompt, seed, or reference image.
Fixes that work in practice:
If drift still appears, reduce the number of shots per scene and cut more often. Short shots hide continuity problems that long shots expose.
Temporal flicker — brightness or texture pulsing between frames — is one of the most common generation artifacts, and platforms sometimes interpret it as a low-quality encode. Reduce it by generating at a higher resolution and downscaling, avoiding extreme motion in prompts, and stabilizing exposure in post with a deflicker filter.
Morphing and limb artifacts are usually prompt problems. Hands interacting with objects, fast turns, and crowded scenes all produce them. The fix is to simplify the action: fewer subjects, slower movement, clearer camera direction.
Generation tools impose limits on clip length, reference image count, and output resolution. When a request exceeds a limit, the error message is often vague. Keep a personal reference of the limits you actually hit, because they change and because documented numbers are sometimes stricter or looser than reality.
A practical workaround for length limits is to generate multiple short clips and stitch them with a short cross-dissolve or a hard cut on motion. This also reduces the visual strain of a single long generated shot.
If an upload fails before the progress bar finishes, you are in a different failure class.
Mobile networks and unstable Wi-Fi are the usual culprits. Large files also fail more often because they need a longer uninterrupted window. Practical mitigations: upload from a wired connection when the file is above a few hundred megabytes, split long reels into parts if the platform supports a series, compress more aggressively for the upload while keeping the high-bitrate master locally, and avoid VPNs during upload because some platforms throttle or block suspicious transfer patterns.
Many platforms use chunked, resumable uploads. If a chunk fails repeatedly at the same point, the problem is often a specific byte range that the encoder produced oddly — a corrupt frame or an unclosed stream. Re-encoding the file usually resolves it.
You can also test for corruption locally:
ffmpeg -v error -i input.mp4 -f null -
Silence means the file is structurally fine. Any output means there is a decode error at that timestamp, and re-exporting from the timeline is the fastest fix.
An upload that sits in a queue for hours is usually not your file's fault. It is capacity, moderation, or a stuck job. Before assuming the worst, check whether a different, very small file uploads successfully. If it does, your account and connection are fine and the problem is the specific job. If a job repeatedly stalls at the same percentage, delete the draft and re-upload rather than waiting. Stuck jobs rarely recover.
Most upload errors are created in the last ten minutes of editing. A few habits eliminate a large share of them.
Export a delivery master and an archive master separately. The archive master can be ProRes or high-bitrate H.264. The delivery master must be the boring, widely compatible profile. Never upload the archive master.
Render audio separately. Bounce a stereo 48 kHz WAV, check it in a player, then mux it onto the video. This catches clipping, silence, and layout problems before they become upload errors.
Watch the export, not just the timeline. Play the exported file end to end at normal speed on a phone. This catches the exact artifacts viewers will see, including any that appeared only during encoding.
Keep a naming convention that encodes the important settings: project_v3_1080x1920_30fps_h264.mp4. When something fails, you can tell at a glance what you already tried.
Run this before every publish. It takes two minutes and covers the majority of failure modes.
ffmpeg -v error -i file -f null -.When the error message is useless, work backward from the symptom.
Upload fails immediately. Connection, file size, or unsupported container. Try a small test file, then a transcode.
Upload succeeds, processing fails. Codec, chroma subsampling, audio stream, or duration. Re-encode to H.264/AAC MP4 with yuv420p.
Video looks fine but audio drifts. Variable frame rate or sample rate mismatch. Conform to constant frame rate and 48 kHz.
Colors look washed out or oversaturated. Color space or HDR metadata mismatch. Deliver SDR Rec.709 with explicit tagging.
Video appears green, black, or pixelated after upload. Chroma subsampling or corrupt frames. Re-encode with yuv420p and scan for decode errors.
Character changes between shots. Identity anchoring problem. Use a locked reference and a fixed prompt block.
Flicker or pulsing across the whole clip. Temporal generation artifact or low-quality encode. Regenerate at higher resolution, or apply deflicker.
Stuck in queue for hours. Platform-side. Re-upload rather than wait.
Why does my reel play fine locally but fail on upload?
Local players and editors are permissive. They decode formats that stricter pipelines reject. The most common culprits are variable frame rate, non-standard chroma subsampling, and unusual audio configurations.
Should I always upload MP4?
For social and short-form publishing, yes. MP4 with H.264 video and AAC audio is the most widely accepted combination and the least likely to be rejected or unexpectedly re-encoded.
Is a higher bitrate always better?
No. Above a certain point, platforms re-encode anyway, and very large files increase the chance of transfer failure. Match the bitrate to the resolution and frame rate rather than maximizing it.
How do I fix audio that slowly slides out of sync?
That is drift, and it comes from variable frame rate footage. Conform the source to constant frame rate, then re-align. Nudging the audio without fixing the frame rate will only fix the first few seconds.
Why does my generated character look different in every shot?
Each shot is being generated with slightly different context. Fix a reference image, lock the seed, and reuse an identical descriptive prompt block across all shots.
Can I fix an error without re-exporting the whole timeline?
Often yes. Transcoding the existing file with FFmpeg, HandBrake, or Shutter Encoder fixes format, chroma, bitrate, and container problems in a single pass without touching the edit.
What should I do when an upload fails repeatedly at the same point?
Assume file corruption at that timestamp. Scan for decode errors, then re-export the affected section or transcode the whole file.
Do I need a separate export for every platform?
Not usually, but it helps. A single H.264/AAC MP4 at the correct vertical resolution and a moderate bitrate covers most platforms. Build separate exports only when a platform documents different requirements.
Reel errors are mostly boring, and that is good news. They come from a small set of causes: wrong codec or container, non-standard chroma, variable frame rate, audio layout and loudness problems, metadata parsing failures, oversized or interrupted transfers, and — for generated footage — continuity and artifact issues.
Build one reliable delivery preset, keep a decode-error scan in your routine, and write down which test changed the outcome whenever something fails. After a few cycles, troubleshooting stops being guesswork and becomes a checklist you can run in two minutes.

Alexander
Guida pratica al montaggio video rapido con AI: transizioni fluide, software, workflow, coerenza visiva, errori da evitare e FAQ operative.
A practical guide to planning, generating, editing, and finishing AI-assisted videos with consistent characters, clear shot lists, and reliable review loops.
Build a repeatable AI video post-production pipeline: organize assets, cut story-first, design transitions, refine audio, and review versions calmly.