Страницы: (4) « [1] 2 3 4 » |
|
| |
Автор АКРОССа |
|
|
|
|
main doom9 ChangeLog
В чем преимущества? -полная мультипроцессорность -новые цветовые пространства -язык программирования Python (хотя сомнительно, если ты не проггер) -практически полная поддержка плагинов Avisynth -плюс еще что то там, до чего у меня еще руки не дошли проверить..
Специально для особо ленивых, я собрал полный пак всего что нужно (и не очень нужно) для работы. http://pc.cd/aCbotalK В авхиве запакованно все то что папке рядом. Качайте что нужно.
Для работы необходим Python поселению 3ю версию (32 и 64 бита)
Для автозагрузки плагинов, они должны быть помещены в следующие директории для 32 битных: VapourSynth\plugins32 для 64 битных: VapourSynth\plugins64
для ручной загрузки плагинов, используется следующая строка:
Исходный код | core.std.LoadPlugin(path=r'F:\VapourSynth\filters\avisource.dll') |
Для легкого создания скрипта, используйте прикрепленный к этому посту .bat файл запустите его для инсталляции\удаления если выбрать добавление в контекстное меню проводника, то создание скрипта осуществляется простой командой: RMB -> VapourSynth ну или просто drag-and-drop файлы на самом VapourSynth.bat
в батнике есть два дополнительных режима debug и advanced первый для отладки, второй для дополнительных опций просто откройте .bat файл в блокноте и замените 0 на 1
Далее самое основное для написания скрипта:
Открытие avi файла без альфы
Исходный код | # первые две строчки обязательны import vapoursynth as vs core = vs.get_core() # открытие видео файла; переменная v теперь видео объект v = core.avisource.AVISource(path=r'c:\video\render.avi') # добавление пустой альфы, нужно для совместимости v = core.resize.Bicubic(v, format=vs.COMPATBGR32) # установка на вывод видео v.set_output() |
"r" перед путем нужна для того чтобы использовать один \ без нее придется писать два: F:\\VapourSynth\\filters
Открытие avi файла с альфой
Исходный код | import vapoursynth as vs core = vs.get_core() v = core.avisource.AVISource(path=r'c:\video\render.avi') v = core.resize.Bicubic(v[0], format=vs.COMPATBGR32) v.set_output() |
avisource помещает два видео в массив, т.е. v[0] это RGB, а v[1] это Gray альфа соответственно, простое обращение к "v" как к видео потоку, невозможно. данная функция обращается к RGB и дорисовывает пустую альфу resize.Bicubic не делает никакого ресайза, результат побитово совпадает с оригиналом. а если не добавлять эту строчку и вывести RGB так: v[0].set_output() получим:
Цитата | VFW module doesn't support RGB24 output |
*альфу подобным образом, вывести можно.
Если видео выводится верх тормашками, добавляем перед "v.set_output()", следующую строку
Исходный код | v = core.std.FlipVertical(v) |
Открытие любых других форматов через FFMS2:
Исходный код | import vapoursynth as vs core = vs.get_core() v = core.ffms2.Source(source=r"C:\Video\source.mkv") v.set_output() |
Все предельно просто.
Если ffms2 фейлит, можно попробовать LSMASHSource:
Исходный код | import vapoursynth as vs core = vs.get_core() v = core.lsmas.LibavSMASHSource(source=r"C:\Video\source.mkv") v.set_output() |
или
Исходный код | import vapoursynth as vs core = vs.get_core() v = core.lsmas.LWLibavSource(source=r"C:\Video\source.mkv") v.set_output() |
Открытие сиквенса плагин качать здеcь
Исходный код | import vapoursynth as vs core = vs.get_core() import os ext = '.png' dir = r'C:\Video\render/' srcs = [dir + src for src in os.listdir(dir) if src.endswith(ext)] v = core.imwrif.Read(srcs) v = core.std.AssumeFPS(clip=v, fpsnum=30, fpsden=1) v.set_output() |
ext — расширение файлов dir — директория, обязательно должна оканчиваться на: / иначе файлы не откроются, также не забываем про волшебную "r" для задания корректного фпс, юзаем AssumeFPS с fpsnum=30, fpsden=1 — где первое это numerator, а второе denominator соответственно. Если сортировка работает некорректно, например если у вас начало сиквенса на 3х-значном числе (001) а конец на 4-5-значном (5621), то вам следует либо переименовать недостающие файлы, либо использовать следующую строчку для "srcs" переменной
Исходный код | srcs = sorted([dir + src for src in os.listdir(dir) if src.endswith(ext)], key = lambda x: int(x.split("_")[2].split(".")[0])) |
где split("_") это символ разделителя между именем и цифрой Спасибо aZZe :)
Написание AviSynth кода прямо в вайпе:
Исходный код | import vapoursynth as vs core = vs.get_core() core.avs.LoadPlugin(path=r'C:\DGDecNV\DGDecodeNV.dll') v = core.avs.DGSource("C:\Video\source.dgi") v.set_output() |
.vpy скрипт также можно открыть ависинтом, обычным AviSource, при условии что на выходе поддерживаемое видео. Также можно открыть .avs скрипт в VapourSynth через core.avisource.AVISource
Конвертирование цветовых пространств / Глубины цвета / Ресайз плагин качать здеcь из YUV в RGB
Исходный код | v = core.fmtc.resample(v, css="444", kernel="spline64") v = core.fmtc.resample(v, w=1280, h=720, kernel="spline64") v = core.fmtc.matrix(v, mat="709", col_fam=vs.RGB, fulls=1, fulld=1) v = core.fmtc.bitdepth(v, bits=8, dmode=3) |
из RGB в YUV
Исходный код | v = core.fmtc.matrix(v, mat="709", col_fam=vs.YUV, bits=16, fulls=1, fulld=1) v = core.fmtc.resample(v, css="420", kernel="point") v = core.fmtc.bitdepth(v, bits=8, dmode=3) |
плагин работает в максимально-качественнном режиме, т.е. только в 4:4:4 и конвертирует 8 бит в float (32 бита) или работает в 16 битах если они были изначально. Все это направлено на получение более лучшего результата (на мой взгляд спорно) ценой потери скорости вычисления...
dmode=3 — это дихтеринг дихтеринг срабатывает при следующих условиях: - при уменьшении глубины цвета с 16\32 до 8, или 32 до 16 - при конвертировании PC Range <-> TV Range у 8\16 битных форматов собсно может быть: 0 Ordered dithering (Bayer matrix). 1 No dither, round to the closest value. 2 Round, may be a bit faster but possibly less accurate. 3 Sierra-2-4A error diffusion, aka “Filter Lite”. Quick and excellent quality. 4 Stucki error diffusion. Preserves delicate edges better but distorts gradients. 5 Atkinson error diffusion. Generates distinct patterns but keeps clean the flat areas. 6 Floyd-Steinberg error diffusion. Classic. 7 Ostromoukhov error diffusion. Slow, available only for integer input at the moment.
mat="709" — матрица, могёт: "601" ITU-R BT.601 / ITU-R BT.470-2 / SMPTE 170M. For Standard Definition content. "709" ITU-R BT.709. For High Definition content. "240" SMPTE 240M "FCC" FCC "YCgCo" YCgCo "RGB" RGB. Identity, no cross-plane calculations.
fulls=1 — PC Range на входе (если не указывать, то ставится на 1 если RGB на входе) fulld=1 — PC Range на выходе (если не указывать, то ставится на 0 если YUV на выходе)
css="###" — цветовая субдискретизация: "444" or "4:4:4" 4:4:4, no chroma subsampling. "422" or "4:2:2" 4:2:2, horizontal 2x chroma subsampling. "420" or "4:2:0" 4:2:0, horizontal and vertical 2x chroma subsampling. "411" or "4:1:1" 4:1:1, horizontal 4x chroma subsampling. т.к. плагин работает только c 4:4:4, перед операциями нужно конвертить именно в нее, если сорс не в ней. уменьшение следует добавлять перед строчкой с уменьшением битности.
w=1280, h=720 — ресайз, kernel отвечает за способ, может быть: "point" Nearest neighbour interpolation. Same as Avisynth’s PointResize. "rect" or "box" Box filter. "linear" or "bilinear" Bilinear interpolation. Same as Avisynth’s BilinearResize. "cubic" or "bicubic" Bicubic interpolation. Same as BicubicResize. The b and c variables are mapped on a1 and a2 and are both set to 1/3 by default. "lanczos" Sinc function windowed by the central lobe of a sinc. Use taps to specify its impulse length. Same as LanczosResize. "blackman" Blackman-Harris windowed sinc. Use taps to control its length. Same as BlackmanResize. "blackmanminlobe" Another kind of Blackman windowed sinc, with a bit less ringing. Use taps for you know what. "spline16" Cubic spline based kernel, 4 sample points. Same as Spline16Resize. "spline36" Spline, 6 sample points. Same as Spline36Resize. "spline64" Spline, 8 sample points. Same as Spline64Resize. "spline" Generic splines, number of sample points is twice the taps parameter, so you can use taps = 6 to get a Spline144Resize equivalent. "gauss" or "gaussian" Gaussian kernel. The p parameter is mapped on a1 and controls the curve width. The higher p, the sharper. It is set to 30 by default. This resizer is the same as GaussResize, but taps offers a control on the filter impulse length. For low p values (soft and blurry), it’s better to increase the number of taps to avoid truncating the gaussian curve too early and creating artifacts. "sinc" Truncated sinc function. Use taps to control its length. Same as SincResize.
Итак, закономерный вопрос: для чего все это нафик нужно? Ну например:
1. Открыть 10бит рип, правильно.
Исходный код | import vapoursynth as vs core = vs.get_core() v = core.ffms2.Source(source='C:\Video\Steins;Gate\[Yousei-raws] Steins;Gate 01 [BDrip 1920x1080 x264 FLAC].mkv') v = core.resize.Bicubic(v, format=vs.YUV422P10) enable_v210=True v.set_output() |
В итоге получаем v210 поток, который корректно открывается в последних експерементальных VDub билдах т.к. лосслесс компресора для данного видео пока нету, при нарезке нужно выставить режим Direct-Stream-Copy Полученное таким образом видео, отлично принимается AE и не смущайтесь строчки
Исходный код | core.resize.Bicubic(v, format=vs.YUV422P10) |
она не конвертирует YUV420P8 в YUV422P10, нет она конвертирует YUV420P10 в YUV422P10, ибо это стандарт v210 видео, т.е. эта строчка не нужна, если видео изначально в 4:2:2
2. Закодить труЪ 10бит Именно, правельные 10бит десятибитным енкодером, а не 8бит десятибитным енкодером. Для этого нужно, вывести 16 бит на канал, единственный способ, это Image Sequence, в png (tif на данный момент не поддерживается плагином)
Как вывести 48 битный png, я думаю знают все, но вкраце опишу для AE: в Output модуле задаем "PNG Sequence", в Depth выставляем "Trillions of Colors" в настройках рендера, там где "Color Depth" ставим "16 bits per channel" в итоге получится RGB48 (16+16+16) Учтите, что АЕ по умолчанию задает трехзначное число, т.е. начало с 000, т.к кол-во кадров может быть болеее 1000 или 10000, нужно выставить 5-6 значный шаблон [#####]
далее делам скрипт, типа этого:
Исходный код | import vapoursynth as vs core = vs.get_core() import os ext = '.png' dir = 'С:\Video\render/' srcs = [dir + src for src in os.listdir(dir) if src.endswith(ext)] v = core.imwri.Read(srcs) v = core.std.AssumeFPS(clip=v, fpsnum=30, fpsden=1) v = core.fmtc.matrix(v, mat="709", col_fam=vs.YUV, bits=16, fulls=1, fulld=1) v = core.fmtc.resample(v, css="422") v = core.fmtc.bitdepth(v, bits=10, dmode=3) v = core.resize.Bicubic(v, format=vs.YUV422P10) enable_v210=True v.set_output() |
и далее запускаем енкод таким образом
Исходный код | F:\VapourSynth\core\vspipe.exe "C:\Scripts\myVapourScript.vpy" - --y4m | x264 - --demuxer y4m --input-range pc --input-depth 10 --output-csp i422 -o out.264 |
в итоге получаем труъ 10бит которые мало кто увидит, т.к мониторы у большинства 8битные, хе-хе
Ну и на последок, немного "виртуальной магии" VapourSynth поддерживает Pismo File Mount Что это такое? Это что типа локальной виртуальной среды т.е. можно взять и превратить написанный скрипт в папку в которой будет лежать выходящее видео в Uncompressed формате, размером в десятки-сотни гигабайт, а то и в терабайт, но физически его не существует на самом деле, зато программы (в не зависимости какой битности, хоть 32, хоть 64) будут думать что работают именно с Uncompressed видео :3 Иными словами, это лучще чем avi-пустышки, хотя бы потому что позволяют редактировать скрипт "на лету", да и стабильнее. Что для этого нужно? Нужно установить Pismo File Mount Audit Package (pfmap-###-win.exe)
Если вы установили вайпосинт до установки pismo, то нужно либо установить вайпосинт заного (там будет галочка для включения), либо открыть коммандную строку и написать следующее:
Исходный код | pfm register "F:\VapourSynth\core64\vsfs.dll" |
А далее все просто, нажимает ПКМ на скрипте, и щелкаем "Quick Mount" Для размонтировки, щелкаем на папке "Unmount" В новых версия более нет интеграции с системой, есть avfs.exe в корневой дирректории вайпосинта (core32\core64) Чтобы монтировать скрипт, нужно перетащить его на avfs.exe А можно сделать ярлык в SendTo (USERPROFILE%\SendTo) для avfs.exe и монтировать скриты через "Отправить" К слову, вы также можете монтировать avs скрипты.
Исправил(а): Artofeel, 13 декабря 2017, 19:07
Скачать файл [ Zip File ] Количество закачек: 246
-------------- We will never know world peace, until three people can simultaneously look each other straight in the eye
|
Отправлено: 06 августа 2013, 16:08 | Зарегистрирован: 26 апреля 2008 |
|
|
|
| |
Автор АКРОССа |
|
|
|
|
полезненько, норм написал.
Цитата (Artofeel @ 06 августа 2013, 17:08) | Для работы необходим Python |
python х86 ток.
Добавлено (через 2 мин. и 21 сек.):
в смысле без х64.
|
Отправлено: 06 августа 2013, 19:51 | Зарегистрирован: 28 октября 2003 |
|
|
|
| |
Автор АКРОССа |
|
|
|
|
Цитата (Fynjy @ 06 августа 2013, 22:51) | python х86 ток. | а да а я думал про что я забыл :) возможно в следующей версии уже будет 64, т.к. автор обещал именно 64битную поддержку
алсо, поэкспериментировал с плагином ресайза, оказывается можно уменьшить хрому с минимальными потерями, даже лучше чем старый ависинт 2.5.8 всего одна полоска между цветами! при том что кое где ее вообще нету! так что все это дело очень рекомендуется, как и при кодинге, как и при нарезке. также добавил описания ресайза, там же.
-------------- We will never know world peace, until three people can simultaneously look each other straight in the eye
|
Отправлено: 06 августа 2013, 22:31 | Зарегистрирован: 26 апреля 2008 |
|
|
|
| |
Автор АКРОССа |
|
|
|
|
в новых версиях добавлена автозагрузка плагинов, поправил инструкцию соответственно асло, 64 бита :3
-------------- We will never know world peace, until three people can simultaneously look each other straight in the eye
|
Отправлено: 14 января 2014, 10:47 | Зарегистрирован: 26 апреля 2008 |
|
|
|
| |
Зритель |
|
|
|
|
Привет Всем! Добавтьте в пояснение про avs скрипты еще по одной ("). avs = """ """. Я пол дня парился, пока разобрался
|
Отправлено: 01 февраля 2014, 08:34 | Зарегистрирован: 01 февраля 2014 |
|
|
|
| |
Автор АКРОССа |
|
|
|
|
Цитата (Sef @ 01 февраля 2014, 10:34) | Добавтьте в пояснение про avs скрипты еще по одной ("). avs = """ """. | там нет никаких: " там нужно использовать: '
-------------- We will never know world peace, until three people can simultaneously look each other straight in the eye
|
Отправлено: 01 февраля 2014, 12:17 | Зарегистрирован: 26 апреля 2008 |
|
|
|
| |
Зритель |
|
|
|
|
Пардон, мелкий шрифт-не разглядел! А про (") вычитал на doom9, в ветке автора плагина..
Исправил(а): Sef, 01 февраля 2014, 15:51
|
Отправлено: 01 февраля 2014, 15:49 | Зарегистрирован: 01 февраля 2014 |
|
|
|
| |
Автор АКРОССа |
|
|
|
|
Как истинный BATman написалл батник для two-click создания .vpy скриптов (см. первый пост) поместите его в корневую директорию VapourSynth'a создайте ярлык (не копию) в папке: %APPDATA%\Microsoft\Windows\SendTo далее: RMB -> SendTo -> VapourSynth ну или просто drag-and-drop файлы на самом VapourSynth.bat
в батнике есть два дополнительных режима debug и advanced первый для отладки, второй для дополнительных опций просто откройте .bat файл в блокноте и замените 0 на 1
-------------- We will never know world peace, until three people can simultaneously look each other straight in the eye
|
Отправлено: 23 февраля 2014, 11:22 | Зарегистрирован: 26 апреля 2008 |
|
|
|
| |
Автор АКРОССа |
|
|
|
|
изменения в батнике: — открытие vpy скриптов теперь выводит информацию, плюс есть возможность вывести RAW видео — добавил что то типа Install модуля, батник копируется на нужное место и предлагается добавиться в контекстное меню проводника (метод с ярлыком в SendTo более не актуален). Также есть Uninstall модуль, они запускаются по двойному клику на батнике (т.е. без входного файла) — плюс мелкие фиксы, там и там
-------------- We will never know world peace, until three people can simultaneously look each other straight in the eye
|
Отправлено: 26 февраля 2014, 14:03 | Зарегистрирован: 26 апреля 2008 |
|
|
|
| |
Автор АКРОССа |
|
|
|
|
исправил ошибку при использовании контекстного меню раньше если путь к файлу содержал пробелы, то ничего не работало чтобы исправить уже установленную версию, ее нужно удалить запустить батник > деинсталлировать > установить заново
-------------- We will never know world peace, until three people can simultaneously look each other straight in the eye
|
Отправлено: 23 марта 2014, 13:10 | Зарегистрирован: 26 апреля 2008 |
|
|
|
| |
Автор АКРОССа |
|
|
|
|
изменения в батнике: — исправил ошибку, теперь имя\путь к файлу, могут содержать ! (восклицательный знак)
-------------- We will never know world peace, until three people can simultaneously look each other straight in the eye
|
Отправлено: 05 апреля 2014, 11:03 | Зарегистрирован: 26 апреля 2008 |
|
|
|
|
|
Исходный код | d:\TRAILERS\DCP\MOCKINGJAY-PT1_TLR-1_S_RU-XX_RU_51_2K_LION_20140729_DLA_IOP_OV>" c:\Program Files (x86)\VapourSynth\core32\vspipe.exe" "myVapourScript.vpy" - -y4 m | x264 - --demuxer y4m --input-depth 10 --output-csp i444 -o out.264 NULL name pointer passed to createFilter() | Чем может быть вызвана ошибка? Всё сделал по инструкции.Исходный код | import vapoursynth as vs core = vs.get_core() import os ext = '.png' dir = r'd:\TRAILERS\DCP\MOCKINGJAY-PT1_TLR-1_S_RU-XX_RU_51_2K_LION_20140729_DLA_IOP_OV\PNG/' srcs = [dir + src for src in os.listdir(dir) if src.endswith(ext)] v = core.imgr.Read(srcs,24,1) v = core.fmtc.matrix(v, mat="709", col_fam=vs.YUV, bits=16, fulls=1, fulld=1) v = core.fmtc.bitdepth(v, bits=10, dmode=1) v.set_output() |
|
Отправлено: 01 августа 2014, 15:56 | Зарегистрирован: 01 августа 2014 |
|
|
|
| |
Автор АКРОССа |
|
|
|
|
а сам скрипт нормально открывается? (тем же VirtualDub'ом) можно еще попробовать вывести RAW, и его уже кодить
Исходный код | vspipe.exe "myVapourScript.vpy" "путь\имя_файла" -y4m -progress |
-------------- We will never know world peace, until three people can simultaneously look each other straight in the eye
|
Отправлено: 01 августа 2014, 22:46 | Зарегистрирован: 26 апреля 2008 |
|
|
|
|
|
Я заменил плагин чтения картинок на пофиксенный (по совету с doom9), но теперь другая траблаИсходный код | d:\TRAILERS\DCP\MOCKINGJAY-PT1_TLR-1_S_RU-XX_RU_51_2K_LION_20140729_DLA_IOP_OV>" c:\Program Files (x86)\VapourSynth\core32\vspipe.exe" myVapourScript.vpy - -y4m | x264 - --demuxer y4m --input-depth 10 --output-csp i444 -o out.264 Script evaluation failed: Python exception: matrix: only constant pixel formats are supported. Traceback (most recent call last): File "vapoursynth.pyx", line 1148, in vapoursynth.vpy_evaluateScript (src\cyth on\vapoursynth.c:18441) File "myVapourScript.vpy", line 8, in <module> v = core.fmtc.matrix(v, mat="709", bits=16, fulls=1, fulld=1) File "vapoursynth.pyx", line 1071, in vapoursynth.Function. (src\cytho n\vapoursynth.c:17443) vapoursynth.Error: matrix: only constant pixel formats are supported. | Даб ту же ошибку кажет. Сиквенс из таких картинок http://i66.fastpic.ru/big/2014/0801/d3/_9ada951654a9e224662df391d0eee6d3.png?noht=1
Исправил(а): alexxdls, 01 августа 2014, 22:57
|
Отправлено: 01 августа 2014, 22:52 | Зарегистрирован: 01 августа 2014 |
|
|
|
| |
Автор АКРОССа |
|
|
|
|
странно можно попробовать без fmtc, так
Исходный код | import vapoursynth as vs core = vs.get_core() import os ext = '.png' dir = r'd:\TRAILERS\DCP\MOCKINGJAY-PT1_TLR-1_S_RU-XX_RU_51_2K_LION_20140729_DLA_IOP_OV\PNG/' srcs = [dir + src for src in os.listdir(dir) if src.endswith(ext)] v = core.imgr.Read(srcs,24,1) v.set_output()
|
и если открывает, то
Исходный код | import vapoursynth as vs core = vs.get_core() import os ext = '.png' dir = r'd:\TRAILERS\DCP\MOCKINGJAY-PT1_TLR-1_S_RU-XX_RU_51_2K_LION_20140729_DLA_IOP_OV\PNG/' srcs = [dir + src for src in os.listdir(dir) if src.endswith(ext)] v = core.imgr.Read(srcs,24,1) v = core.fmtc.matrix(v, mat="709", col_fam=vs.YUV, css="422", bits=16, fulls=1, fulld=1) v = core.fmtc.bitdepth(v, bits=10, dmode=1) enable_v210=True v.set_output()
|
-------------- We will never know world peace, until three people can simultaneously look each other straight in the eye
|
Отправлено: 02 августа 2014, 10:53 | Зарегистрирован: 26 апреля 2008 |
|
|
|
|