Ru-Board.club
← Вернуться в раздел «Программы»

» AviSynth

Автор: sergogo
Дата сообщения: 11.06.2007 15:52

Цитата:
xitsa


спасибо ознакомлюсь
Автор: Alex_Dragon
Дата сообщения: 27.06.2007 00:05

Цитата:
Слушайте, не въеду, а циклы в скриптах делать можно или нет?


Цитата:
А зачем?


Гм… Ну если я хочу какую-то последовательность действий сколько-то раз повторить?
Например, мне нужно взять одну картинку (из bmp-файла) и прокрутить её в течении какого-то времени с заданной частотой кадров. Можа я не тем местом мануал читал, но там в основном упор на загрузку последовательности картинок, а как вышеозначенный финт сделать — чего-то не осознал. Первая мысль — загрузить эту картинку n раз подряд. Когда начал думать, как её реализовать, с интересом понял, что в отличие от нормальных языков програмиирования, никаких операторов циклов в Ависинте я не помню. Другой пример: нужно в неком ролике плавно в течение какого-то промежутка времени цветовую насыщенность поднять от нуля (чёрно-белое изображение) до полной (цветное). Опять же, первая мысль: нужно поочерёдно, скажем, каждый кадр, повышать насыщенность на сколько-то единиц. Ну не будешь же сто раз подряд писать строку команд с новыми параметрами. А если нет — то как это правильно сделать?
Автор: Abs62
Дата сообщения: 27.06.2007 01:25
Alex_Dragon

Цитата:
Например, мне нужно взять одну картинку (из bmp-файла) и прокрутить её в течении какого-то времени с заданной частотой кадров.

ImageSource + Loop

Цитата:
Другой пример: нужно в неком ролике плавно в течение какого-то промежутка времени цветовую насыщенность поднять от нуля (чёрно-белое изображение) до полной (цветное). Опять же, первая мысль: нужно поочерёдно, скажем, каждый кадр, повышать насыщенность на сколько-то единиц.

Animate
Автор: xitsa
Дата сообщения: 27.06.2007 17:57

Цитата:
Alex_Dragon

Цитата:
Например, мне нужно взять одну картинку (из bmp-файла) и прокрутить её в течении какого-то времени с заданной частотой кадров.     

ImageSource + Loop

+Trim
Сейчас доки под рукой нет, но помоему, когда я такое пытался сделать, то Loop делал для каждого кадра отдельно.
Автор: Alex_Dragon
Дата сообщения: 27.12.2007 21:48
Можно ли как-то обратиться к какому-либо кадру в клипе? Нужно кадром из одного клипа заменить кадр в другом клипе. Или только через Trim?
Автор: Abs62
Дата сообщения: 28.12.2007 00:05
Alex_Dragon
Ну, можно ещё ConditionalFilter покопать. А чем Trim не устраивает?
Автор: Alex_Dragon
Дата сообщения: 28.12.2007 12:47
Не устраивает громоздкостью выражений, неудобно получается.
Ситуация какая: есть две записи одной передачи, одна качеством похуже, другая получше. Но в лучшей на некоторых кадрах есть артефакты — срывы кадров, какие-то помехи. Возникла мысль заменить их на соответствующие хорошие кадры из первого клипа. Но это получается, сперва нужно сделать клип с нужным кадром, потом обрезать обрабатываемый клип до плохого кадра, сложить с клипом, в котором хороший кадр, сложить с клипом, который представляет собой обрезок исходного клипа после плохого кадра. Если плохих кадров достаточно много — слишком уж длинно получается и диапазоны высчитывать надо. Это геморнее, чем было бы просто указать какой кадр на какой менять. А штуки типа FreezeFrame или DuplicateFrame работают только в пределах одного клипа, механизма же, как в них передать аргументом номер кадра из другого клипа, я не нашёл.

Вот черновик:

LoadPlugin("h:\Dgmpgdec\DGDecode.dll")
Clip1=mpeg2source("Csk_part_1.d2v")
Clip1=FieldDeinterlace(Clip1)
Clip1=Crop(Clip1,16,0,684,570)
Clip1=Bilinearresize(Clip1,384,288)
Clip1=Trim(Clip1,386,97516)
Clip0=Clip1
Clip1=Trim(Clip1,0,12439)

