651

(104 replies, posted in Using SVP)

Mystery
performance doesn't change much, all that changes is the number of threads required, which doesn't change the number of threads that actually get created

Man, that is some logical point that I didn't think about. Are you a lawer?)
The question is... what performance difference on 15 threads?
I believe that different avisynths require optimized plugins for optimal performance.

Options in installer: SVP AS2.5 Ready or 2.6 Ready. Select checkbox.

Блин, все пропало( опять только один плеер уплавняет. Может на бущее сделаете опцию мульти плееров?)

Да как по мне все работает:) Я просто знаю, что так быть не должно, но почему-то вдруг заработало и я не против.
После перезагрузки все осталось. Правда тормозить начинает (подлагивать иногда) если 2 одновременно, но это и не удивительно.

Раньше второй плеер показывал дерганную картинку из-за отсутствия уплавнения. Сейчас нечаянно увидел какое-то подергивание первые 2 секунды в новом открытом окне плеера, а все потому что оно работает на обоих плеерах.

655

(104 replies, posted in Using SVP)

1080p movie:
AS 2.5.8 = +1100MB overall RAM used.
AS 2.6.4 and 2.6.5 = 1700MB each.

Now curious part...
4K H.263 4mn 2s Bit rate 51.0 Mbps 3840x2160 pixels Frame rate Constant 29.970 fps
This video + AS 2.6.5 = +1.55GB RAM.

I need an h264 now to test
Even more curious:
Codec ID: avc1 Codec ID/Info: Advanced Video Coding Duration: 3mn 46s
Bit rate: 22.5 Mbps Maximum bit rate: 58.1 Mbps
Width: 4 096 pixels Height: 2 304 pixels Frame rate: Constant 24.000 fps

This video + AS 2.6.5 = +1.985 MB RAM.

Sorry but to me it looks like there are personal reasons for not to use it.

As a USER I can say that crash when searching feels like Big bug. While having to patch smth with 4GB Patch feels like Developers successfully fight with natural limitations and support product and customers. Just my 2 cents;)

656

(104 replies, posted in Using SVP)

Chainik wrote:

Main issue with original AVS - it eats too much memory.

So is it memory leak or a "feature"?

Could someone do a comparison again but with newest Avisynth MT? Does it still fast at the beginning but then slows down because of too much memory when encoding?

Bandicam, кстати, умеет захватывать и кодировать это через Intel QuickSync. Но думаю, ТС из-за слабого понимания предмета не понимает советы и не сможет разобраться с этим.

Карта (а именно nvenc от Kepler и выше) может делать захват области экрана без больших трат, то есть вместо OBS использовать Shadowplay или Bandicam и возможно тормозов не будет при этом. Плюс помогает и SVP и немножко самому кодеру x264 (5-7%) в lookaheading threads. Но если вам пресеты x264 Medium/Fast/Faster/Fastest не помогают - то либо завышено требование по времени у вас, либо ПК слабый.

Программы кодирование - это лишь обложки. Работает энкодер (х264) и скрипт Avisynth с плагином SVP/Interframe. Hybrid разрешает менять все настройки кодера и ослаблять требовательность уплавнения. Если не хотите их ослаблять, менять кодер на mpeg2, покупать дискретную карту - ничего другого нет.

masaki1988
Я ничего не понимаю как там 60 фпс сделать как в свп?. Можете мне пошагово написать куда нажимать?. Пожалуйста.

Нет ибо я уже скинул инструкцию в изображении. Если вы не сможете повторить наглядный пример, то уж тратить время ради текстового я не буду - не поможет.
Завтра я может сделаю видеоинструкцию. Не для вас конкретно, просто увидел ту, что на NNM-club, и решил, что нужно это исправить.

MAG79
Этот Hybrid?
Да, программа кодирования по умолчанию у меня уже как год. Расположение настроек сложновато и с заданиями закручено (иногда автоматически не запускает новые пока все старые не удалишь из списка), но привыкнув - класс.

masaki1988
Я не понял как добавить в гибрид скрипт svp?. Можете по подробнее рассказать?
Какие скрипты, вы о чем? Interframe работает как SVP за вас - там 2-3 настройки подкрутить вместо скрипта.. Хотя если хотите свои скрипты ставить - где-то там кнопка справа внизу в меню Avisynth, но работоспособность результата не гарантируется.
http://c2n.me/3b59K1C.jpg

Может ОЗУ не хватает, может 1 винчестер не справляется. Может вам нужно обновить avisynth.dll на 2.6 MT.
Кстати, обновился наконец-то сам Xvid4PSP 5. Ничего кардинального, правда. https://code.google.com/p/xvid4psp/

masaki1988
Без SVP идет все идеально без тормозов.
И этот ответ вообще ни о чем. Нужно смотреть на конкретные цифры загрузки процессора/памяти, а не говорить, что ПК справляется с одним лишь захватом.

Перечитал тему с начала. Попробуйте Hybrid. Качаете его, Настройки-Avisynth-Frame-Interframe. Настраиваете. Может быстрее кодировать будет, больше настроек самого x264.

Рендеринга.
Чтоб понять съедает ли процесс вывода изображения с карты захвата в плеер - правой кнопкой по SVP> Настройки > Отключить.

