Topic: Как изменить скрипт для рипа DVD с помощью MeGui?

Перевожу DVD-видео в MKV. Хотел попробовать создать уплавнённый рип. Как мне модифицировать AVS-скрипт?

Простейший скрипт выглядит так:

LoadPlugin("C:\Program Files\Видеообработка\megui\tools\dgindex\DGDecode.dll")
DGDecode_mpeg2source("G:\- Фильмы\SomeMovie\VIDEO_TS\VTS_01_1.d2v", info=3)
LoadPlugin("C:\Program Files\Видеообработка\megui\tools\avisynth_plugin\ColorMatrix.dll")
ColorMatrix(hints=true, threads=0)
#deinterlace
#crop
#resize
#denoise

Этот скрипт затем обрабатывается кодером x264 в 2 прохода.

SVP выдаёт скрипт... куда его включить?

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

я бы включил его после #denoise
а первой строкой в скрипте указал бы SetMTMode(3,4)

Вот пример AVS-скрипта, сохраненного при помощи SVP 3.

svp_scheduler=true
SetMemoryMax(1024)
svp_cache_reduce=true
svp_flow_lib="C:\Program Files\SVP\Plugins\MVTools2\libflowgpu.dll"
multinum=5
multiden=2
algo=23
block=false
ml=0
search=4
sadml=100
sadgamma=1
blend=true
dist=1
pel=1
Recalc=0
blkh=16
blkv=16
overlap=0
overlapv=0
wid_den=1
hei_den=1


LoadPlugin ("C:\Program Files\SVP\Plugins\MVTools2\mvtools2.dll")
SetMTMode(3,4)
DirectShowSource("D:\\Azureus Rising - Proof of Concept.mp4", fps=24, convertfps=true, pixel_type="YV12")
width!=640 || height!=360 ? last : Eval("""

SetMTMode(2)
src=last
wid_den==1 ? last : \
hei_den==1 ? LanczosResize(int(width/wid_den/2)*2,height) : LanczosResize(int(width/wid_den/2)*2,int(height/hei_den/2)*2)
super=MSuper(pel=pel, hpad=blkh, vpad=blkv)
finest=pel==1 ? super : MFinest(super)
backward_vec=MAnalyse(super, isb=true, blksize=blkh, blksizev=blkv, overlap=overlap, overlapv=overlapv, search=search, searchparam=dist, pelsearch=dist, plevel=0)
forward_vec=MAnalyse(super, isb=false, blksize=blkh, blksizev=blkv, overlap=overlap, overlapv=overlapv, search=search, searchparam=dist, pelsearch=dist, plevel=0)
backward_vec = Recalc==0 ? backward_vec : MRecalculate(super, backward_vec, blksize=blkh2, blksizev=blkv2, overlap=int(overlap/4)*2, overlapv=int(overlapv/4)*2, search=search, searchparam=dist)
forward_vec  = Recalc==0 ? forward_vec  : MRecalculate(super, forward_vec, blksize=blkh2, blksizev=blkv2, overlap=int(overlap/4)*2, overlapv=int(overlapv/4)*2, search=search, searchparam=dist)
smooth_video=MSmoothFps(super, backward_vec, forward_vec, finest=finest, num=FramerateNumerator(last)*multinum,den=FramerateDenominator(last)*multiden, algo=algo, ml=ml, sadml=sadml, sadgamma=sadgamma, block=block, blend=blend)
smooth_video
""")


distributor()

красные строки - удалить

3 (edited by vkams 11-04-2011 08:39:04)

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

Подставил пример и - надо же! - пакует плавное видео. Однако, в то время как при обычном сжатии видео или при уплавнении на лету процессор (Athlon II x4 620) грузился на 100%, в данном случае - сохранение в файл - примерно на 60%. Как можно повысить КПД?

И ещё 3 вопроса:
1) выполняет ли LanczosResize(int(width/wid_den/2)*2,int(height/hei_den/2)*2) дополнительное преобразование и если да, зачем?

