Страница 1 из 2
Avisynth
Добавлено: Пн дек 19, 2016 15:31
Dimsok
Хочется кнопку такого рода. В неактивной панели выбран видеофайл, а в активной скрипт avs. Добавить в скрипт первой строкой "AviSource ("Полный путь к видеофайлу"). Если выбран только видеофайл, то создать новый avs скрипт с этой строкой.
Добавлено: Пн дек 19, 2016 17:55
Flasher
Вспомнилось.
Список нужных форматов распиши. И по какому принципу формируется имя .avs при отсутствии.
И что если .avs не под курсором, но есть в папке?
Добавлено: Пн дек 19, 2016 18:09
Dimsok
Имя пусть будет как у видеофайла (без расширения). Форматы avi, divx, mkv, mp4, ts, mpg, mov, flv, asf. Желательно так, чтобы "AviSource" можно было легко поменять на др, напр DirectShowSource, правкой скрипта или указанием прямо в параметрах.
Добавлено: Пн дек 19, 2016 18:14
Flasher
На последний вопрос не ответил.
Что касается фильтров, то не лучше ли их привязывать к конкретным расширениям?
Добавлено: Пн дек 19, 2016 18:53
Dimsok
И что если .avs не под курсором, но есть в папке?
Тогда ничего. В папке же может быть не один avs, не для всех же скопом менять.
Про привязку не знаю. Может один фильтр будет с конкретным форматом лучше работать, чем с др.
Добавлено: Пн дек 19, 2016 19:09
Flasher
Код: Выделить всё
'===============================================================================
' Добавление сверху содержимого AVS-скрипта команды фильтра с путём к видеофайлу
' Параметры: "<путь к avs>" "<путь к видео>" <команда фильтра>
' Пример: %V %T%M AviSource
'===============================================================================
With WSH.Arguments
If .Count <> 3 Then MsgBox "Укажите 3 параметра!",_
4144, " Правка (создание) AVS" : WSH.Quit
AVS = .Item(0) : VFile = .Item(1) : Pref = .Item(2)
End With : Str = Pref & "(""" & VFile & """)"
Exs = " asf avi divx flv mkv mov mp4 mpg ts "
With CreateObject("Scripting.FileSystemObject")
If .FileExists(VFile) And InStr(Exs, " " & LCase(.GetExtensionName(VFile) & " ")) Then
If .FileExists(AVS) And LCase(.GetExtensionName(AVS)) = "avs" Then
All = "" : If .GetFile(AVS).Size <> 0 Then All = .OpenTextFile(AVS).ReadAll
If InStr(All, Str) <> 1 Then .OpenTextFile(AVS, 2).Write Str & vbNewLine & All
Else nAVS = .GetParentFolderName(AVS) & "\" & .GetBaseName(VFile) & ".avs"
If Not .FileExists(nAVS) Then .CreateTextFile(nAVS).WriteLine Str
End If
End If
End With
Добавлено: Пн дек 19, 2016 19:26
Dimsok
Спасибо.
Добавлено спустя 7 минут:
А реально сделать так, чтобы он распознавал по какому-нибудь признаку, есть ли в скрипте ссылка на источник, и если да, заменял её новым путём, а если нет, то просто добавлял новый?
Добавлено: Пн дек 19, 2016 19:32
Flasher
Что ты понимаешь под ссылкой на источник?
Добавлено: Пн дек 19, 2016 19:41
Dimsok
Ну если, например в avs уже есть AviSource("путь"), FFVideoSource () и т.п можно это определять, и заменять его?
Добавлено: Пн дек 19, 2016 19:46
Flasher
Можно, конечно. А есть где? На первой строке или на любой?
Добавлено: Пн дек 19, 2016 19:49
Dimsok
Пусть будет на первых двух. Потому что, например, есть такой вариант:
A = FFAudioSource
V = FFVideoSource
Пусть в этом случае обе строки заменяются на одну.
Добавлено: Пн дек 19, 2016 19:58
Flasher
Так A и V - это две разных переменных, которые, я полагаю, используются в других строках.
Как заменять? Просто удалить и прописать AviSource("путь")?
Какой тогда критерий поиска? Просто искать путь и заменять его в первой строке при совпадении фильтра, в ином случае заменять фильтр или выше новую строку прописывать?
Добавлено: Пн дек 19, 2016 20:01
Dimsok
Так A и V - это две разных переменных, которые, я полагаю, используются в других строках
Да, используются. Третья строка AudioDub(V, A), но это уже можно будет руками убрать. А критерии поиска наверное *Source(*) для первых двух строк.
Добавлено: Пн дек 19, 2016 20:03
Flasher
Так что делать, если фильтр не совпал?
Добавлено: Пн дек 19, 2016 20:03
Dimsok
Просто искать путь и заменять его в первой строке при совпадении фильтра, в ином случае заменять фильтр или выше новую строку прописывать?
Заменять путь вместе с фильтром. Новую строку прописывать, если не найдено.