Скрипты и утилиты для 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кБ).