ML retiming inserts frame from previous file when batch processing (FCP, Compressor)

Problem

Previous file’s 4.1s frame gets injected into next file at 4.1s


When

Given a batch of small clips (001.mov, 002.mov, …), either:

  • in Final Cut by sharing to a destination of a compressor preset
  • or by manually starting a batch of individual files in Compressor


Reproducible

  • When retiming with "Best (Machine Learning)"
  • Regardless of encoder: ProRes to ProRes or ProRes to H.264.
  • Regardless of "Enabling additional compressor instances"


Not Reproducible when

  • Retiming with "Fast (Nearest frame)"
  • No batch processing (singular file with ML retiming works well)


Steps

Create three .mov files of 10 secs, 4K, 30fps, ProRes 422 HQ


I used three solid colors with a timecode overlay.

vid-001.mov // Red

vid-002.mov // Green

vid-003.mov // Blue


Create a droplet

  • QuickTime
  • 60fps
  • ProRes 422
  • Retiming Quality: Best (ML)


Drop the three .mov files to the droplet


Problem

vid-002.mov (green) has a red frame at 4.1s. That frame came from the previously processed, vid-001.mov, and it corresponds to 4.1s there as well.



---

Final Cut Pro 11.1.1

Compressor 4.10.1

M4 Pro

macOS 15.5

MacBook Pro 14″

Posted on Jul 10, 2025 6:50 PM

Reply
Question marked as Top-ranking reply

Posted on Jul 13, 2025 11:58 AM

Thank you joema. I was able to reproduce it on an M1 Pro (with the same macOS, Compressor, and FCP versions).


---


If it helps, I wrote this little tool for detecting the stray frames and printing their timestamps.


brew tap ericfortis/fcpscene
brew install fcpscene


cd ~/Movies/video_foo
for f in *.mov; do
  cuts=$(fcpscene --quiet --min-scene-seconds 0 --mode list "$f")
  if [[ $cuts ]]; then
    echo "$f" "$cuts"
  fi
done


video_foo_018.mov 0.0166667
video_foo_064.mov 0.866667 2.066667
video_foo_073.mov 0.866667 2.066667


Those `video_foo*` above are 25fps 1080p.


On the other hand, 30fps 4K videos seem to have the issue at 4.10000 and 8.20000 (not always but highly consistent). Can't confirm, but I think the issue is not reproducible in videos under 4seconds long.


---


My current workaround is using this AppleScript below, which schedules one video at a time, and waits for "TranscodeService" not to exist before starting each job.


This way I don’t see the stray frames. Although I had to add a two-seconds delay after "TranscoderService" ends.

https://github.com/ericfortis/final-cut-pro-automation/blob/main/batch-compressor-droplet.applescript


17 replies

This thread has been closed by the system or the community team. You may vote for any posts you find helpful, or search the Community for additional answers.

ML retiming inserts frame from previous file when batch processing (FCP, Compressor)

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple Account.