Показать сообщение отдельно
Старый 03.09.2008, 02:52   #1
romamos Меню пользователя
Провидеолюбитель
 
Аватар для romamos
 
Регистрация: 06.05.2008
Сообщений: 519
Рейтинг: 20674
romamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверия
По умолчаниюСкрипты (Scripts)

Скрипты и утилиты для Sony Vegas

Помимо множества полезных функций Sony Vegas обладает и чрезвычайно приятной особенностью – он умеет работать со скриптами (scripts).

Для справки: Работа со скриптами доступна лишь в полной версии Vegas. В варианте Vegas Movie Studio такая возможность отсутствует.

Скрипт – это макрокоманда, которая "в один клик" запускает целую цепочку операций в Вегас и позволяет таким образом автоматизировать выполнение множества задач при работе с видео и звуком и сэкономить массу времени.

Для Vegas уже написано множество различных скриптов и они активно используются, однако для большинства русскоязычных пользователей их применение ограничивается тем, что инструкции по работе и настройке скрипта под конкретную систему записываются в исходном коде на английском языке. Пришла пора исправить этот пробел.

Править скрипты можно с помощью встроенного в Windows Notepad, но удобнее это делать с помощью бесплатного редактора Notepad++, в котором есть подсветка синтаксиса скрипта и ряд других полезных возможностей (в т.ч. русский интерфейс)
скачать можно с оф.сайта: http://notepad-plus.sourceforge.net/...ut.php?lang=ru

Предлагаю выкладывать здесь реально работающие скрипты для Вегаса, и дабы уменьшить по возможности число лишних вопросов выкладывать их с ОБЯЗАТЕЛЬНЫМ описанием того, как скрипт работает и какие изменения необходимо внести в исходный код для подстройки под конкретную систему. Поскольку ссылки на файлообменники имеют тенденцию устаревать, просьба в постах выкладывать также и исходный код скрипта, чтобы пользователь, в случае необходимости, мог самостоятельно создать для себя файл скрипта или адаптировать существующий.

Ну и, естественно, хотя большинство скриптов и выкладываются в сети для общего пользования - не стоит забывать о том, что каждый скрипт имеет своего автора. Давайте уважать друг друга и если Вы модифицировали скрипт – укажите это ОТДЕЛЬНОЙ СТРОКОЙ, а не затирайте имя автора исходного кода.

