Это здорово, что удалось разобраться самостоятельно.
Решение в лоб - это действительно довольно много строчек кода скрипта. Можно ли их сократить? Да. Возможен, например, такой вариант: удвоение с прореживанием.
setMtMode(5,4)
AviSource("sample.avi")
setMtMode(2)
myGPU = true
threads=4
super_params = (myGPU==true) ? "{gpu:1}" : "{gpu:0}"
analyse_params="{main:{search:{coarse:{distance:4,bad:{sad:2000}},type:2,distance:4},penalty:{lambda:1,pglobal:10000}},refine:[{thsad:65000}]}"
smoothfps_params="{rate:{num:2,den:1},algo:13,scene:{blend:true}}"
super=SVSuper(super_params)
vectors=SVAnalyse(super, analyse_params)
fix_all = SVSmoothFps(super, vectors, smoothfps_params, mt=threads, url="www.svp-team.com")
SelectEvery(fix_all, 48, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 47)
Distributor()
Тут все просто. После удвоения кадров из 24 исходных получится 48 кадров, где каждый четный кадр - исходный, а нечетный - промежуточный. Поэтому нужно при помощи SelectEvery выбрать четные, добавив к ним в месте скачка нечетный кадр, соответствующий промежуточному положению объектов в кадре ровно из середины этого скачка. В скрипте предполагается, что скачок после 23-го кадра (46-ой после удвоения). После работы скрипта видео с частотой 24 к/сек станет иметь скорость 25 к/сек, т.к. к исходным 24-ем кадрам добавлен еще один.