2) какую выходную частоту кадров предпочесть - 50 или 60 Гц? У мониторов обычно 60, у телевизоров 50 - как они примут 60?

3) предполагаю, что SVP заодно сглаживает картинку. Тогда я могу отключить фильтры, например, TemporalSoften(4,6,10,15,2) ?

Спасибо за помощь!

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

vkams
Как можно повысить КПД?
1. Если нужно быстрее и качественнее, то сжимать надо не в 2 прохода, а в один проход и сохранять в какой-нибудь беспотерьный формат, а затем уже пережимать в x264 во сколько угодно проходов. Это Вам и время сэкономит и нервы, т.к. второй проход не гарантированно, что попадет с точностью до кадра. Все зависит от используемой функции открытия видео.
2. У Вас 4-ре ядра, для полной загрузки ЦП требуется больше потоков, чем 4. Увеличьте вторую цифру в команде "SetMTMode(3,4)". До скольки увеличивать сказать не могу, т.к. это зависит от видеокарты, а Вы про видеокарту не пишете. И Инфо у Вас незаполнено.
3. Разные функции открытия требуют разные многопоточные режимы. И в неверном режиме тормозят весь процесс. Какая функция используется в Вашем случае мне неизвестно. Если приведете конечный AVS-скрипт, то там уже можно будет что-то посоветовать.

На вопросы:
1) Нет, не выполняет, т.к. wid_den=1, эти строки не выполняются по условию
2) Никто не ответит лучше Вас, а точнее того, для кого делаете видео. 60 более универсально, т.к. может использоваться и там и там. 50 по определению более качественно для источника 25/сек, т.к. потребует удвоения кадров с сохранением всех исходных.
3) SVP оставляет исходные кадры нетронутыми, все плоды его труда находятся на промежуточных рассчитанных кадрах

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

MAG79 wrote:

Если нужно быстрее и качественнее, то сжимать надо не в 2 прохода, а в один проход и сохранять в какой-нибудь беспотерьный формат

Прошу прощения за неумелость... в MeGUI есть 2 кодека: x264 и xVid. В любом случае предполагается сжатие, как же установить вариант без потерь? И места на диске потребуется, наверно, немало, буду чистить.

MAG79 wrote:

Вы про видеокарту не пишете.

Заполнил инфо в профиле, встроенная GeForce 8300 - даёт ли она какие-нибудь бонусы при конвертации?

MAG79 wrote:

Если приведете конечный AVS-скрипт, то там уже можно будет что-то посоветовать.

Вот:

LoadPlugin("C:\Program Files\Видеообработка\megui\tools\dgindex\DGDecode.dll")
DGDecode_mpeg2source("G:\- Фильмы\Вибрации Индии\VIDEO_TS\VTS_01_1.d2v", info=3)
LoadPlugin("C:\Program Files\Видеообработка\megui\tools\avisynth_plugin\ColorMatrix.dll")
ColorMatrix(hints=true, threads=0)
LanczosResize(1024,576) # Lanczos (Sharp)
TemporalSoften(4,6,10,15,2)
SetMTMode(3,7)
svp_scheduler=true
SetMemoryMax(1024)
svp_cache_reduce=true
svp_flow_lib="C:\Program Files\SVP\Plugins\MVTools2\libflowgpu.dll"
multinum=12
multiden=5
algo=13
block=false
ml=0
search=5
sadml=320
sadgamma=1
blend=true
dist=4
pel=2
Recalc=0
blkh=8
blkv=8
overlap=0
overlapv=0
wid_den=1
hei_den=1

