Guides · LosslessCut export QA

Audit a LosslessCut export for duration padding and mid-GOP dead-air leak

Published

By ToolBrivio Editorial

Gray #333 dead-air frame from our mid-GOP LosslessCut Export+merge — duration-audit Guide cover
Cover still, October 16, 2026: gray #333 dead-air frame from our mid-GOP Export+merge fixture (evidence-midgop-gray-dead-air.png / mg_12.0.png). Same leak the checklist below flags — not the green KEEP timeline on the LosslessCut product review.

You just exported KEEP segments from LosslessCut. Do not drop that MP4 into HandBrake, Premiere, or Resolve yet. First check whether the container duration matches the keep length you marked, whether video packet counts match expected frames, and whether a mid-GOP cut leaked dead-air gray into the junction — then decide whether the file is clean enough to encode for delivery.

This Guide is the post-export QA checklist. The same-day LosslessCut interview-cut review covers how we marked segments and exported. Do not treat them as the same article.

Test note: October 16, 2026, Asia/Shanghai, Debian GNU/Linux 13 (trixie). Tools: LosslessCut 3.69.0 (official Linux x64 tarball); ffmpeg / ffprobe 7.1.5-0+deb13u1. Fixture: 36.000 s Seattle interview, 1280×720 H.264 (keyint=30) + AAC eng + soft captions. We probed exports under evidence/losslesscut/out/. We did not run HandBrake (or any other delivery encoder) on these files — HandBrake appears only as the decision gate after QA.

Accept criteria before you encode

Persona: an editor who already cut dead air in LosslessCut and needs a binary go / no-go before a delivery encode. Minimum checks:

CheckPASSFAILHOLD
Stream copy (optional)Export log shows -c copy on mapped streamsUnexpected re-encode in the logged ffmpeg lineNo export log available
Container duration vs keepDuration within your delivery tolerance of expected KEEP sumMulti-second unexpected content you can see at the junctionYou never recorded expected keep length
nb_read_packets vs framesPacket count matches expected picture length at nominal fpsExtra packets that sample as dead air / wrong segmentUnknown fps / keyint assumptions
Junction / blackframeNo unwanted near-black (or dead-air color) at the cutMid-GOP gray (#333) or other dead-air leak in keep timeline—
A/V duration deltaTens of ms (AAC priming scale)Multi-second A/V drift in ffprobe durationsPlayer sync not measured here

In our fixture, mid-GOP gray leak at the junction is an automatic FAIL for clean interview delivery — even though the export still used stream copy.

1. Confirm what LosslessCut wrote (optional but useful)

If you still have the app log from Export+merge, scan for copy codecs. Our keyframe keep merge logged lines like:

ffmpeg … -t '12.000000' … '-c:0' copy '-c:1' copy '-c:2' copy … KEEP A …
ffmpeg … -ss '24.000000' -i … '-c:0' copy … KEEP B …
ffmpeg … -f concat … '-c:0' copy '-c:1' copy '-c:2' copy … cut-merged …

Codecs on the merged MP4 were h264 + aac + mov_text. The Success dialog itself warned: “Cutpoints may be inaccurate.” Treat that as a reminder to run the probes below — not as proof the file is wrong.

2. Probe container duration and streams

ffprobe -hide_banner -show_entries format=duration -show_streams -of default export.mp4

On keep-merged-keyframe.mp4 we measured format duration ≈ 25.021 s (duration=25.021333), not the exact 24.000 s of KEEP A (0–12) + KEEP B (24–36). Video stream duration reported 25.000000 with nb_frames=720; audio AAC 25.021333. A/V duration delta ≈ 21 ms — AAC priming scale, not multi-second drift.

If you do not know the expected keep sum, mark HOLD and stop guessing from the filename alone.

3. Count video packets

ffprobe -count_packets -select_streams v:0 \
  -show_entries stream=nb_read_packets,codec_name \
  -of default=noprint_wrappers=1 export.mp4

Our keyframe merge reported nb_read_packets=720 (codec_name=h264). The mid-GOP merge reported 735 packets. Separate-files segA (marked 0–12 s) had 360 packets while format duration=13.000000 — container longer than the 12 s of frames those packets represent (duration padding).

4. Sample the junction (blackframe + stills)

When dead air in the source was near-black, a blackframe pass is a quick reject screen:

ffmpeg -i export.mp4 -vf blackframe=amount=98:threshold=32 -an -f null -

Our keyframe-aligned merge produced no hits (empty probe). That does not catch mid-GOP gray (#333) dead air — blackframe looks for near-black, not medium gray. Pull stills around the KEEP junction:

ffmpeg -ss 12.0 -i export.mp4 -frames:v 1 junc_12.0.png
ffmpeg -ss 12.4 -i export.mp4 -frames:v 1 junc_12.4.png

On the mid-GOP merge (end=12.5 / start=24.4), LosslessCut still logged -c copy, with -t 12.500000 and -ss 24.400000 (keyframe seek before -i). Extracted frames at ~12.0–12.4 s sampled as dead-air gray (#333) — the leak that fails clean interview delivery.

Extracted frame at about 12.0 seconds from mid-GOP merged MP4 showing uniform gray dead-air
Evidence still, October 16, 2026: out/frames/mg_12.0.png from keep-merged-midgop.mp4 — uniform gray dead-air (~#333) inside the exported keep timeline after a mid-GOP cut.

Worked compare (our probes)

ExportFormat durationVideo packetsJunction / pictureVerdict for clean delivery
Keyframe merge (keep-merged-keyframe.mp4)≈ 25.021 s (vs 24.000 s marked keep)720blackframe: no hits; A/V Δ ≈ 21 msPASS* (padding noted)
Mid-GOP merge (keep-merged-midgop.mp4)≈ 25.021 s735Gray (#333) frames ~12.0–12.4 sFAIL mid-GOP leak
Separate segA (0–12 s mark)13.000 s360 (12 s of frames)Container longer than frame contentHOLD / note padding**

*PASS here means “no mid-GOP dead-air leak and no multi-second A/V drift in ffprobe”; the ~1 s container padding vs marked keep is expected lossless-cut behavior on this fixture — decide against your delivery tolerance.
**segA alone is not a merge verdict; flag duration padding before you assume the file is exactly 12.000 s of picture.

Decision gate

  • PASS — duration/packets within tolerance; no mid-GOP dead-air leak → safe to hand a copy to a delivery encoder such as HandBrake (or an NLE). We did not test HandBrake quality on these files.
  • FAIL (mid-GOP leak) — recut on keyframes in LosslessCut, or accept the leak and send to a delivery encoder knowing the gray/dead-air frames remain in the bitstream until a re-encode that can retime them.
  • HOLD — you lack expected keep duration, fps, or export log context; do not invent a pass.

Download the checklist

Download the LosslessCut export duration-audit checklist (Markdown). Fill expected keep length before you probe, attach ffprobe excerpts on rejects, and keep the LosslessCut original untouched when you open an encode copy.

FAQ

What should I check after a LosslessCut Export+merge before encoding?

On our October 16, 2026 Seattle fixture (LosslessCut 3.69.0 / ffprobe 7.1.5), we checked container duration vs expected keep length, video nb_read_packets vs expected frames, A/V duration delta, blackframe hits, and extracted frames at the KEEP junction for mid-GOP gray dead-air leak — before any delivery encode.

What failed the mid-GOP export in our test?

The mid-GOP project (end=12.5, start=24.4) still used stream copy (-c copy) with ffmpeg -t 12.500000 and -ss 24.400000, but extracted frames around 12.0–12.4 s in the merged MP4 were dead-air gray (#333). Packet count was 735 vs 720 on the keyframe-aligned merge. Treat that leak as FAIL for clean interview delivery.

Is container duration longer than keep length always a fail?

Not by itself in our evidence. The keyframe-aligned merge measured format duration ≈ 25.021 s against 24.000 s of marked KEEP A+B, with 720 video packets and no blackframe hits. Separate-files segA showed duration=13.000 s with only 360 video packets (12 s of frames) — container padding. Decide against your delivery tolerance; HOLD if you lack an expected keep length.

Did you test HandBrake on these exports?

No. HandBrake appears only as the delivery-encoder decision gate after QA. We did not measure HandBrake encode quality, presets, or sync on these fixtures.

Honest limits

  • Windows, macOS, and mobile LosslessCut UIs were not tested.
  • Smart Cut mode was not tested.
  • Hour-long / multi-GB sources were not tested (fixture is a 36 s synthetic Seattle interview).
  • HandBrake (or any delivery encoder) encode quality was not tested on these exports.
  • Player A/V sync beyond the ffprobe duration delta (~21 ms) was not measured.

When the checklist fails on mid-GOP leak, recut on keyframes or document the leak before encode. When it passes, encode a copy and keep the LosslessCut export bit-identical for the dispute trail.

Test basis: probes on October 16, 2026 under evidence/losslesscut/. Companion product review: LosslessCut interview-cut review.

The ToolBrivio digest

Better software choices, in your inbox.

A weekly selection of software reviews and practical guides. Launching soon — leave your email to join the waitlist.