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