ffmpeg concat of .ts files – issues in one file causes all audio/video after to be out of sync

I’ll start by saying I need a solution that can be automated in code, i.e. not one that requires me to manually select timestamps and trim files, and unfortuntely my media server (Jellyfin) only has access to ffmpeg, so I’m looking for an ffmpeg solution.

I have a set of .ts files that were recorded from a live stream. The media server will immediately restart the recording if for some reason ffmpeg fails during the copy process. So I end up with multiple files that I can then concatenate. Most of the time this works fine.

The current issue is that (as happens occasionally) one of these files, which is about 10 seconds long, has about 5 seconds of good data, and 5 seconds of what appears (in players) to be essentially nothing, video is still and no audio. The rest of the files, before and after, are are fine. The media server (which uses ffprobe) reports that the framerate for the problematic file is 15fps, however I suspect that this is a result of the gap causing bad math, because the first 5 seconds appear to be fine and running at 29.###fps, so maybe the missing data at the end is affecting the calculated framerate, but admittedly I don’t know exactly what’s happening under the hood.

I need to concat these files, but after I run the concat, all video after that problematic 10s file is out of sync with the audio.

I’m fine with gaps, pauses, missing audio, etc in that small portion of the final file, but what I need to avoid is having that single file cause all the remaining content to be out-of-sync or otherwise broken. So I think I need a way to “correct” that problematic file before the concat, and I need to do so in a way that does not require me to manually select timestamps, per my first comment.

I have personally seen .ts have timestamp issues so my code already does a simple remux of all the ts files to mp4 prior to concat, and have also tried a remux of a final concatenated ts file, neither of which resolve this issue.

Is there any other ffmpeg process I can run on the files, that might force ffmpeg to correct timestamps, which would allow me to concat successfully? I’m not necessarily trying to recover data in the bad file, I’m just trying to ensure that I can concat a set of files and have the final file resemble what one would see when watching each file independently.

More details on what I tried…

  • During the remux I used the -shortest flag, assuming maybe the audio stream was a different length than the video.
  • Also tried the -reset_timestamps 1 flag in the remux.
  • The remux command looked like this: ffmpeg.exe -y -i “Invictus 2025_07_22_05_25_00_4_concat0.ts” -reset_timestamps 1 -vcodec copy -acodec copy -map 0:v -map 0:a -shortest “Invictus 2025_07_22_05_25_00_4_concat0.mp4”