Clip2=mpeg2source("Csk_v2.d2v")
Clip2=FieldDeinterlace(Clip2)
Clip2=Crop(Clip2,16,0,684,570)
Clip2=Bilinearresize(Clip2,384,288)
Clip2=Trim(Clip2,204,84895)

ClipFull=Clip1+Clip2 # тут по ходу решается та проблема, что второй, более качественный клип, начал писаться не сначала, поэтому недостающий кусок берётся из первого.

Frm15128=Trim(Clip0, 15128, 15128) #хорошие кадры для замены
Frm18351=Trim(Clip0, 18351, 18351)

Clip0_15127=Trim(ClipFull, 0, 15127) # кусок до плохого кадра

Clip15129_18350=Trim(ClipFull, 15129, 18350) # кусок после плохого кадра и до следующего плохого

ClipLast=Trim(ClipFull, 18352, 0) # хвост от последнего плохого кадра и до конца

ClipAll=Clip0_15127+Frm15128+Clip15129_18350+Frm18351+ClipLast # итоговый клип
Автор: Abs62
Дата сообщения: 28.12.2007 16:47
Alex_Dragon
А пользовательские функции на что? Например:

Код: function ReplaceFrames(clip clip1,clip clip2,int frame1_1,int frame1_2,int frame2_1,int frame2_2) {
c1=Trim(clip1,0,frame1_1)
c2=Trim(clip2,frame2_1,frame2_2)
c3=Trim(clip1,frame1_2,0)
return(c1+c2+c3)
}
Автор: Alex_Dragon
Дата сообщения: 31.12.2007 01:48
Ага, спасибо.
Только вот наверное всё же так:

function ReplaceFrames(clip clip1,clip clip2,int frame1_1,int frame1_2,int frame2_1,int frame2_2) {
c1=Trim(clip1,0,frame1_1-1)
c2=Trim(clip2,frame2_1,frame2_2)
c3=Trim(clip1,frame1_2+1,0)
return(c1+c2+c3)
}

Иначе в итоговом клипе получается не замена, а мешанина какая-то — кроме кадра замены появляется битый кадр-дубль.

А импорт тут чем может быть полезен?
Автор: Abs62
Дата сообщения: 31.12.2007 12:34
Alex_Dragon

Цитата:
Только вот наверное всё же так:

Ну я же и сказал - доработать напильником.

Цитата:
А импорт тут чем может быть полезен?

Хранить подобные функции в отдельных скриптах и подключать по мере необходимости. Получится обычная подключаемая библиотека.
Автор: Alex_Dragon
Дата сообщения: 08.02.2008 14:21
Что-то я не пойму с версиями. На сайте ависинта в документации всё приведено к версии 2.6, и говорится о ней, как о чём-то решённом и законченном, а где её скачать-то? Или они доку наперёд, впрок пишут? На соурсфордже самая свежая — 2.5.8 в стадии перманентной альфы и я что-то никакой особой активности не замечаю.
Автор: Yourbill
Дата сообщения: 08.02.2008 22:39
Alex_Dragon
Наверное имеется ввиду версия 2.5.6
Автор: Alex_Dragon
Дата сообщения: 09.02.2008 01:32
Не-а. Там описаны, например, фильтры, которых нет в ветке 2.5.x, заявлена работа с новыми цветовыми пространствами, в общем, кое-что вкусненького, чего хочется уже.
Порылся на форуме doom9 — 2.6 действительно планируется, но всё ещё в стадии разработки. Разработчики пишут, дескать, работа идёт медленно, но верно. Не знаю, дождёмся ли. А там ведь ещё AviSynth 3 заявлен. Если они его добьют, то будет всем щастье и вознесение на небеса, потому как будет и под линукс.
Автор: Alex_Dragon
Дата сообщения: 15.02.2008 16:37
Кто сталкивался с удалением регулярных помех, типа полос? Вот как на картинке — вертикальные тёмные полоски в левой половине.