LoadPlugin ("C:\Program Files\SVP\Plugins\MVTools2\mvtools2.dll")
SetMTMode(3,7)
src=last
wid_den==1 ? last : \
hei_den==1 ? LanczosResize(int(width/wid_den/2)*2,height) : LanczosResize(int(width/wid_den/2)*2,int(height/hei_den/2)*2)
super=MSuper(pel=pel, hpad=blkh, vpad=blkv)
finest=pel==1 ? super : MFinest(super)
backward_vec=MAnalyse(super, isb=true, blksize=blkh, blksizev=blkv, overlap=overlap, overlapv=overlapv, search=search, searchparam=dist, pelsearch=dist, plevel=0)
forward_vec=MAnalyse(super, isb=false, blksize=blkh, blksizev=blkv, overlap=overlap, overlapv=overlapv, search=search, searchparam=dist, pelsearch=dist, plevel=0)
backward_vec = Recalc==0 ? backward_vec : MRecalculate(super, backward_vec, blksize=blkh2, blksizev=blkv2, overlap=int(overlap/4)*2, overlapv=int(overlapv/4)*2, search=search, searchparam=dist)
forward_vec  = Recalc==0 ? forward_vec  : MRecalculate(super, forward_vec, blksize=blkh2, blksizev=blkv2, overlap=int(overlap/4)*2, overlapv=int(overlapv/4)*2, search=search, searchparam=dist)
smooth_video=MSmoothFps(super, backward_vec, forward_vec, finest=finest, num=FramerateNumerator(last)*multinum,den=FramerateDenominator(last)*multiden, algo=algo, ml=ml, sadml=sadml, sadgamma=sadgamma, block=block, blend=blend)
smooth_video

MAG79 wrote:

60 более универсально, т.к. может использоваться и там и там. 50 по определению более качественно для источника 25/сек

Попробую 60 с максимальным уплавнением. Надеюсь, при этом визуально разница с 25 ->50 будет слабо заметной.

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

vkams
в MeGUI есть 2 кодека: x264 и xVid. В любом случае предполагается сжатие, как же установить вариант без потерь?
Я бы использовал x264 и его настройку lossless (qp=0), либо crf=[очень мало]. Потренируйтесь на маленьком отрывке. Затем запускайте весь фильм. Так и размер примерно прикинуть можно.

GeForce 8300
Для ускорения декодирования ее использовать нельзя: требования для CoreAVC CUDA.
Для ускорения повышения плавности наверное тоже, см. доступность пункта "GPU-ускорение" в меню SVP.

По скрипту:
1. SetMTMode(3,7) - это строка должна быть самая первая в скрипте.
2. Второе упоминание строчки удалить (так нельзя, прочитайте инструкцию применения SetMTMode).
3. Куда делся SetMTMode(2)? Вернуть. Вставить следующей строкой после DGDecode_mpeg2source.

7 (edited by danil4eg 26-02-2012 08:26:39)

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

Всем здравствуйте.
Попробовал перегнать фильм, для просмотра на нетбуке в дороге с помощью MeGUI.
Запустил SVP, MPHC, фильм, сформировал скрипт для видео:

svp_scheduler=true
SetMemoryMax(1024)
svp_cache_reduce=true
svp_flow_lib="C:\Program Files (x86)\SVP\Plugins\MVTools2\libflowgpu.dll"
multinum=12
multiden=5
algo=23
block=false
ml=80
search=4
sadml=0
sadgamma=1
blend=true
dist=4
pel=4
sharp=0
Recalc=1
blkh=16
blkv=16
blkh2=8
blkv2=8
overlap=4
overlapv=4
wid_den=1
hei_den=1