Кстати. 5 потоков в оригинальном скрипте - это уже много. 8 - перебор. Рекомендую 2-3. Оставшиеся свободными ядра процессора x264 успешно займет. wink
Число кадров - это 2*Кол-во логических ЯдерЦПУ или 2*Кол-во MT Threads? Подозреваю - первое.
x264 будет использовать все ядра независимо от значения SetMT? Подозреваю, что да.

Я нашел причину на моем компе. Avisynth 2.6MT дает баг в этом случае...
Если не включать в скрипт SetMTMode - все будет без надписи! Если же включить MTMode - надпись появляется даже если threads=1.
P.S. Если писать SetMTMode росле #####FILTERING##### Xvid4PSP 5 MT все равно не включает - потому-то у меня вчера все работало.

У Вас есть мысли как исправить ситуацию? Хотите, включу debug mode и дам вам инфо (хоть и не знаю как smile )?

Я поставил Avisynth 2.5MT из SVP. Из минусов - декодирование видео DirectShowSource при добавлении файла в Xvid4PSP отказалось работать! На этапе Кэширования "don't know function DirectShowSource" или что-то такое.
После выбора FFMS2 я вручную выставил для видео DDS и пришлось добавлять плагин DDS.dll в скрипт.

Из еще минусов:
- Процессор работает на 60% вместо 100%
- x264 крашится почти сразу после достижения 3ГБ ОЗУ на процесс. avs4x264 - чуть позже при 4ГБ ОЗУ.
- мой хард теперь жутко скрипит от работы даже если кодирование на паузе. Раньше такое было.

ИТОГ: ИСПРАВИТЬ ВИДЕО НА МОЕМ КОМПЬЮТЕРЕ НЕВОЗМОЖНО, кроме как без MT с 6 к/с и 30% загруженностью.


Import("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\functions\AudioFunctions.avs")
Import("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\functions\VideoFunctions.avs")
LoadPlugin("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\FFMS2.dll")
Import("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\FFMS2.avsi")
LoadPlugin("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\DirectShowSource.dll")
LoadPlugin("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\bass\bassAudio.dll")

global svp_scheduler=true
global threads=3
global svp_cache_fwd=threads+10
SetMTMode(3,threads)

video = DirectShowSource("E:\Documents\Desktop\Left 4 Dead 2 01.21.2015 - 17.10.17.03.DVR.mp4", FPS=60, convertfps=true)
audio = bassAudioSource("T:\Temp\0004_0.aac")
AudioDub(video, audio)

SetMTMode(2)
ConvertToYV12()

###[FILTERING]###
LoadPlugin("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\svpflow1.dll")
LoadPlugin("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\svpflow2.dll")
LoadPlugin("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\MVtools2mod.dll")
LoadPlugin("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\masktools2-25.dll")

КОД-КОД-КОД-КОД-НЕ-МЕНЯЛ-ЕГО-КОД-КОД-КОД

trim(0,framecount-10)
###[FILTERING]###
Distributor()

Ясно. Тогда последние 2 простых вопроса на сегодня:
1) Для всех видео нужен framecount-10?
а второй забыл пока первый писал)

Спасибо. Меня беспокоит то, что эта ошибка визуализируется на видео как Лого. Это новая поза, в которой xvid4psp решил меня "полюбить". Дело в том, что она просто так решила появится. Вначале краш х264 из-за нехватки 4ГБ ОЗУ, а при следующей загрузке БАЦ, и появилось! В этой проге сидит чудище-бабай и не дает пофиксить даже одно видео.  mad Чего стоит DirectShowSource: Couldn't open a video. Such type isn't supported.

А за отладку скрипта Спасибо. FPS всегда 60, просто xvid4psp всегда меняет его на 57.903 при изменении любой настройки и я спать хотел, разок промахнулся.

Критический момент один - удалено присвоение переменной threads

Вы уверены? Если Вы про global threads=5 - оно на месте, под #Filtering.
- исключены строки регулирования кадрового кэша и управления памятью
Тоже есть. В том же месте. Я скрипт вообще почти не менял, просто SetMemoryMax и SetMT в настройках xvid4psp выставил, а distributor пришлось удалить - не работал скрипт.

Фиолетовые строки - это ведь ненормально? http://c2n.me/3b1b9cw.png

OK. Вот простенький вопрос:
С какого ... почему в результате скрипта могло такое получиться? http://gavitex.com/share/e19df6ebe

Import("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\functions\AudioFunctions.avs")
Import("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\functions\VideoFunctions.avs")
SetMemoryMax(2048)
SetMTMode(3,8)
DirectShowSource("E:\Documents\Desktop\Left 4 Dead 2 01.21.2015 - 17.10.17.03.DVR.mp4", fps=60.903, convertfps=true)


ConvertToYV12()

###[FILTERING]###
# This script was generated by SmoothVideo Project (SVP) Manager.
# Check http://www.svp-team.com for more details.


global svp_scheduler=true
global threads=5
global svp_cache_fwd=threads+10

