FFMPEG - Получение согласованных точных временных сегментов видео

Я обрабатываю большое количество видео, которые необходимо синхронизировать по времени, чтобы они соответствовали звуковой дорожке (это проект типа «виртуальный хор»). Я пробовал несколько вариантов на основе содержимого этот пост, но я получаю изменчивость в несколько секунд в фактических выходных файлах. Результирующая длина сегмента является переменной, и точка во входном видео, с которой начинается выходное видео, совсем не точна (я ожидал +-1 ошибку кадра).

Вот моя попытка:

:: Syntax:  GetSegment.bat <input file> <starting time in mS> <duration in mS>
:: Example: GetSegment.bat vid.mp4 10000 50000
::          would produce vid-keyed.mp4 and vid-segment.mp4

@set "_VideoIn=%~1"
@set "_VideoOutKeyed=%~dpn1-keyed%~x1"
@set "_VideoOutSegment=%~dpn1-segment%~x1"
@set "_VideoStartms=%~2"
@set "_VideoLengthms=%~3"
@set /a _VideoEndms= %_VideoStartms% + %_VideoLengthms%
ffmpeg -y -i "%_VideoIn%" -force_key_frames %_VideoStartms%ms,%_VideoEndms%ms "%_VideoOutKeyed%"
ffmpeg -y -ss  %_VideoStartms%ms -i "%_VideoOutKeyed%" -t %_VideoEndms%ms  -codec copy "%_VideoOutSegment%"  
@exit /b %errorlevel%

person rossmcm    schedule 10.06.2020    source источник