LoadPlugin ("C:\Program Files (x86)\SVP\Plugins\MVTools2\mvtools2.dll")
SetMTMode(3,13)
#DirectShowSource("F:\_video\Б\Берегись автомобиля.mkv", fps=25, convertfps=true, pixel_type="YV12")
#Assert(width==720 && height==576,"Frame size "+string(width)+"x"+string(height)+" instead of 720x576")
#delim=":"
#WriteFileStart("d:\Users\Danil\AppData\Roaming\SVP\Logs\avsFPS.txt", "FramerateNumerator()", "delim", "FramerateDenominator()")
SetMTMode(2)
src=last
wid_den==1 ? last : \
hei_den==1 ? LanczosResize(int(width/wid_den/2)*2,height) : LanczosResize(int(width/wid_den/2)*2,int(height/hei_den/2)*2)
super=MSuper(pel=pel, hpad=blkh, vpad=blkv, sharp=sharp)
finest=pel==1 ? super : MFinest(super)
backward_vec=MAnalyse(super, isb=true, blksize=blkh, blksizev=blkv, overlap=overlap, overlapv=overlapv, search=search, searchparam=dist, pelsearch=dist, plevel=0)
forward_vec=MAnalyse(super, isb=false, blksize=blkh, blksizev=blkv, overlap=overlap, overlapv=overlapv, search=search, searchparam=dist, pelsearch=dist, plevel=0)
backward_vec = Recalc==0 ? backward_vec : MRecalculate(super, backward_vec, blksize=blkh2, blksizev=blkv2, overlap=int(overlap/4)*2, overlapv=int(overlapv/4)*2, search=search, searchparam=dist)
forward_vec  = Recalc==0 ? forward_vec  : MRecalculate(super, forward_vec, blksize=blkh2, blksizev=blkv2, overlap=int(overlap/4)*2, overlapv=int(overlapv/4)*2, search=search, searchparam=dist)
smooth_video=MSmoothFps(super, backward_vec, forward_vec, finest=finest, num=FramerateNumerator(last)*multinum,den=FramerateDenominator(last)*multiden, algo=algo, ml=ml, sadml=sadml, sadgamma=sadgamma, block=block, blend=blend)
smooth_video


distributor()

Пихаю для проверки скрипт в MeGUI, и началось. Строки где упоминается параметр "super" - вызывает ошибку Avisynth. Как лечить и что делать?
Видимо MEGUI не понимает как подцепить плагин mvtools. При попытке перегнать с gdsmux выдает те же самые ошибки.

8 (edited by Rimsky 26-02-2012 10:13:10)

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

danil4eg
все ровно, открывается твой скрипт (конечно с правкой путей до моего SVP)

svp_scheduler=true
SetMemoryMax(1024)
svp_cache_reduce=true
svp_flow_lib="...libflowgpu.dll"
multinum=12
multiden=5
algo=23
block=false
ml=80
search=4
sadml=0
sadgamma=1
blend=true
dist=4
pel=4
sharp=0
Recalc=1
blkh=16
blkv=16
blkh2=8
blkv2=8
overlap=4
overlapv=4
wid_den=1
hei_den=1


LoadPlugin ("...mvtools2.dll")
SetMTMode(3,13)
DirectShowSource("D:\Download-New\Сборка\SVP\SVPMark\SVPmark 3\data\video\VID_SD.avi", fps=23.976, convertfps=true, pixel_type="YV12")
#Assert(width==720 && height==576,"Frame size "+string(width)+"x"+string(height)+" instead of 720x576")
delim=":"
#WriteFileStart("d:\Users\Danil\AppData\Roaming\SVP\Logs\avsFPS.txt", "FramerateNumerator()", "delim", "FramerateDenominator()")
SetMTMode(2)
src=last
wid_den==1 ? last : \
hei_den==1 ? LanczosResize(int(width/wid_den/2)*2,height) : LanczosResize(int(width/wid_den/2)*2,int(height/hei_den/2)*2)
super=MSuper(pel=pel, hpad=blkh, vpad=blkv, sharp=sharp)
finest=pel==1 ? super : MFinest(super)
backward_vec=MAnalyse(super, isb=true, blksize=blkh, blksizev=blkv, overlap=overlap, overlapv=overlapv, search=search, searchparam=dist, pelsearch=dist, plevel=0)
forward_vec=MAnalyse(super, isb=false, blksize=blkh, blksizev=blkv, overlap=overlap, overlapv=overlapv, search=search, searchparam=dist, pelsearch=dist, plevel=0)
backward_vec = Recalc==0 ? backward_vec : MRecalculate(super, backward_vec, blksize=blkh2, blksizev=blkv2, overlap=int(overlap/4)*2, overlapv=int(overlapv/4)*2, search=search, searchparam=dist)
forward_vec  = Recalc==0 ? forward_vec  : MRecalculate(super, forward_vec, blksize=blkh2, blksizev=blkv2, overlap=int(overlap/4)*2, overlapv=int(overlapv/4)*2, search=search, searchparam=dist)
smooth_video=MSmoothFps(super, backward_vec, forward_vec, finest=finest, num=FramerateNumerator(last)*multinum,den=FramerateDenominator(last)*multiden, algo=algo, ml=ml, sadml=sadml, sadgamma=sadgamma, block=block, blend=blend)
smooth_video