Таких просматривается восемь штук (самые левые сливаются с фоном, но на других снимках вполне заметны). Первая мысль — воспользоваться каким-нибудь плагином, из реально чего-то похожего я нашёл только DeFreq от Fizick'а, однако воспользоваться им крайне проблематично из-за корявого мануала, в котром по сути голое описание параметров без внятного пояснения, как соотнести цифирь с выводимыми на экран картинками. Кроме того, насколько я понял, он расчитан на равномерно распределённые по всей площади кадра полосы. В данном же случае задача несклько отличается — помеха только в части экрана.
Второй мыслью было сделать вычитание из изображения усреднённой картинки с помехами. В частности, приведённый скриншот был получен последовательным оверлейным наложением восьми кадров. Однако, дальше я запнулся на двух проблемах. Первая: даже усреднённый кадр получается достаточно грязным и может так получиться, что компенсировав собственно полоски, он добавит грязи в общем. То есть надо его отфильровать как-то так, что бы выделить только изменения уровня помехи относительно уровня фона. Как это оптимальнее сделать — я не знаю. Пробовал играться с фотошопом, но невелик мастер. Если правую часть кадра просто залить усреднённым цветом, то слишком заметен разрыв. Думал даже просто руками нарисовать на чистом листе линии, но не уверен, что их получится размыть соответственно оригиналу.
Вторая проблема: а как собственно правильно и оптимально и что из чего вычитать? Пробую сейчас играться с оверлеями и сабтрактом — действительно, полосы удаляются, но правильный режим найти не могу, фигня какая-то получается, кофе с молоком.
Кто что знает и какие идеи будут?
Автор: egor y egorov
Дата сообщения: 11.03.2008 08:21
Кто нибудь знает, где можно найти DirectShowSource.dll скомпилированную под архитектуру amd64 (для win x64)?
Автор: Abs62
Дата сообщения: 14.03.2008 20:28
egor y egorov
А зачем? Насколько я понимаю, это всего лишь интерфейс к системным программам.
Автор: egor y egorov
Дата сообщения: 15.03.2008 08:32

Цитата:
А зачем?

Для того, чтобы открывать файлы mp4, mkv, а также avi DV-type1 в 64-битном ависинте
Автор: Abs62
Дата сообщения: 15.03.2008 14:44
egor y egorov
Так это же встроенный фильтр. Соответствено, он должен входить в комплект.
А что, уже существует AviSynth64?
Автор: egor y egorov
Дата сообщения: 15.03.2008 16:43
Официально - нет. Есть avisynth.dll, скомпилированная под amd64 с reg-файлом вместо инсталятора. Вот я и ищу DirectShowSource.dll, потому что именно посредством этой библиотеки реализована функция DirectShowSource()...
Автор: masgak
Дата сообщения: 27.03.2008 12:07
Скажите можно ли с помощью этой программы (AviSynth), перекодировать
фильм в другой формат?
Фильм с расширением .avi не открывается вообще ни каким плеером.
Автор: Abs62
Дата сообщения: 27.03.2008 20:03
masgak

Цитата:
Фильм с расширением .avi не открывается вообще ни каким плеером.

Тогда и AviSynth его вряд ли поймёт - он системными функциями пользуется. VirtualDub его открывает?
Автор: masgak
Дата сообщения: 27.03.2008 20:47
Abs62

Цитата:
VirtualDub его открывает?

не хочет


Автор: kmikl
Дата сообщения: 30.04.2008 07:21
скорее всего просто битый файл.
Автор: Widok
Дата сообщения: 28.05.2008 23:02
AviSynth 2.5.8 RC1 [May 27th]
скачать

