Форум: ТЕХНИЧЕСКАЯ ЧАСТЬ Тема: VapourSynth автор: Artofeel сообщение оставил Artofeel , 06 августа 2013, 16:08
< main >< doom9 > < ChangeLog > В чем преимущества? -полная мультипроцессорность -новые цветовые пространства -язык программирования Python (хотя сомнительно, если ты не проггер) -практически полная поддержка плагинов Avisynth -плюс еще что то там, до чего у меня еще руки не дошли проверить.. Специально для особо ленивых, я собрал полный пак всего что нужно (и не очень нужно) для работы. < http://pc.cd/aCbotalK > В авхиве запакованно все то что папке рядом. Качайте что нужно. Для работы необходим < Python > поселению 3ю версию (32 и 64 бита) Для автозагрузки плагинов, они должны быть помещены в следующие директории для 32 битных: VapourSynth\plugins32 для 64 битных: VapourSynth\plugins64 для ручной загрузки плагинов, используется следующая строка:
Для легкого создания скрипта, используйте прикрепленный к этому посту .bat файл запустите его для инсталляции\удаления если выбрать добавление в контекстное меню проводника, то создание скрипта осуществляется простой командой: RMB -> VapourSynth ну или просто drag-and-drop файлы на самом VapourSynth.bat в батнике есть два дополнительных режима debug и advanced первый для отладки, второй для дополнительных опций просто откройте .bat файл в блокноте и замените 0 на 1 Далее самое основное для написания скрипта: Открытие avi файла без альфы
"r" перед путем нужна для того чтобы использовать один \ без нее придется писать два: F:\\VapourSynth\\filters Открытие avi файла с альфой
avisource помещает два видео в массив, т.е. v[0] это RGB, а v[1] это Gray альфа соответственно, простое обращение к "v" как к видео потоку, невозможно. данная функция обращается к RGB и дорисовывает пустую альфу resize.Bicubic не делает никакого ресайза, результат побитово совпадает с оригиналом. а если не добавлять эту строчку и вывести RGB так: v[0].set_output() получим:
*альфу подобным образом, вывести можно. Если видео выводится верх тормашками, добавляем перед "v.set_output()", следующую строку
Открытие любых других форматов через < FFMS2 >:
Все предельно просто. Если ffms2 фейлит, можно попробовать < LSMASHSource >:
или
Открытие сиквенса плагин качать < здеcь >
ext — расширение файлов dir — директория, обязательно должна оканчиваться на: / иначе файлы не откроются, также не забываем про волшебную "r" для задания корректного фпс, юзаем AssumeFPS с fpsnum=30, fpsden=1 — где первое это numerator, а второе denominator соответственно. Если сортировка работает некорректно, например если у вас начало сиквенса на 3х-значном числе (001) а конец на 4-5-значном (5621), то вам следует либо переименовать недостающие файлы, либо использовать следующую строчку для "srcs" переменной
где split("_") это символ разделителя между именем и цифрой Спасибо aZZe :) Написание AviSynth кода прямо в вайпе:
.vpy скрипт также можно открыть ависинтом, обычным AviSource, при условии что на выходе поддерживаемое видео. Также можно открыть .avs скрипт в VapourSynth через core.avisource.AVISource Конвертирование цветовых пространств / Глубины цвета / Ресайз плагин качать < здеcь > из YUV в RGB
из RGB в YUV
плагин работает в максимально-качественнном режиме, т.е. только в 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бит рип, правильно.
В итоге получаем v210 поток, который корректно открывается в последних експерементальных VDub билдах т.к. лосслесс компресора для данного видео пока нету, при нарезке нужно выставить режим Direct-Stream-Copy Полученное таким образом видео, отлично принимается AE и не смущайтесь строчки
она не конвертирует 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 значный шаблон [#####] далее делам скрипт, типа этого:
и далее запускаем енкод таким образом
в итоге получаем труъ 10бит которые мало кто увидит, т.к мониторы у большинства 8битные, хе-хе Ну и на последок, немного "виртуальной магии" VapourSynth поддерживает Pismo File Mount Что это такое? Это что типа локальной виртуальной среды т.е. можно взять и превратить написанный скрипт в папку в которой будет лежать выходящее видео в Uncompressed формате, размером в десятки-сотни гигабайт, а то и в терабайт, но физически его не существует на самом деле, зато программы (в не зависимости какой битности, хоть 32, хоть 64) будут думать что работают именно с Uncompressed видео :3 Иными словами, это лучще чем avi-пустышки, хотя бы потому что позволяют редактировать скрипт "на лету", да и стабильнее. Что для этого нужно? Нужно установить < Pismo File Mount Audit Package > (pfmap-###-win.exe)
А далее все просто, нажимает ПКМ на скрипте, и щелкаем "Quick Mount" Для размонтировки, щелкаем на папке "Unmount" В новых версия более нет интеграции с системой, есть avfs.exe в корневой дирректории вайпосинта (core32\core64) Чтобы монтировать скрипт, нужно перетащить его на avfs.exe А можно сделать ярлык в SendTo (USERPROFILE%\SendTo) для avfs.exe и монтировать скриты через "Отправить" К слову, вы также можете монтировать avs скрипты. сообщение оставил Fynjy , 06 августа 2013, 19:51
полезненько, норм написал.
python х86 ток. Добавлено (через 2 мин. и 21 сек.): в смысле без х64. сообщение оставил Artofeel , 06 августа 2013, 22:31
а я думал про что я забыл :) возможно в следующей версии уже будет 64, т.к. автор обещал именно 64битную поддержку алсо, поэкспериментировал с плагином ресайза, оказывается можно < уменьшить хрому с минимальными потерями >, даже лучше чем старый ависинт 2.5.8 всего одна полоска между цветами! при том что кое где ее вообще нету! так что все это дело очень рекомендуется, как и при кодинге, как и при нарезке. также добавил описания ресайза, там же. сообщение оставил Artofeel , 14 января 2014, 10:47
в новых версиях добавлена автозагрузка плагинов, поправил инструкцию соответственноасло, 64 бита :3 сообщение оставил Sef , 01 февраля 2014, 08:34
Привет Всем! Добавтьте в пояснение про avs скрипты еще по одной ("). avs = """ """. Я пол дня парился, пока разобрался
сообщение оставил Artofeel , 01 февраля 2014, 12:17
там нужно использовать: ' сообщение оставил Sef , 01 февраля 2014, 15:49
Пардон, мелкий шрифт-не разглядел! А про (") вычитал на doom9, в ветке автора плагина..
сообщение оставил Artofeel , 23 февраля 2014, 11:22
Как истинный BATman написалл батник для two-click создания .vpy скриптов (см. первый пост)поместите его в корневую директорию VapourSynth'a создайте ярлык (не копию) в папке: %APPDATA%\Microsoft\Windows\SendTo далее: RMB -> SendTo -> VapourSynth ну или просто drag-and-drop файлы на самом VapourSynth.bat в батнике есть два дополнительных режима debug и advanced первый для отладки, второй для дополнительных опций просто откройте .bat файл в блокноте и замените 0 на 1 сообщение оставил Artofeel , 26 февраля 2014, 14:03
изменения в батнике:— открытие vpy скриптов теперь выводит информацию, плюс есть возможность вывести RAW видео — добавил что то типа Install модуля, батник копируется на нужное место и предлагается добавиться в контекстное меню проводника (метод с ярлыком в SendTo более не актуален). Также есть Uninstall модуль, они запускаются по двойному клику на батнике (т.е. без входного файла) — плюс мелкие фиксы, там и там сообщение оставил Artofeel , 23 марта 2014, 13:10
исправил ошибку при использовании контекстного менюраньше если путь к файлу содержал пробелы, то ничего не работало чтобы исправить уже установленную версию, ее нужно удалить запустить батник > деинсталлировать > установить заново сообщение оставил Artofeel , 05 апреля 2014, 11:03
изменения в батнике:— исправил ошибку, теперь имя\путь к файлу, могут содержать ! (восклицательный знак) сообщение оставил alexxdls , 01 августа 2014, 15:56
сообщение оставил Artofeel , 01 августа 2014, 22:46
а сам скрипт нормально открывается? (тем же VirtualDub'ом)можно еще попробовать вывести RAW, и его уже кодить
сообщение оставил alexxdls , 01 августа 2014, 22:52
Я заменил плагин чтения картинок на пофиксенный (по совету с doom9), но теперь другая трабла
Сиквенс из таких картинок < http://i66.fastpic.ru/big/2014/0801/d3/_9ada951654a9e224662df391d0eee6d3.png?noht=1 > сообщение оставил Artofeel , 02 августа 2014, 10:53
странноможно попробовать без fmtc, так
и если открывает, то
сообщение оставил alexxdls , 02 августа 2014, 16:56
сообщение оставил Artofeel , 02 августа 2014, 17:50
похоже что сиквенс состоит из неодинаковых картинок (разного разрешения) или же там RGB48\RGB64 тогда еще попробуй такую команду
так надо
и если открывается такое, то х264 нужно указать вместо --output-csp i444
сообщение оставил alexxdls , 03 августа 2014, 11:22
Там PNG48 16 бит на канал
Все картинки одинаковые (по стуи не могут быть разными? т.к. это DCP)
сообщение оставил Artofeel , 03 августа 2014, 12:26
ну matrix у fmtc ругается на входящий формат, нужно его выяснить, такой командой (соответственно без fmtc кода)
алсо, попробуй открыть только первую картинку так
Добавлено (через 24 мин. и 52 сек.):
там встроенный механизм уменьшения количества цветов (без потерьный) т.е. скорее всего у тебя в сиквенсе есть как 48бит так и 24бита, а то и 8 бит сообщение оставил Artofeel , 05 августа 2014, 14:23
подправил немного батник— у сиквенса улучшена обработка hi-depth — альфа у RGB теперь должна корректно обрабатываться (т.е. пропускаться) сообщение оставил alexxdls , 05 августа 2014, 14:55
сообщение оставил Artofeel , 05 августа 2014, 16:47
сообщение оставил alexxdls , 07 августа 2014, 07:48
http://forum.doom9.org/showthread.php?p=1689202#post1689202
сообщение оставил Artofeel , 07 августа 2014, 12:50
ннда..паламалигод назад, все работало сообщение оставил alexxdls , 07 августа 2014, 12:52
Работает с VS r19, но это не вариант - использовать старую ревизию, некоторых функций нужных нет.
сообщение оставил alexxdls , 08 августа 2014, 16:20
Решил использовать 19-ю версию, т.к. получилось добавлять бордюры незелёного цвета.Осталось только загадкой, как определить размеры видео? Нашёл getFrameHeight и getFrameWidth. Через что их вызывать? Или можно другим способом? Цель - автоматическое определение высоты при ширине 1920 для функции ресайза. сообщение оставил Artofeel , 08 августа 2014, 16:59
print(i) только в shell'е питона будет виден по сути надо написать код который будет искать значение Width сообщение оставил alexxdls , 08 августа 2014, 17:27
А в VS разве никак не определить?
сообщение оставил Artofeel , 08 августа 2014, 18:49
а, i.width это и будет ширинавсе что там есть
юзай help(i.format) чтоб узнать что есть там сообщение оставил Artofeel , 05 сентября 2014, 15:11
пификсил батник— восстановлена работоспособность на версии r24 ридер сиквенса остался старый (не рабочий), позже перепишу под новый сообщение оставил Artofeel , 13 сентября 2014, 15:57
добавил в батник новый плагин для открытия сиквенсаон для тест версии #2 < dropbox > | < mediafire > сообщение оставил VitalyF , 14 сентября 2014, 17:09
Подскажите, что с Vapoursynth r24, vspipe не работает? Вот такая диагностика >>
И такое сообщение на всех скриптах, что вы выше публиковали, хотя на Vapoursynth r23 они работали. И чем тогда можно заменить эту строку
как с помощью батника это можно заменить? PS для Windows x64 сообщение оставил Artofeel , 14 сентября 2014, 22:25
батник поправил, гайд забыл... там немного поменялись опции вместо -y4m теперь --y4m или просто -y сообщение оставил Artofeel , 01 октября 2014, 16:44
Изменения в батнике- добавил возможность сохранения PC диапазона при RGB->YUV конверсии - теперь скрипт можно откодировать в AVC (x264) или HEVC (x265), для этого необходимо указать в батнике полный путь к энкодерам и далее просто натравить его на .vpy скрипт. Добавлено (через 22 час. 37 мин. и 14 сек.): - поправил RGB кодирование у x264 сообщение оставил VitalyF , 18 декабря 2014, 11:19
Подскажите, пожалуйста, как убрать интерлейс??... и почему-то при кодировании HDTV.ts удваивается fps с 25-ти до 50-ти
сообщение оставил Artofeel , 18 декабря 2014, 17:52
< https://github.com/dubhater/vapoursynth-nnedi3 > не могу потестить, нету интерлейсного сорса :(
25 кадров чётных + 25 кадров не чётных или что то пытается его задавить и выдает в итоге удвоенный фпс толком с интерлейсом не работал... сообщение оставил VitalyF , 18 декабря 2014, 20:01
Спасибо большое!! nnedi3 я нашёл,но не знаю как прикрутить его... ((( вот небольшой пример - 48 мб < http://multi-up.com/1021252 > Как бы вы составили скрипт для него? сообщение оставил Artofeel , 19 декабря 2014, 14:56
из документации ffms2
т.е. нужно указывать фпс (fpsnum= , fpsden= ) такое работает
сообщение оставил VitalyF , 19 декабря 2014, 21:43
Спасибо огромное за скрипт!!!Сегодня весь день голову ломал, вот что получилось в итоге
< video.mkv > Обратите внимание на последних кадрах, где аплодируют, заметно ускоренное воспроизведение хотя Frame rate : 25.000 fps Похоже что тест я неудачно выбрал... Ещё раз спасибо!!! PS Отдал resize и fps на x264 получилось побыстрее и качественнее
< video.mkv > сообщение оставил Artofeel , 20 декабря 2014, 20:21
ресайз конечно побыстрее в x264, но не как не качественнее, так как fmtc работает в 16 битах сообщение оставил Artofeel , 07 апреля 2016, 18:38
Изменения в батнике- фикс мелких багов - добавлен пресет для x264 — "Proxy" (~1GB на ~25 минут), видео которое можно смело закидывать в редактор, оно довольно шустро декодируется и при этом будет Frame-accurate. Главное не забудьте при финальном рендере подменить сорс на оригинальный, качественный. - возможность кодировать видео "пакетно" (т.е. все .vpy файлы в директории) !!возможны баги!! Добавлено (через 21 час. 3 мин. и 56 сек.): upd: - фикс бага со скобками в имени файла. - фикс бага кодирования прокси (файл не муксился в .mp4 контейнер) сообщение оставил Artofeel , 16 июня 2016, 17:32
Изменения в батнике- добавил опцию для создания AVI-пустышек, работает через старый-добрый ависинт... соответственно нужен он и ffdshow, соответственной разрядности. В батнике нужно прописать путь к makeAVIS.exe - опция на монтирование через pismo (VSFS) + создание символической ссылки на .avi файл, рядом со скриптом или где хотите. (*символические ссылки работают только в NTFS файловых системах) сообщение оставил Artofeel , 18 июня 2016, 17:25
- makeAVIS.exe теперь ищется автоматически, если ffdshow установлен с плагином для ависинта, то все должно найтись.- исправлен баг при создании AVI-пустышек с сообщением о том что сорс более 8 бит (хотя на деле RGB32) сообщение оставил Artofeel , 12 августа 2016, 16:52
Изменения в батнике- исправлено несколько критичных ошибок - добавлены опции на кол-во кэширования кадров и путь к сохранению индексов ffms (по умолчанию %TEMP%) сообщение оставил Artofeel , 14 августа 2016, 12:57
+ небольшое критическое исправление в fmtc.resample
сообщение оставил Artofeel , 26 августа 2016, 15:21
Изменения в батнике- еще одно исправление в fmtc =_='' - немного изменил x265 пресет сообщение оставил mad_max , 02 марта 2017, 06:47
Здравствуйте уважаемые форумчане.Прошу вашей помощи, научите работать с VapourSynth. Есть файл с такими данными: Format : Matroska Format version : Version 2 File size : 1.64 GiB Duration : 23mn 42s Overall bit rate mode : Variable Overall bit rate : 9 888 Kbps Format : Matroska Format version : Version 2 File size : 1.64 GiB Duration : 23mn 42s Overall bit rate mode : Variable Overall bit rate : 9 888 Kbps Нужно надергать из файла небольшие кусочки видео продолжительностью 10 секунд с промежутком между ними 50 секунд (ну или все тоже самое, но только не в секундах, а фреймах). А потом объединить их в один файл, что бы пройтись по нему 1-ым проходом для анализа перед кодированием в h265. Сначала я попробовал это сделать с помощью ffmpeg под Ubuntu-ой. Набросал небольшой скрипт. С помощью ffmpeg -i "$input_file" -ss 00:0:00 -t 00:00:20 -vcodec copy -acodec copy "$out_file" вырезаю кусочки, а потом объединяю их в фай. ffmpeg -f concat -safe 0 -i $out_file_list -vcodec copy -acodec copy $file Но итоговый файл получается битый. Видимо таким способом нарушается его структура. Почитал в интернетах и понял, что файл нужно прогнать через VapourSynth. Но вот не могу понять как с ним правильно работать. Установил под win 2012 следующее: python-3.5.3-amd64 VapourSynth-R35 VapourSynthEditor-r15-64bit (портабл версия, другой на сайте нет) vlc-2.2.4-win32 XviD4PSP 7 StaxRip-x64-1.4.0.0-stable (портабл версия) Не совсем понимаю логику дальнейших манипуляций. Может есть гайд на русском или что-то еще, объясняющее как правильно работать? Заранее благодарен за любую помощь! сообщение оставил Artofeel , 02 марта 2017, 10:32
mad_max, а в < VirtualDub > слабо нарезать?ну если хочется по хардкору, то можно и вайпе через < Trim >
начало на 100 кадре, конец на 50 (т.е. +50 кадров начиная со 100, а не 50 с оригинального 0) полный код наверно так будет выглядеть
Добавлено (через 10 мин. и 18 сек.):
-vcodec copy это кстати копирование сжатия, т.е. итоговый файл не будет битый только если это какой то старый DivX и ему подобные (и то не факт) или MPEG1\2 H264\H265 можно порезать, но только от начала, т.е. первого I-кадра, то бишь 0 воспроизведение разреза со второго и последующих, неизбежно приведут к артефактам при декоде, вроде это как то связано с реф-фреймами сообщение оставил mad_max , 02 марта 2017, 11:48
Мне необходимо отредактировать множество файлов, а в ручную этого делать не хочется, хочется автоматизировать процесс. К тому же VirtualDub не смог открыть этот файл. Спасибо за подсказку по поводу Trim. Меня больше интересует, что мне потом делать с файлом *.vpy? Таким вот образом передавать кодировщику? vspipe --y4m script.vpy - | ffmpeg -i pipe: encoded.mkv сообщение оставил Artofeel , 02 марта 2017, 16:54
правая не знаю, не пользуюсь ffmpeg ачо x265 напрямую нельзя? сообщение оставил mad_max , 03 марта 2017, 06:21
Наверно можно. Просто для меня вся это тема в новье, потому и обратился за помощью. сообщение оставил Artofeel , 05 марта 2017, 14:28
Изменения в батнике- исправил монтирование AVI, так как в новых версия более нет dll'ки, теперь вместо нее avfs.exe который в < разы быстрее > добавил к первому посту < LSMASHSource >:
также сделал пак всего что нужно для работы < http://pc.cd/aCbotalK > |