Free browser-based media tool

Joining Clips From Different Devices: Why the Merge Fails and How to Fix It

A stream-copy join breaks when clips come from different phones, cameras or screen recorders. Here is how to spot the mismatch before you merge and which fix to apply.

Joining Clips From Different Devices: Why the Merge Fails and How to Fix It

A stream-copy join breaks when clips come from different phones, cameras or screen recorders. Here is how to spot the mismatch before you merge and which fix to apply.

Why the problem only appears when the sources differ

Merging files from one single source is the easy case, because a phone or camera keeps the same encoder settings every time you press record. Android phone, iPhone, DSLR and OBS screen recorder each make their own choices about resolution, frame rate, audio sample rate and pixel aspect ratio, and those choices are baked into the file.

That is why a merge that worked yesterday can fail today: the files look identical in a file browser, but the streams inside them were encoded by different settings. The file name extension tells you nothing about this.

How to spot the mismatch before you merge

  • Check resolution first. Open each clip in a player and note the reported width and height. 1920x1080 plus 3840x2160 is an obvious mismatch.
  • Watch for frame rate differences. 30fps and 60fps clips concatenated without normalisation produce visible stutter at the join point and a drifting total duration.
  • Listen for the audio. Clips with no audio track at all are a common cause, and so are clips recorded with different sample rates such as 44.1kHz versus 48kHz.
  • Check orientation. A clip recorded in portrait mode is a rotated landscape stream with a rotation flag, which stream copy carries over unchanged.

Three fixes, in order of preference

  • 1. Merge the matching clips together first, then handle the odd one separately. If three of four clips came from one phone, joining those three is the cheapest operation you can do.
  • 2. Re-export the odd clip with the same settings as the rest, then merge everything with stream copy. This costs one re-encode instead of re-encoding the whole join at the end.
  • 3. Use unified re-encode for the whole job. The first clip defines the target resolution and frame rate, and every other clip is scaled, padded and re-timed to match it. It always works, and it is the slowest option.

Why the browser makes this trade-off visible