Цитата:
Как пользоваться скриптами?
Для запуска скриптов Вегас (до 6-й версии) использует платфору MS.NET Framework 1.1, Vegas 7 – MS.NET Framework 2, Vegas Pro 8 - использует MS.NET Framework 3, что дает возможность писать скрипты на языках поддерживаемых данной платформой (JScipt, C#, VB & etc.)
Если у вас есть готовый файл скрипта, то для запуска его в Вегас требуется скопировать файл в папку "C:\Program Files\Sony\Vegas *.0\Script Menu\".
VP8 для работы со скриптами создает целых три папки: одну как и прежде в программной папке и еще две под названиями "Vegas Script Menu" и "Vegas Application Extensions" в папке *\\My documents.
Если Вегас уже запущен, то в меню - Tools -> Scripting нужно кликнуть по пункту - Rescan Script Menu Folder.
После перепросмотра (обновления списка) в списке скриптов появится Ваш скрипт. Как назывался файл (имя файла) – так же и будет называться пункт меню.
В VegasPro 8 реализован новый тип скриптов "Extensions", которые работают по типу подключаемых модулей (plug-ins). Дабы не смешивать их с "традиционными" скриптами правильнее будет называть "скриптовыми плагинами". Эти скрипты "живут" в подпунктах "Extensions" меню "View", "Edit" и "Tools"

Платформа .NET. Хороший выбор разработчиков, но когда на форуме публикуется скрипт в тексте (сам так делаю), человеку не знающему программирование сложно понять какой это язык. Т.е. в файл с каким расширением сохранять скопированный код. Данный вопрос можно разрешить методом тыка - копируем текст и создаем в вышеуказанной папке файл с расширением (.js, .cs или .vb). Если расширение не соответствует языку скрипта, то - при попытке запустить скрипт, Вегас выдаст ошибку. Следовательно, переименовываем файл (пишем другое расширение) и пробуем запустить еще раз.

Подсказка:
Если в первых строках кода скрипта видим "import"
import System;
import System.Text;
import System.IO;
import System.Drawing;
import System.Windows.Forms;
import Sony.Vegas;
следовательно - это JScript (filename.js)

Если видим "using":
using System;
using System.IO;
using System.Text;
using System.Drawing;
using System.Collections;
using System.Diagnostics;
using System.Windows.Forms;
using Sony.Vegas;
значит это C# (filename.cs)

Добавка в отношении скриптов.
Если Вам часто приходится использовать какой-то скрипт - его можно назначить на кнопки. Для этого идем в Preferences -> Keyboard -> Context => Global -> Available Commands, и мотаем примерно до середины. Все скрипты представлены в списке с префиксом "Script.Имя скрипта". Назначаем удобную комбинацию на требуемый скрипт и наслаждаемся ....

Второй способ - вынос скрипта на инструментальную панель (Тулбар).
Идем Options->Costumize Toolbar...
Крутим список примерно до середины - после
Run Script
Compile Script

видим список наших скриптов. Добавляем на инструментальную панель, пользуемся.
--------------------
Для каждого скрипта можно создать свою иконку, для этого достаточно в папке (С:\Program Files\Sony\Vegas 6.0\Script Menu) создать PNG файл размером 16*16 px и назвать его по имени скрипта.

Например:
export xml.js
export xml.js.png

Иконки скриптов в Vegas Pro 8 должны быть 32 bit цвет и размер строго 16х16 пикс. Предыдущие версии Вегаса в т.ч. понимали иконки размером 16х32 пикс, VP8 их "не видит".
Подсказка: если при наведении мыша на иконку в Вегас 7 и ниже она меняла цвет, или картинку, то это, наверняка - 16х32. У таких иконок надо просто отрезать половину и пересохранить ее как *.png 16x16 32 bit.
В данном случае, на тулбар будет красоваться индивидуальная иконка, что облегчит последующую идентификацию.

Чтобы появилась иконка, требуется зайти в Tools->Scripting->Rescan Script Menu Folder.

Для того, чтобы создать файл скрипта из исходного кода необходимо в любом текстовом редакторе (например в Windows Notepad) создать новый файл, скопировать в него исходный код и сохранить в папку со скриптами Вегаса. Обратите внимание, что при этом название создаваемого файла прописывается полностью с расширением, а тип отображаемых файлов переводится в режим All files (Все файлы).

Подробную инструкцию по работе со скриптами в Вегасе также можно прочитать здесь на странице переведенной Справки.
Для начинающих скриптописателей и скриптомарателей (модификаторов) весьма полезным будет вот этот Vegas Scripting FAQs. (англ.)


ПРИМЕР ОФОРМЛЕНИЯ ПОСТА

RenderQueue
- скрипт для пакетного просчета нескольких проектов Вегас в один заход с вариантом выключения компьютера по окончании просчета.

Порядок работы:

После запуска скрипта из Вегаса в открывшемся окне выбираете проект, который необходимо просчитать. После нажатия ОК окно закрывается и открывается вновь. Выбираете следующий проект и так до тех пор, пока не выберете все нужные вам проекты. Когда выбирать больше нечего, закрываете вновь открывшееся окно кнопкой Cancel (Отмена), запускается просчет.

Код:
===========================================================================
/**
 * This script can be used to queue up multiple Vegas project files
 * to be rendered.
 *
 * Revision Date: May. 07, 2003
 **/

import System.IO;
import System.Windows.Forms;
import Sony.Vegas;

// Modify the following two lines to suit you needs for the output
// format.
var rendererRE = /Video for Windows/;
var templateRE = /PAL DV/;

// Set this to a valid out directory or set it to null if you want the
// output files to be created in the same directory as their project
// file.
var defaultOutputDir = "O:\Rendered";

// Set the following variable to true if you want to allow the script
// to overrwite existing rendered output files.
var allowFileOverwrites = false;

try {
        if ((null != defaultOutputDir) && !Directory.Exists(defaultOutputDir))
                throw "output directory does not exist: " + defaultOutputDir;

        // find the renderer and template
        var renderer : Renderer = FindRenderer(rendererRE);
        if (null == renderer)
                throw "failed to find renderer";
        var renderTemplate :RenderTemplate = FindRenderTemplate(renderer, templateRE);
        if (null == renderTemplate)
                throw "failed to find render template";

        // get file name extension that will be appended to each output file
        var rendererExt = renderer.FileExtension.substring(1);

        // prompt user for the list of project files to be rendererd.
        var renderQueue = new Array();
        var queueIndex = 0
        while (true) {
                var nextVeg = ShowOpenFileDialog("Vegas Projects (*.veg)|*.veg", "Queue Project File (cancel to begin)", null);
                if (null == nextVeg) {
                        break;
                }
                renderQueue[queueIndex] = nextVeg;
                queueIndex++;
        }

        // for each project file in the queue...
        var renderIndex = 0
        while (renderIndex < queueIndex) {
                // open the next project
                var vegFilename = renderQueue[renderIndex];
                if (!Vegas.OpenProject(vegFilename)) {
                        throw "failed to open project file: " + vegFilename;
                }

                // compute the output directory
                var outputDir;
                if (null == defaultOutputDir) {
                        outputDir = Path.GetDirectoryName(vegFilename);
                } else {
                        outputDir = defaultOutputDir;
                }

                // create the output file name
                var outputName = Path.GetFileNameWithoutExtension(vegFilename);
                var outputFilename = outputDir + Path.DirectorySeparatorChar + outputName + rendererExt;
                if ((!allowFileOverwrites) && File.Exists(outputFilename))
                        throw "file already exists: " + outputFilename;

                // perform the render
                var renderStatus = Vegas.Render(outputFilename, renderTemplate);
                if (RenderStatus.Complete != renderStatus)
                        throw "failed to complete render: " + outputFilename;

                renderIndex++;
        }
} catch (e) {
        MessageBox.Show(e);
}


// an example filter: "PNG File (*.png)|*.png|JPEG File (*.jpg)|*.jpg"
function ShowOpenFileDialog(filter, title, defaultFilename) {
        var openFileDialog = new OpenFileDialog();
        if (null == filter) {
                filter = "All Files (*.*)|*.*";
        }
        openFileDialog.Filter = filter;
        if (null != title) openFileDialog.Title = title;
        openFileDialog.CheckPathExists = true;
        openFileDialog.AddExtension = true;
        if (null != defaultFilename) {
                var initialDir = Path.GetDirectoryName(defaultFilename);
                if (Directory.Exists(initialDir)) {
                        openFileDialog.InitialDirectory = initialDir;
                }
                openFileDialog.DefaultExt = Path.GetExtension(defaultFilename);
                openFileDialog.FileName = Path.GetFileName(defaultFilename);
        }
        if (System.Windows.Forms.DialogResult.OK == openFileDialog.ShowDialog()) {
                return Path.GetFullPath(openFileDialog.FileName);
        } else {
                return null;
        }
}

function FindRenderer(rendererRegExp : RegExp) : Renderer {
        var rendererEnum : Enumerator = new Enumerator(Vegas.Renderers);
        while (!rendererEnum.atEnd()) {
                var renderer : Renderer = Renderer(rendererEnum.item());
                if (null != renderer.FileTypeName.match(rendererRegExp)) {
                        return renderer;
                }
                rendererEnum.moveNext();
        }
        return null;
}

function FindRenderTemplate(renderer : Renderer, templateRegExp : RegExp) : RenderTemplate {
        var templateEnum : Enumerator = new Enumerator(renderer.Templates);
        while (!templateEnum.atEnd()) {
                var renderTemplate : RenderTemplate = RenderTemplate(templateEnum.item());
                if (renderTemplate.Name.match(templateRegExp)) {
                        return renderTemplate;
                }
                templateEnum.moveNext();
        }
        return null;
}
==========================================================================
Особенности использования скрипта:

Данный скрипт настроен на просчет в формате AVI (Video for Windows) шаблон PAL DV. Для того, чтобы выбрать другой вариант просчета, необходимо в строках:
#14| var rendererRE = /Video for Windows/;
#15| var templateRE = /PAL DV/;
изменить выделенный текст на те настройки, которые вам нужны
в строке:
# 20| var defaultOutputDir = "O:\Rendered";
задается папка, в которую будут просчитываться Ваши проекты.

Дополнение:

RenderQueueShutDown
– вариант скрипта с выключением компьютера по окончании просчета.

Внимание! Прежде чем запускать данный скрипт сохраните изменения в текущем проекте, и других открытых приложениях, т.к. после его запуска отменить исполнение скрипта будет невозможно, в случае отказа от рендеринга проекта компьютер будет выключен с принудительным закрытием всех приложений в течение 10 сек. и несохраненные данные могут быть потеряны!

Код:
===========================================================================
/**
 * This script can be used to queue up multiple Vegas project files
 * to be rendered.
 *
 * Revision Date: July. 07, 2007
 **/ Modified by romamos 

import System.IO;
import System.Windows.Forms;
import Sony.Vegas;

// Modify the following two lines to suit your needs for the output
// format.
var rendererRE = /Video for Windows/;
var templateRE = /PAL DV/;

// Set this to a valid out directory or set it to null if you want the
// output files to be created in the same directory as their project
// file.
var defaultOutputDir = "O:\Rendered";

// Set the following variable to true if you want to allow the script
// to overrwite existing rendered output files.
var allowFileOverwrites = true;

try {
        if ((null != defaultOutputDir) && !Directory.Exists(defaultOutputDir))
                throw "output directory does not exist: " + defaultOutputDir;

        // find the renderer and template
        var renderer : Renderer = FindRenderer(rendererRE);
        if (null == renderer)
                throw "failed to find renderer";
        var renderTemplate :RenderTemplate = FindRenderTemplate(renderer, templateRE);
        if (null == renderTemplate)
                throw "failed to find render template";

        // get file name extension that will be appended to each output file
        var rendererExt = renderer.FileExtension.substring(1);

        // prompt user for the list of project files to be rendererd.
        var renderQueue = new Array();
        var queueIndex = 0
        while (true) {
                var nextVeg = ShowOpenFileDialog("Vegas Projects (*.veg)|*.veg", "Queue Project File (cancel to begin)", null);
                if (null == nextVeg) {
                        break;
                }
                renderQueue[queueIndex] = nextVeg;
                queueIndex++;
        }

        // for each project file in the queue...
        var renderIndex = 0
        while (renderIndex < queueIndex) {
                // open the next project
                var vegFilename = renderQueue[renderIndex];
                if (!Vegas.OpenProject(vegFilename)) {
                        throw "failed to open project file: " + vegFilename;
                }

                // compute the output directory
                var outputDir;
                if (null == defaultOutputDir) {
                        outputDir = Path.GetDirectoryName(vegFilename);
                } else {
                        outputDir = defaultOutputDir;
                }

                // create the output file name
                var outputName = Path.GetFileNameWithoutExtension(vegFilename);
                var outputFilename = outputDir + Path.DirectorySeparatorChar + outputName + rendererExt;
                if ((!allowFileOverwrites) && File.Exists(outputFilename))
                        throw "file already exists: " + outputFilename;

                // perform the render
                var renderStatus = Vegas.Render(outputFilename, renderTemplate);
                if (RenderStatus.Complete != renderStatus)
                        throw "failed to complete render: " + outputFilename;

                renderIndex++;
        }
} catch (e) {
        MessageBox.Show(e);
}


// an example filter: "PNG File (*.png)|*.png|JPEG File (*.jpg)|*.jpg"
function ShowOpenFileDialog(filter, title, defaultFilename) {
        var openFileDialog = new OpenFileDialog();
        if (null == filter) {
                filter = "All Files (*.*)|*.*";
        }
        openFileDialog.Filter = filter;
        if (null != title) openFileDialog.Title = title;
        openFileDialog.CheckPathExists = true;
        openFileDialog.AddExtension = true;
        if (null != defaultFilename) {
                var initialDir = Path.GetDirectoryName(defaultFilename);
                if (Directory.Exists(initialDir)) {
                        openFileDialog.InitialDirectory = initialDir;
                }
                openFileDialog.DefaultExt = Path.GetExtension(defaultFilename);
                openFileDialog.FileName = Path.GetFileName(defaultFilename);
        }
        if (System.Windows.Forms.DialogResult.OK == openFileDialog.ShowDialog()) {
                return Path.GetFullPath(openFileDialog.FileName);
        } else {
                return null;
        }
}

function FindRenderer(rendererRegExp : RegExp) : Renderer {
        var rendererEnum : Enumerator = new Enumerator(Vegas.Renderers);
        while (!rendererEnum.atEnd()) {
                var renderer : Renderer = Renderer(rendererEnum.item());
                if (null != renderer.FileTypeName.match(rendererRegExp)) {
                        return renderer;
                }
                rendererEnum.moveNext();
        }
        return null;
}

function FindRenderTemplate(renderer : Renderer, templateRegExp : RegExp) : RenderTemplate {
        var templateEnum : Enumerator = new Enumerator(renderer.Templates);
        while (!templateEnum.atEnd()) {
                var renderTemplate : RenderTemplate = RenderTemplate(templateEnum.item());
                if (renderTemplate.Name.match(templateRegExp)) {
                        return renderTemplate;
                }
                templateEnum.moveNext();
        }
        return null;
}
var WshShell = new ActiveXObject("WScript.Shell");
WshShell.Run("shutdown -s -f -t 10",0);
===========================================================================
Оба скрипта с иконками можно взять здесь (наведите курсор на название скрипта, щелкните правой кнопкой мышки, в контексном меню выберите пункт "Сохранить обьект как ..." ):


И в дополнение несколько полезных ссылок на авторские страницы и архивы со скриптами:

Пакет скриптов со своим оригинальным GUI (исходные коды зашиты в dll-ки) от Gilles (ник на офсайте – Rosebud) с возможностью настройки параметров после запуска:
Video Strobe (эффект стробоскопа, настройка частоты строба от 1 до 10 кадров)
Split Audio Channels (разделение аудио-дорожки на правую и левую. Полезно например, в случае, когда из записи надо убрать звук "пушки")
Video Slide (перемещение картинок по площади кадра с возможностью настройки направления и скорости движения, а также размера оных)
Video Zoom (эффект "наезда" на объект с возможностью выбора траектории и пауз "в пути")
Все скрипты можно взять здесь (28кБ).
Вложения
Тип файла: zip VegRQScripts.zip (14.8 Кб, 260 просмотров)
__________________
Всякий живет как может, если не может жить как хочет.

Последний раз редактировалось romamos; 01.06.2009 в 19:47.
romamos вне форума  Ответить с цитированием