У меня есть видео, в котором я хотел бы изменить масштаб времени видео на основе соотношений, считанных из файла.
Я понял, что для удвоения скорости для всего видео я мог бы использовать фильтр setpts
выполнив setpts=2*PTS
, однако я хочу изменить масштаб со временем, чтобы видео
- Старт с 1x скоростью
- На отметке 5,7564 секунды он переключится на 1,4-кратную скорость
- На отметке 10,2571 секунды он переключится на скорость 0,983333x.
- При отметке в 15.6251 секунд он переключится на 1x скорость для остальной части видео.
Я понял, что мне, вероятно, потребуется создать файл сценария, который можно было бы прочитать с помощью -filter_script:v
но я не знаю, что использовать для получения желаемого поведения.
Моим первым наивным подходом было сделать
setpts='
if(lt(T,5.7564),
1*PTS,
if(lt(T,10.2571),
1.4*PTS,
if(lt(T,15.6251),
0.983333*PTS,
1*PTS
))))'
но это приводит к тому, что видео перемещается в точках обрезки и может привести к пропуску или повторению частей видео. Теперь я понимаю, почему это происходит, но я не знаю, что мне следует делать вместо этого.
Лучше всего было бы разрезать видео на 4 сегмента и просто использовать одно setpts=#*PTS
на сегмент, но я не знаю, как это написать .