LoadPlugin("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\svpflow1.dll")
LoadPlugin("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\svpflow2.dll")
LoadPlugin("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\MVtools2mod.dll")
LoadPlugin("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\masktools2-25.dll")


SetMTMode(2)

src=last
super_params_mini="{scale:{up:0},gpu:1}"
analyse_params_mini="{block:{w:8,h:8}}"
miniW = int(width/64)*32
miniW = (miniW<320) ? 320 : miniW
miniH = int(height/64)*32
miniH = (miniH<160) ? 160 : miniH
mini=BicubicResize(miniW,miniH).TemporalSoften(1, 1, 0, scenechange=1, mode=2)
super_mini=mini.SVSuper(super_params_mini)
vectors_mini=SVAnalyse(super_mini, analyse_params_mini)
vectors_Forward=SVConvert(vectors_mini, false)
HorizontalSpeed_luma=mini.MMask(vectors_Forward, kind=3).convertToRGB32().PointResize(miniW/8, miniH/8).PointResize(miniW/4, miniH/4).ConvertToYV12().mt_lut(y=2, u=128, v=128)
VerticalSpeed_luma=mini.MMask(vectors_Forward, kind=4).convertToRGB32().PointResize(miniW/8, miniH/8).PointResize(miniW/4, miniH/4).ConvertToYV12().mt_lut(y=2, u=128, v=128)

size=16
luma_lft=HorizontalSpeed_luma.crop(0,0,miniW/16,0).BicubicResize(size,size)
luma_rgh=HorizontalSpeed_luma.crop(miniW/16+miniW/8,0,0,0).BicubicResize(size,size)
luma_top=VerticalSpeed_luma.crop(0,0,0,miniH/16).BicubicResize(size,size)
luma_btm=VerticalSpeed_luma.crop(0,miniH/16+miniH/8,0,0).BicubicResize(size,size)
luma_drop=luma_lft.mt_lut(y=-1, u=128, v=128)