distributor()

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

Мле... мистика. Переустановлю мегуй.

10 (edited by Rimsky 26-02-2012 16:06:50)

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

danil4eg
у меня возникали непонятные глюки когда dll-плуги ависинта дублировались, даже одинаковые версии, даже на разных дисках
Проверь, может тоже болтаются где

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

Rimsky
Видимо косяк был в том, что была закомментирована строка: #DirectShowSource("F:\_video\Б\Берегись автомобиля.mkv", fps=25, convertfps=true, pixel_type="YV12")
Хотя на сколько помню, MAG79 советовал вообще ее удалять.
В итоге фильм перегнал, но появились артефакты, в виде нескольких горизонтальных полосок по левому краю видео.
http://upyourpic.org/images/201202/yonboouk1m_tn.jpg

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

danil4eg
появились артефакты, в виде нескольких горизонтальных полосок по левому краю видео
Первый раз такое вижу. Полоски явно наложил какой-то фильтр. Надо разбираться.

была закомментирована строка: #DirectShowSource("F:\_video\Б\Берегись автомобиля.mkv", fps=25, convertfps=true, pixel_type="YV12")
На правах предположения: MeGUI как-то по-своему понимает комментарии и делает авто-замены некоторых закоментаренных строк своими блоками. Вероятно, это тот случай, когда нужно изучить правила работы с приложением перед тем как с ним работать wink

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

MAG79
MeGUI как-то по-своему понимает комментарии

нормально он понимает комментарии, стандартный префикс # - комментарий в ависинте и мегуй его переваривает
а вот русские буквы в пути он не понимает - это факт (глотает только в UTF-16LE помоему)
Ничему вас DOS не научил, пути только 8.3  wink

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

MAG79
Первый раз такое вижу. Полоски явно наложил какой-то фильтр. Надо разбираться.
Ну код по которому происходил перегон видео указывал выше. Если комментировать строку с DirectShowSource, сыпятся ошибки ависинта, при загрузке скрипта в мегуй.

Rimsky
нормально он понимает комментарии
А я и не говорил что плохо понимает. Я лишь написал, что при снятии знака коментария, avs скрипт прошел нормально.

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

danil4eg
Ну да. Согласен. Комментарий строки DirectShowSource был лишний. wink

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

Будьте добры, помогите составить скрипт для конверсии фильма.  Исходник с интерлейсом, Full-HD mpeg2.
Сначала беру "I:\Temp\00001.m2ts" и индексирую его в "r:\Сакура.d2v". Затем можно паковать:

Без уплавнения скрипт такой:

LoadPlugin("C:\Program Files\MeGUI\tools\dgindex\DGDecode.dll")
DGDecode_mpeg2source("r:\Сакура.d2v", cpu=4, info=3)
LoadPlugin("C:\Program Files\MeGUI\tools\avisynth_plugin\ColorMatrix.dll")
ColorMatrix(hints=true, interlaced=true, threads=0)
LoadPlugin("C:\Program Files\MeGUI\tools\avisynth_plugin\TomsMoComp.dll")
TomsMoComp(1,5,1)
#crop
#resize
LoadPlugin("C:\Program Files\MeGUI\tools\avisynth_plugin\UnDot.dll")
Undot() # Minimal Noise

При просмотре исходного фильма СВП генерирует вот что:

svp_scheduler=true
SetMemoryMax(1024)

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

SetMTMode(3,11)
DirectShowSource("I:\Temp\00001.m2ts", fps=9.99, convertfps=true, pixel_type="YV12")
SetMTMode(2)

super_params="{scale:{up:0},gpu:1}"
analyse_params="{block:{w:8,h:8,overlap:0},main:{search:{coarse:{distance:-10},bad:{sad:2000}}},refine:[{thsad:250}]}"
smoothfps_params="{num:6,den:1,algo:13,cubic:1,mask:{area:100},scene:{}}"

super=SVSuper(super_params)
vectors=SVAnalyse(super, analyse_params)
smooth_video=SVSmoothFps(super, vectors, smoothfps_params, url="www.svp-team.com")
smooth_video

Как всё это сочетать, чтобы получить фильм с 60 fps?

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

Может быть, кто-то сможет ответить на мой вопрос?

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

vkams
Помощь еще нужна или уже получилось?

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

Нужна.

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

Ну как-то примерно так:

SetMemoryMax(1024)
SetMTMode(3,11)

# Наверное это всё хозяйство само по себе многопоточное
LoadPlugin("C:\Program Files\MeGUI\tools\dgindex\DGDecode.dll")
DGDecode_mpeg2source("r:\Сакура.d2v", cpu=4, info=3)
LoadPlugin("C:\Program Files\MeGUI\tools\avisynth_plugin\ColorMatrix.dll")
ColorMatrix(hints=true, interlaced=true, threads=0)
LoadPlugin("C:\Program Files\MeGUI\tools\avisynth_plugin\TomsMoComp.dll")
TomsMoComp(1,5,1)
#crop
#resize

# Сюда суём СВП
LoadPlugin("C:\Program Files\SVP\plugins\svpflow1.dll")
LoadPlugin("C:\Program Files\SVP\plugins\svpflow2.dll")

SetMTMode(2)
analyse_params="{block:{w:8,h:8,overlap:0},main:{search:{coarse:{distance:-10},bad:{sad:2000}}},refine:[{thsad:250}]}"
smoothfps_params="{num:6,den:1,algo:13,cubic:1,mask:{area:100},scene:{}}"

super=SVSuper(super_params)
vectors=SVAnalyse(super, analyse_params)
SVSmoothFps(super, vectors, smoothfps_params, url="www.svp-team.com")

# Вот тут не знаю, как оно работает с MT
SetMTMode(3)
LoadPlugin("C:\Program Files\MeGUI\tools\avisynth_plugin\UnDot.dll")
Undot() # Minimal Noise

Ну правда "num:6,den:1" это, наверное, перебор smile

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

MeGui с этим скриптом вылетает с "fatal error. Попытка записать в защищённую область памяти". Методом комментирования я обнаружил, что его валит команда "SetMTMode(3,11)" - с двумя параметрами не работает. Версия всего комплекта MeGui самая последняя.

После того как закомментировал эту строчку, стало появляться сообщение "I don't know what 'super_params' means". И вправду, откуда оно взялось?

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

vkams

Ну я думал что общие принципы ависинта должны быть знакомы

его валит команда "SetMTMode(3,11)"
тогда SetMTMode(5,11)

И вправду, откуда оно взялось?
ну видно же что в скрипте выше оно есть. значит это ошибка при копи-пасте
super_params="{scale:{up:0},gpu:1}"

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

Исправил, запускается, но валится с ошибкой Runtime C++ (какая-то из redistributable библиотек). Памяти вроде хватает (ещё 400 Мб свободно). Будет время - попробую на чистой системе.

Спасибо за советы! Прошу извинить, что не довёл дело до победного конца.

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

vkams
Пропатчить exe-шник тулзой "4gb patch"

Re: Как изменить скрипт для рипа DVD с помощью MeGui?

vkams Chainik
Пропатчить exe-шник тулзой "4gb patch"
причем патчить и экзешник мегуя, и кодировщика (x264.exe, xvidencrow.exe)