Changelist with respect to 2.5.7:
[more]Additions:
* Installer standalone option for putting avisynth.dll, etc into install directory and NOT updating registry.
* Blankclip added audio channels= and sample_type= arguments.
* ConvertAudio(cii) available to plugins via env->Invoke().
* Added font aspect, rotation and alpha to text routines.
* Added /* xxx */ block comments.
* Added [* [* xxx *] *] nestable block comments.
* SetMemoryMax(0) to just return current Memory Max value.
* Added planar YV12 color format to Compare() [Fizick].
* ColorKeyMask: Allow independant tolerance levels for each channel.
* Added Tweak Hue/Saturation range limiting.
* Added AudioLevels and Color2 modes to Histogram.
* Adding global OPT_UseWaveExtensible=True to your script enables WAVE_FORMAT_EXTENSIBLE audio output.
* Added ShowTime() script verb, like ShowSMPTE() but with milliseconds.
* Added BlackmanResize() and Spline64Resize().
* Modified DeleteFrame()/DuplicateFrame() to process multiple arguments.
* Added Min()/Max() script functions.

Bugfixes:

* Fixed Parser FunctionTable::TypeMatch() missing compulsory arguments. Dissolve bug (Various).
* Fixed DirectShowSource() QueryId() use CoTaskMemAlloc for returned value (Dean Pavlekovic).
* Fixed DirectShowSource() use GraphBuilder object for media control (Avery Lee).
* Fixed DirectShowSource() remove PulseEvent calls (Avery Lee).
* Fixed DirectShowSource() QueryAccept() modifying VideoInfo in running script (Haali).
* Fixed Blankclip clip= argument parsing.
* Fixed ImageReader incompletely inited videoInfo.
* Fixed Layer RGB32 100% alpha implementation, use level=257 (new default).
* Fixed avisynth_c.h avs_is_parity_known().
* Fixed C++ ConvertAudio::Saturate_int32() rounding.
* Fixed WriteFile(), Now remembers absolute path to file.
* Fixed Info() frame pitch, reports pitch of input frame.
* Fixed Invert() right edge memory overrun/corruption.
* Fixed Histogram() Classic mode pixel values exceeding YUV limits.
* Fixed Histogram() chroma plane initialization to 128.
* Fixed Conditional reader/writer illegally saving IScriptEnvironment pointer.
* Fixed YV12 Blur()/Sharpen() right edge pixel corruption with non-writable input frames.
* Fixed MMX Blur()/Sharpen() code to full 8 bit precision.
* Fixed IsAudioFloat()/IsAudioInt() script functions.
* Fixed Cache memory oversubscription of SetMemoryMax() limit.

Optimizations:

* DirectShowSource() FPS detection as last attempt tries getting the duration of 1st frame.
* DirectShowSource() convertfps=true rely only on sample start time.
* Refactor horizontal planar resizer, no width restrictions or 2 byte overwrite.
* Provide a simple and fast text writing primatives, see info.h
* Make audio cache actually functional.
* Tweak() speed improvements.
* Subtract() speed improvements.
* Tuneup Overlay() ISSE Convert444ChromaToYV12 and also provide MMX version.
* PokeCache internal interface implemented.
* Cache and Memory management enhancements.

Changes:

* Enable Installer multi language support [Need volunteers to do translations].
* FunctionTable::Lookup() now considers named arguments in making its selection.
* ImageWriter supports negative values as -count for End argument.
* ChanegFPS() use floor instead of round in source frame number calculation.
* Convert to Dynamic Assembled rgb to yuy2 code.
* Avisynth_c.h boolean functions return 1 for true instead of arbitrary non-zero.
* Internal RGB2YUV() now copies Alpha top byte through.
* CoUninitialize() done immediately for S_FALSE CoInitialize() returns, i.e we do not hold a COM use count.
* Pfc, Softwire and SoundTouch updated and added as dependency projects.
* UPX updated to version 2.03 (2006-11-07).
* Default Memory Max value increased to half minus 64Mb when over 256MB free.
* AVISource/WavSource map WAVEFORMATEXTENSIBLE back to equivalent WAVEFORMATEX.
* DirectShowSource() now recognises incorrect AM_MEDIA_TYPE subtype for WAVE_FORMAT_EXTENSIBLE audio and corrects the data and accepts it.
* DirectShowSource() now attempts to use partial graph from failing RenderFile call.
* DirectShowSource() now detects and handles non 32 bit aligned picture lines from dud codecs.
* Crop(align=true) tests actual alignment in each GetFrame call.
* Relax YV12 resizer width restriction, now mod 2 was mod 4.
* .AVSI failures during env->CreateScriptEnvironment() are now available to the GetError() interface.
* SetCacheHints(CACHE_RANGE, n) will now surrender frames to satisfy SetMemoryMax().
* CoInitialize()/CoUninitialize() now done as part of ScriptEnvironment creation/deletion.
* Much code from 2.6 base included. Typically IsYV12() changed to IsPlanar().[/more]
Автор: Alex_Dragon
Дата сообщения: 05.06.2008 17:48
А не подскажет ли кто аналог фотошоповского Shadows/Highlights для Avisynth'а? Или хотя бы для Dub'а? Или как можно добиться аналогичного эффекта средствами самого Avisynth'а?
Автор: Ze Bolacha
Дата сообщения: 21.06.2008 22:49
А как (если вообще можно) можно получить эффект "магии кино", превратив некомпрессованный AVI 30fps в 24 fps? Я много чего перепробовал, но не выходит. Дергается.
Автор: unreal666
Дата сообщения: 22.06.2008 01:16
Ze Bolacha
Зависит от того, откуда взялись эти 30 кадров.
Смотри справку по фильтру Pulldown. И в этом же фильтре есть ссылка на отладочный фильтр ShowFiveVersions. Его тоже смотри.
Автор: Ze Bolacha
Дата сообщения: 22.06.2008 10:51
А DePan не подойдет? Я нашел как можно переводить 15 в 25:

"Например, чтобы изменить частоту кадров в 1,5 раза, из 16.666 fps (прогрессивный старый 8 мм кинофильм) в 25 fps,
можно применить скрипт:"

Цитата:

loadplugin("depan.dll")
Avisource("kino.avi")
data=DePanEstimate(i,range=1,trust=5)
i=ConvertToYV12()
f1_3=DePan(i,data,offset=1./3)
b1_3=DePan(i,data,offset=-1./3)
interleave(f1_3,i,b1_3)
selectevery(6,0,1,2)


"Это же может быть записано с помощью функции:"

Цитата:

function fps2to3(clip) {
# change FPS from 2 to 3 (or 16.66 to 25, or 20 to 30 and so on), i.e. with factor=3/2
# uses global motion compensation
# input must be YV12 or YUY2 progressive (or separated fields probably ?)
data = DePanEstimate(clip)
f1_3 = DePan(clip, data, offset=1./3)
b1_3 = DePan(clip, data, offset=-1./3)
Interleave(f1_3, clip, b1_3)
SelectEvery(6, 0, 1, 2)
}

AviSource("e:\video.avi")LoadPlugin("depan.dll")
ConvertToYV12()
fps2to3()


Вот только как сделать в принципе обратное, то есть 30 в 25. Надо менять что-то в значениях, а я с AviSynth недавно работаю. Кто поможет?

Автор: Alex_Dragon
Дата сообщения: 22.06.2008 11:19
Источник-то какой? Прогрессив или черезстрочный?
Я как-то с фотоаппарата авишник обрабатывал — просто ChangeFPS написал, и ничего не дёргалось.
Автор: Ze Bolacha
Дата сообщения: 22.06.2008 15:08
Скорее всего прогрессив, потому что когда я разбивал для интереса на поля, а потом опять собирал, появлялась гребенка. Когда пользовался фильтрами без деинтерлейсинга, все было нормально.

Вот AviInfo
File: MVI_1079.avi
Filesize: 0.94 Mb ( 987 192 bytes )
Play length: 00:00:00.999 (30 frames)
Subtitles: Not Present
Video: 640x480 (1.33:1), 30 fps, IBM Motion JPEG including Huffman Tables ~7183 kbps avg, 0.78 bit/pixel
Audio: 44.100 kHz, Microsoft PCM, 1 ch, ~705.60 kbps avg

Че за хрень Таблицы Хаффмана? То самое кодирование Хаффмана?

Добавлено:
Да, видео с фотоаппарата Cannon

Страницы: 12345678910111213141516171819

Предыдущая тема: Вставка из clipboard'а в MS Outlook 2000


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.