move_idx=5
y_idx=3
min_move=0.2
max_stop=0.5
drop_clip=luma_drop.ScriptClip("
    AvgLuma_lft=128-luma_lft.AverageLuma
    AvgLuma_rgh=128-luma_rgh.AverageLuma
    AvgLuma_lft_prev=128-(luma_lft.trim(1,1)+luma_lft).AverageLuma
    AvgLuma_rgh_prev=128-(luma_rgh.trim(1,1)+luma_rgh).AverageLuma
    AvgLuma_lft_next=128-luma_lft.trim(1,0).AverageLuma
    AvgLuma_rgh_next=128-luma_rgh.trim(1,0).AverageLuma

    AvgLuma_top=128-luma_top.AverageLuma
    AvgLuma_btm=128-luma_btm.AverageLuma
    AvgLuma_top_prev=128-(luma_top.trim(1,1)+luma_top).AverageLuma
    AvgLuma_btm_prev=128-(luma_btm.trim(1,1)+luma_btm).AverageLuma
    AvgLuma_top_next=128-luma_top.trim(1,0).AverageLuma
    AvgLuma_btm_next=128-luma_btm.trim(1,0).AverageLuma

    Max_lft=max(abs(AvgLuma_lft_prev),abs(AvgLuma_lft),abs(AvgLuma_lft_next))
    Max_rgh=max(abs(AvgLuma_rgh_prev),abs(AvgLuma_rgh),abs(AvgLuma_rgh_next))
    Max_top=max(abs(AvgLuma_top_prev),abs(AvgLuma_top),abs(AvgLuma_top_next))
    Max_btm=max(abs(AvgLuma_btm_prev),abs(AvgLuma_btm),abs(AvgLuma_btm_next))
    Max_all=max(Max_lft,Max_rgh,Max_top,Max_btm)
    
    MaxLuma=max(abs(AvgLuma_lft),abs(AvgLuma_rgh),abs(AvgLuma_top),abs(AvgLuma_btm))
    MaxLuma_prev=max(abs(AvgLuma_lft_prev),abs(AvgLuma_rgh_prev),abs(AvgLuma_top_prev),abs(AvgLuma_btm_prev))
    MaxLuma_next=max(abs(AvgLuma_lft_next),abs(AvgLuma_rgh_next),abs(AvgLuma_top_next),abs(AvgLuma_btm_next))
    dif=mini.YDifferenceFromPrevious
    dif_next=mini.trim(1,0).YDifferenceFromPrevious
    dif_prev=(mini.trim(1,1)+mini).YDifferenceFromPrevious
    
    GoodContrast = (max(mini.YPlaneMinMaxDifference,mini.trim(1,0).YPlaneMinMaxDifference)>20) ? 1 : 0

    drop = (MaxLuma<0.1 && MaxLuma*2<Max(MaxLuma_prev,MaxLuma_next) && dif*y_idx<max(dif_prev,dif_next)) ? 1 : 0

    drop_lft = (AvgLuma_lft_prev*AvgLuma_lft_next>0 && abs(AvgLuma_lft*move_idx)<Max_lft && abs(AvgLuma_lft)<=min_move && dif*y_idx<max(dif_prev,dif_next)) ? 2 : 0
    drop_rgh = (AvgLuma_rgh_prev*AvgLuma_rgh_next>0 && abs(AvgLuma_rgh*move_idx)<Max_rgh && abs(AvgLuma_rgh)<=min_move && dif*y_idx<max(dif_prev,dif_next)) ? 3 : 0
    drop_top = (AvgLuma_top_prev*AvgLuma_top_next>0 && abs(AvgLuma_top*move_idx)<Max_top && abs(AvgLuma_top)<=min_move && dif*y_idx<max(dif_prev,dif_next)) ? 4 : 0
    drop_btm = (AvgLuma_btm_prev*AvgLuma_btm_next>0 && abs(AvgLuma_btm*move_idx)<Max_btm && abs(AvgLuma_btm)<=min_move && dif*y_idx<max(dif_prev,dif_next)) ? 5 : 0
   
    drop = (drop==0 && MaxLuma<Max_stop && Max_lft==Max_all) ? drop_lft : drop
    drop = (drop==0 && MaxLuma<Max_stop && Max_rgh==Max_all) ? drop_rgh : drop
    drop = (drop==0 && MaxLuma<Max_stop && Max_top==Max_all) ? drop_top : drop
    drop = (drop==0 && MaxLuma<Max_stop && Max_btm==Max_all) ? drop_btm : drop
    drop_dif = (dif<0.4 && MaxLuma<min_move) ? 6 : 0
    drop = (drop==0 && drop_dif>0) ? drop_dif : drop
    drop = (drop>0 && Max_all<0.2) ? 0 : drop
    drop = (drop>0 && GoodContrast==0) ? 0 : drop

    luma=mini.AverageLuma
    luma_next=mini.trim(1,0).AverageLuma
    max_luma=max(luma,luma_next)

    drop = (drop>0 && max_luma<16.5) ? 0 : drop

    (drop>0) ? luma_drop : \
     (Max_lft==Max_all) ? luma_lft : \
      (Max_rgh==Max_all) ? luma_rgh : \
       (Max_top==Max_all) ? luma_top : luma_btm
")

fix_r50=luma_lft.mt_lut(y=-1, u=128, v=128)
fix_lr33=luma_lft.mt_lut(y=-2, u=128, v=128)
fix_l50=luma_lft.mt_lut(y=-3, u=128, v=128)
fix_r133=luma_lft.mt_lut(y=-4, u=128, v=128)
fix_r66=luma_lft.mt_lut(y=-5, u=128, v=128)

AvgDrop=127
MaxMulty=10
dblMulti=1.3
fix_clip=luma_drop.ScriptClip("
    drop=drop_clip.AverageLuma
    AvgLuma=abs(128-drop_clip.AverageLuma)
    AvgLuma_prev=abs(128-(drop_clip.trim(1,1)+drop_clip).AverageLuma)
    AvgLuma_prev_= (AvgLuma_prev==AvgDrop) ? 0 : AvgLuma_prev
    AvgLuma_prev2=abs(128-(drop_clip.trim(1,2)+drop_clip).AverageLuma)
    AvgLuma_next=abs(128-drop_clip.trim(1,0).AverageLuma)
    AvgLuma_next_= (AvgLuma_next==AvgDrop) ? 0 : AvgLuma_next
    AvgLuma_next2=abs(128-drop_clip.trim(2,0).AverageLuma)

    RightZero = (AvgLuma_prev_*MaxMulty<AvgLuma_next_) ? (AvgLuma_prev_>max_stop || AvgLuma_next_>max_stop) ? 1 : 0 : 0
    LeftZero = (AvgLuma_next_*MaxMulty<AvgLuma_prev_) ? (AvgLuma_prev_>max_stop || AvgLuma_next_>max_stop) ? 1 : 0 : 0

    drop = (AvgLuma==AvgDrop && AvgLuma_next==AvgDrop) ? -50 : 0
    drop = (AvgLuma==AvgDrop && AvgLuma_prev==AvgDrop) ? 50 : drop

    drop = (drop==0 && AvgLuma==AvgDrop && LeftZero==0 && RightZero==0) ? \
     AvgLuma_prev_>AvgLuma_next_*dblMulti ? -50 : \
      AvgLuma_prev_*dblMulti>=AvgLuma_next_ ? AvgLuma_next2==AvgDrop ? 50 : 33 : 50 : drop

    drop = (drop==0 && AvgLuma==AvgDrop && RightZero==0 && AvgLuma_next2==AvgDrop) ? -50 : drop
    drop = (drop==0 && AvgLuma==AvgDrop && LeftZero==0 && AvgLuma_prev2==AvgDrop) ? 66 : drop

    (drop==50) ? fix_r50 : \
     (drop==33) ? fix_lr33 : \
      (drop==-50) ? fix_l50 : \
       (drop==133) ? fix_r133 : \
        (drop==66) ? fix_r66 : drop_clip
")

r50=1
lr33=2
l50=3
r133=4
r66=5

super_params="{scale:{up:0},gpu:1}"
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:12,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")
fix50 = fix_all.SelectEvery(12,6).Subtitle("fix50", align=3, size=12)
fix33 = fix_all.SelectEvery(12,4).Subtitle("fix33", align=3, size=12)
fix66 = fix_all.SelectEvery(12,8).Subtitle("-fix33", align=3, size=12)
fix66p = fix_all.SelectEvery(12,8).Subtitle("fix66", align=3, size=12)
fix75 = fix_all.SelectEvery(12,9).Subtitle("-fix25", align=3, size=12)
fix50n = fix_all.SelectEvery(12,6).Subtitle("-fix50", align=3, size=12)
fix133 = fix_all.SelectEvery(12,4).Subtitle("fix133", align=3, size=12)
fix125 = fix_all.SelectEvery(12,3).Subtitle("fix125", align=3, size=12)

ScriptClip("
    AvgFix=fix_clip.AverageLuma
    AvgFix_next=fix_clip.trim(1,0).AverageLuma
    AvgFix_next2=fix_clip.trim(2,0).AverageLuma
    AvgFix_next3=fix_clip.trim(3,0).AverageLuma
    AvgFix_prev=(fix_clip.trim(1,1)+fix_clip).AverageLuma

    (AvgFix==r50) \
      ? (AvgFix_next2==lr33 || AvgFix_next2==l50) ? fix33 : fix50 : \
    (AvgFix==lr33) ? fix33 : \
    (AvgFix_next==lr33) \
     ? (AvgFix_prev==r66) ? fix75.trim(1,1)+fix75 : fix66.trim(1,1)+fix66 : \
    (AvgFix_next==l50) \
      ? (AvgFix_prev==lr33 || AvgFix_prev==r50) ? fix66.trim(1,1)+fix66 \
      : (AvgFix_prev==r66) ? fix75.trim(1,1)+fix75 : fix50n.trim(1,1)+fix50n : \
    (AvgFix==r66) \
      ? (AvgFix_next2==lr33 || AvgFix_next2==l50) ? fix50 : fix66p : \
    (AvgFix_next==r66) \
      ? (AvgFix_next3==lr33 || AvgFix_next3==l50) ? fix125.trim(1,0) : fix133.trim(1,0) : \
    last
")

trim(0,framecount-10)
###[FILTERING]###

Как всегда опять сам через много часов нашёл причину. Ощущение, что на форумах больше помогают тем, кто жестко тупит и даже азов не знает, а если умный и что-то сам понять можешь - иди, сам справишься.
1. Обновить все DLL файлы.
2. Установить HAALI Media Splitter
3. Для моего нестабильного видео нужно стабилизировать частоту, а потом уже фиксить дропы. Это я знал и раньше, но как именно это сделать и удачно смог только сейчас.
В источнике вместо FFmpegSource2 нужно использовать DirectShowSource("Адрес_И_Имя.mp4", fps=ОРИГИНАЛ(60 ИЛИ 30), convertfps=true)
4. Ссылка на все обновленные файлы http://gavitex.com/share/x2f4vmhnn

Можно в тупую выводить видео через плеер на весь экран и весь экран монитора отправлять через OBS.
Или постараться в настройках OBS выбрать окно приложения и выбрать окно плеера.

Я и сейчас мало что знаю, OBS видео просто погуглил, а остальное просто догадался. http://youtu.be/1Wkjr7Lz9n0?t=4m37s

SVP уже используется для вывода изображения в плеере.
А как использовать плеер/его изображение с обс - читать FAQ OBS. Я вот ни разу им не пользовался, но по инструкции в Youtube уже понял как минимум 1 способ и 2-й нужно еще проверить на практике.

masaki1988
А теперь внимание вопрос. Какова плеера? в обс плеера нету. Есть окно превью но оно в свп не пашет.

Вы каким плеером видео на ПК смотрите? Врубаете просмотр и транслируйте!

Подскажите нубу как и что менять там если вас не затруднит.

Папки apps и plugins и вперед с помощью гугла к успеху. Советую даже не заходить на говноdllбазы. Все с офсайтов или doom9 форума.

masaki1988
А как вы подружили обс с svp?. У меня свп не видит обс.

Из окна ПЛЕЕРА.

masaki1988
Если бы так можно было делать то возможно бы шло побыстрее все ибо там х264 по свежее.

ручками меняете все кодировщики и некоторые dll на новые.
xvid4psp 6 и 7 не работают на avisynth вообще.

Можно спросить? При попытке кодирования в Xvid4PSP 5 с GameDropFix_v4 выбивает сообщение "AviSynth Encoder Error: I don't know what "stereo_type" means"

После того, как убрал весь раздел ########## BEGIN OF MSMoothFps.avs ########## - только тогда заработало. Но ведь когда я прошу SVP сформировать скрипт для Xvid4PSP 5 - программа мне выдает его как часть скрипта. Выносил этот раздел и после FILTERING и в середине FILTERING - пока не убрал полностью не хотело работать..

Видео у меня VRF. Frame rate : 57.903 fps | Original frame rate : 60.000 fps | Minimum frame rate : 0.231 fps | Maximum frame rate : 112.570 fps
Записывал геймплей, лаги были видимо. SVP пишет Assume 57.902.
Вопрос а) как мне нужно писать значения фпс в скрипте, чтобы и фиксило дропы и четко все было (60? 57.903?). Желательный итог 60.000 Constant, чтоб на youtube залить можно было.
Прав ли я, что в источнике нужно ASSUME=60, а сразу после ConverttoYuv12 писать ChangeFPS(60.000) и тогда уже можно делать Filtering GameDropFix?

Ибо если строку Change не писать - то в итоге видео и аудио размера одинаковы, но из-за лагов в исходнике с под 0 фпс синхронизация скачками все хуже и хуже вплоть до 5 сек.

Вопрос б) Я в скрипте GamedDropFix в самый первый раз забыл выставить значение фпс и оно решило, что видео 25 к/с. На будущее, можно ли будет перемуксить в 57 или 60 (как там надо?) файл ИМЯ.264? Или заново кодировать?

SCRIPT
------------------------------
Import("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\functions\AudioFunctions.avs")
Import("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\functions\VideoFunctions.avs")
LoadPlugin("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\FFMS2.dll")
LoadPlugin("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\MVtools2mod.dll")
LoadPlugin("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\masktools2-25.dll")
Import("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\FFMS2.avsi")
LoadPlugin("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\bass\bassAudio.dll")

video = FFmpegSource2("D:\Left 4 Dead 2 01.21.2015 - 17.10.17.03.DVR.mkv", rffmode=0, threads=1, cachefile="T:\Temp\Left 4 Dead 2 01.21.2015 - 17.10.17.03.DVR.mkv.ffindex").AssumeFPS(25.000)
audio = bassAudioSource("T:\Temp\0003_0.aac")
AudioDub(video, audio)

ConvertToYV12()

###[FILTERING]###
# This script was generated by SmoothVideo Project (SVP) Manager.
# Check http://www.svp-team.com for more details.

SetMemoryMax(1024)
global svp_scheduler=true
global threads=5
global svp_cache_fwd=threads+10

LoadPlugin("C:\Program Files (x86)\SVP\plugins\svpflow1.dll")
LoadPlugin("C:\Program Files (x86)\SVP\plugins\svpflow2.dll")

SetMTMode(3,threads)
SetMTMode(2)

src=last
super_params_mini="{scale:{up:0},gpu:1}"
analyse_params_mini="{block:{w:8,h:8}}"
miniW = int(width/64)*32
miniW = (miniW<320) ? 320 : miniW
miniH = int(height/64)*32
miniH = (miniH<160) ? 160 : miniH
mini=BicubicResize(miniW,miniH).TemporalSoften(1, 1, 0, scenechange=1, mode=2)
super_mini=mini.SVSuper(super_params_mini)
vectors_mini=SVAnalyse(super_mini, analyse_params_mini)
vectors_Forward=SVConvert(vectors_mini, false)
HorizontalSpeed_luma=mini.MMask(vectors_Forward, kind=3).convertToRGB32().PointResize(miniW/8, miniH/8).PointResize(miniW/4, miniH/4).ConvertToYV12().mt_lut(y=2, u=128, v=128)
VerticalSpeed_luma=mini.MMask(vectors_Forward, kind=4).convertToRGB32().PointResize(miniW/8, miniH/8).PointResize(miniW/4, miniH/4).ConvertToYV12().mt_lut(y=2, u=128, v=128)

size=16
luma_lft=HorizontalSpeed_luma.crop(0,0,miniW/16,0).BicubicResize(size,size)
luma_rgh=HorizontalSpeed_luma.crop(miniW/16+miniW/8,0,0,0).BicubicResize(size,size)
luma_top=VerticalSpeed_luma.crop(0,0,0,miniH/16).BicubicResize(size,size)
luma_btm=VerticalSpeed_luma.crop(0,miniH/16+miniH/8,0,0).BicubicResize(size,size)
luma_drop=luma_lft.mt_lut(y=-1, u=128, v=128)

move_idx=5
y_idx=3
min_move=0.2
max_stop=0.5
drop_clip=luma_drop.ScriptClip("
    AvgLuma_lft=128-luma_lft.AverageLuma
    AvgLuma_rgh=128-luma_rgh.AverageLuma
    AvgLuma_lft_prev=128-(luma_lft.trim(1,1)+luma_lft).AverageLuma
    AvgLuma_rgh_prev=128-(luma_rgh.trim(1,1)+luma_rgh).AverageLuma
    AvgLuma_lft_next=128-luma_lft.trim(1,0).AverageLuma
    AvgLuma_rgh_next=128-luma_rgh.trim(1,0).AverageLuma

    AvgLuma_top=128-luma_top.AverageLuma
    AvgLuma_btm=128-luma_btm.AverageLuma
    AvgLuma_top_prev=128-(luma_top.trim(1,1)+luma_top).AverageLuma
    AvgLuma_btm_prev=128-(luma_btm.trim(1,1)+luma_btm).AverageLuma
    AvgLuma_top_next=128-luma_top.trim(1,0).AverageLuma
    AvgLuma_btm_next=128-luma_btm.trim(1,0).AverageLuma

    Max_lft=max(abs(AvgLuma_lft_prev),abs(AvgLuma_lft),abs(AvgLuma_lft_next))
    Max_rgh=max(abs(AvgLuma_rgh_prev),abs(AvgLuma_rgh),abs(AvgLuma_rgh_next))
    Max_top=max(abs(AvgLuma_top_prev),abs(AvgLuma_top),abs(AvgLuma_top_next))
    Max_btm=max(abs(AvgLuma_btm_prev),abs(AvgLuma_btm),abs(AvgLuma_btm_next))
    Max_all=max(Max_lft,Max_rgh,Max_top,Max_btm)
    
    MaxLuma=max(abs(AvgLuma_lft),abs(AvgLuma_rgh),abs(AvgLuma_top),abs(AvgLuma_btm))
    MaxLuma_prev=max(abs(AvgLuma_lft_prev),abs(AvgLuma_rgh_prev),abs(AvgLuma_top_prev),abs(AvgLuma_btm_prev))
    MaxLuma_next=max(abs(AvgLuma_lft_next),abs(AvgLuma_rgh_next),abs(AvgLuma_top_next),abs(AvgLuma_btm_next))
    dif=mini.YDifferenceFromPrevious
    dif_next=mini.trim(1,0).YDifferenceFromPrevious
    dif_prev=(mini.trim(1,1)+mini).YDifferenceFromPrevious
    
    GoodContrast = (max(mini.YPlaneMinMaxDifference,mini.trim(1,0).YPlaneMinMaxDifference)>20) ? 1 : 0

    drop = (MaxLuma<0.1 && MaxLuma*2<Max(MaxLuma_prev,MaxLuma_next) && dif*y_idx<max(dif_prev,dif_next)) ? 1 : 0

    drop_lft = (AvgLuma_lft_prev*AvgLuma_lft_next>0 && abs(AvgLuma_lft*move_idx)<Max_lft && abs(AvgLuma_lft)<=min_move && dif*y_idx<max(dif_prev,dif_next)) ? 2 : 0
    drop_rgh = (AvgLuma_rgh_prev*AvgLuma_rgh_next>0 && abs(AvgLuma_rgh*move_idx)<Max_rgh && abs(AvgLuma_rgh)<=min_move && dif*y_idx<max(dif_prev,dif_next)) ? 3 : 0
    drop_top = (AvgLuma_top_prev*AvgLuma_top_next>0 && abs(AvgLuma_top*move_idx)<Max_top && abs(AvgLuma_top)<=min_move && dif*y_idx<max(dif_prev,dif_next)) ? 4 : 0
    drop_btm = (AvgLuma_btm_prev*AvgLuma_btm_next>0 && abs(AvgLuma_btm*move_idx)<Max_btm && abs(AvgLuma_btm)<=min_move && dif*y_idx<max(dif_prev,dif_next)) ? 5 : 0
   
    drop = (drop==0 && MaxLuma<Max_stop && Max_lft==Max_all) ? drop_lft : drop
    drop = (drop==0 && MaxLuma<Max_stop && Max_rgh==Max_all) ? drop_rgh : drop
    drop = (drop==0 && MaxLuma<Max_stop && Max_top==Max_all) ? drop_top : drop
    drop = (drop==0 && MaxLuma<Max_stop && Max_btm==Max_all) ? drop_btm : drop
    drop_dif = (dif<0.4 && MaxLuma<min_move) ? 6 : 0
    drop = (drop==0 && drop_dif>0) ? drop_dif : drop
    drop = (drop>0 && Max_all<0.2) ? 0 : drop
    drop = (drop>0 && GoodContrast==0) ? 0 : drop

    luma=mini.AverageLuma
    luma_next=mini.trim(1,0).AverageLuma
    max_luma=max(luma,luma_next)

    drop = (drop>0 && max_luma<16.5) ? 0 : drop

    (drop>0) ? luma_drop : \
     (Max_lft==Max_all) ? luma_lft : \
      (Max_rgh==Max_all) ? luma_rgh : \
       (Max_top==Max_all) ? luma_top : luma_btm
")

fix_r50=luma_lft.mt_lut(y=-1, u=128, v=128)
fix_lr33=luma_lft.mt_lut(y=-2, u=128, v=128)
fix_l50=luma_lft.mt_lut(y=-3, u=128, v=128)
fix_r133=luma_lft.mt_lut(y=-4, u=128, v=128)
fix_r66=luma_lft.mt_lut(y=-5, u=128, v=128)

AvgDrop=127
MaxMulty=10
dblMulti=1.3
fix_clip=luma_drop.ScriptClip("
    drop=drop_clip.AverageLuma
    AvgLuma=abs(128-drop_clip.AverageLuma)
    AvgLuma_prev=abs(128-(drop_clip.trim(1,1)+drop_clip).AverageLuma)
    AvgLuma_prev_= (AvgLuma_prev==AvgDrop) ? 0 : AvgLuma_prev
    AvgLuma_prev2=abs(128-(drop_clip.trim(1,2)+drop_clip).AverageLuma)
    AvgLuma_next=abs(128-drop_clip.trim(1,0).AverageLuma)
    AvgLuma_next_= (AvgLuma_next==AvgDrop) ? 0 : AvgLuma_next
    AvgLuma_next2=abs(128-drop_clip.trim(2,0).AverageLuma)

    RightZero = (AvgLuma_prev_*MaxMulty<AvgLuma_next_) ? (AvgLuma_prev_>max_stop || AvgLuma_next_>max_stop) ? 1 : 0 : 0
    LeftZero = (AvgLuma_next_*MaxMulty<AvgLuma_prev_) ? (AvgLuma_prev_>max_stop || AvgLuma_next_>max_stop) ? 1 : 0 : 0

    drop = (AvgLuma==AvgDrop && AvgLuma_next==AvgDrop) ? -50 : 0
    drop = (AvgLuma==AvgDrop && AvgLuma_prev==AvgDrop) ? 50 : drop

    drop = (drop==0 && AvgLuma==AvgDrop && LeftZero==0 && RightZero==0) ? \
     AvgLuma_prev_>AvgLuma_next_*dblMulti ? -50 : \
      AvgLuma_prev_*dblMulti>=AvgLuma_next_ ? AvgLuma_next2==AvgDrop ? 50 : 33 : 50 : drop

    drop = (drop==0 && AvgLuma==AvgDrop && RightZero==0 && AvgLuma_next2==AvgDrop) ? -50 : drop
    drop = (drop==0 && AvgLuma==AvgDrop && LeftZero==0 && AvgLuma_prev2==AvgDrop) ? 66 : drop

    (drop==50) ? fix_r50 : \
     (drop==33) ? fix_lr33 : \
      (drop==-50) ? fix_l50 : \
       (drop==133) ? fix_r133 : \
        (drop==66) ? fix_r66 : drop_clip
")

r50=1
lr33=2
l50=3
r133=4
r66=5

super_params="{scale:{up:0},gpu:1}"
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:12,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")
fix50 = fix_all.SelectEvery(12,6).Subtitle("fix50", align=3, size=12)
fix33 = fix_all.SelectEvery(12,4).Subtitle("fix33", align=3, size=12)
fix66 = fix_all.SelectEvery(12,8).Subtitle("-fix33", align=3, size=12)
fix66p = fix_all.SelectEvery(12,8).Subtitle("fix66", align=3, size=12)
fix75 = fix_all.SelectEvery(12,9).Subtitle("-fix25", align=3, size=12)
fix50n = fix_all.SelectEvery(12,6).Subtitle("-fix50", align=3, size=12)
fix133 = fix_all.SelectEvery(12,4).Subtitle("fix133", align=3, size=12)
fix125 = fix_all.SelectEvery(12,3).Subtitle("fix125", align=3, size=12)

ScriptClip("
    AvgFix=fix_clip.AverageLuma
    AvgFix_next=fix_clip.trim(1,0).AverageLuma
    AvgFix_next2=fix_clip.trim(2,0).AverageLuma
    AvgFix_next3=fix_clip.trim(3,0).AverageLuma
    AvgFix_prev=(fix_clip.trim(1,1)+fix_clip).AverageLuma

    (AvgFix==r50) \
      ? (AvgFix_next2==lr33 || AvgFix_next2==l50) ? fix33 : fix50 : \
    (AvgFix==lr33) ? fix33 : \
    (AvgFix_next==lr33) \
     ? (AvgFix_prev==r66) ? fix75.trim(1,1)+fix75 : fix66.trim(1,1)+fix66 : \
    (AvgFix_next==l50) \
      ? (AvgFix_prev==lr33 || AvgFix_prev==r50) ? fix66.trim(1,1)+fix66 \
      : (AvgFix_prev==r66) ? fix75.trim(1,1)+fix75 : fix50n.trim(1,1)+fix50n : \
    (AvgFix==r66) \
      ? (AvgFix_next2==lr33 || AvgFix_next2==l50) ? fix50 : fix66p : \
    (AvgFix_next==r66) \
      ? (AvgFix_next3==lr33 || AvgFix_next3==l50) ? fix125.trim(1,0) : fix133.trim(1,0) : \
    last
")

trim(0,framecount-10)

###[FILTERING]###



AUDIO ENCODING
------------------------------
Encoding audio to: T:\Temp\0006.m4a
AAC Q0,45 2ch 16bit 48000khz

neroAacEnc.exe: -ignorelength -q 0.45 -lc -if - -of "T:\Temp\0006.m4a"


VIDEO ENCODING
------------------------------
Encoding video to: T:\Temp\0006.264
x264 Q21.0 1920x1080 25.000fps (38203 frames)

x264.exe: --crf 21.0 --ref 8 --deblock -1:-1 --direct auto --b-adapt 2 --trellis 2  --no-fast-pskip  --psy-rd 1.0:0.1 --partitions all --me umh --rc-lookahead 50 --sar 1:1 --output "T:\Temp\0006.264" "T:\Temp\0006.avs"

avs [info]: 1920x1080p 1:1 @ 25/1 fps (cfr)
x264 [info]: using SAR=1/1
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
x264 [info]: profile High, level 5.0

P.P.S. Фух, потратил опять не один час на обновление dll файлов xvid4psp. По какой-то причине пришлось добавить строки addplugin: MVtools2, masktools2, хотя вы писали, что GameDropFix работает только на SVP плагинах.
Так же еще кучу каких-то других dll пришлось искать и обновлять.

It's better to overclock from 60 to 72 for 24fps video.