Помимо множества полезных функций Sony Vegas обладает и чрезвычайно приятной особенностью – он умеет работать со скриптами (scripts).
Для справки: Работа со скриптами доступна лишь в полной версии Vegas. В варианте Vegas Movie Studio такая возможность отсутствует.
Скрипт – это макрокоманда, которая "в один клик" запускает целую цепочку операций в Вегас и позволяет таким образом автоматизировать выполнение множества задач при работе с видео и звуком и сэкономить массу времени.
Для Vegas уже написано множество различных скриптов и они активно используются, однако для большинства русскоязычных пользователей их применение ограничивается тем, что инструкции по работе и настройке скрипта под конкретную систему записываются в исходном коде на английском языке. Пришла пора исправить этот пробел.
Предлагаю выкладывать здесь реально работающие скрипты для Вегаса, и дабы уменьшить по возможности число лишних вопросов выкладывать их с ОБЯЗАТЕЛЬНЫМ описанием того, как скрипт работает и какие изменения необходимо внести в исходный код для подстройки под конкретную систему. Поскольку ссылки на файлообменники имеют тенденцию устаревать, просьба в постах выкладывать также и исходный код скрипта, чтобы пользователь, в случае необходимости, мог самостоятельно создать для себя файл скрипта или адаптировать существующий.
Ну и, естественно, хотя большинство скриптов и выкладываются в сети для общего пользования - не стоит забывать о том, что каждый скрипт имеет своего автора. Давайте уважать друг друга и если Вы модифицировали скрипт – укажите это ОТДЕЛЬНОЙ СТРОКОЙ, а не затирайте имя автора исходного кода.
Как пользоваться скриптами?
Для запуска скриптов Вегас использует платфору от MS .NET 1.1 (начиная с 7-й версии – MS.NET 2.0), что дает возможность писать скрипты на языках поддерживаемых данной платформой (JScipt, C#, VB & etc.)
Если у вас есть готовый файл скрипта, то для запуска его в Вегас требуется скопировать файл в папку "C:\Program Files\Sony\Vegas 6.0\Script Menu\".
Если Вегас уже запущен, то в меню - Tools -> Scripting нужно кликнуть по пункту - Rescan Script Menu Folder.
После перепросмотра (обновления списка) в списке скриптов появится Ваш скрипт. Как назывался файл (имя файла) – так же и будет называться пункт меню.
Платформа .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
В данном случае, на тулбар будет красоваться индивидуальная иконка, что облегчит последующую идентификацию.
Чтобы появилась иконка, требуется зайти в Tools->Scripting->Rescan Script Menu Folder.
Для того, чтобы создать файл скрипта из исходного кода необходимо в любом текстовом редакторе (для этого прекрасно подходит встроенный в Windows Блокнот) создать новый файл, скопировать в него исходный код и сохранить в папку со скриптами Вегаса. Обратите внимание, что при этом название создаваемого файла прописывается полностью с расширением, а тип отображаемых файлов переводится в режим All files (Все файлы)
Подробную инструкцию по работе со скриптами в Вегасе также можно прочитать здесь на странице переведенной Справки.
ПРИМЕР ОФОРМЛЕНИЯ ПОСТА
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); ===========================================================================Оба скрипта с иконками лежат здесь (11кБ).
И в дополнение несколько полезных ссылок на авторские страницы и архивы со скриптами и утилитами:
здесь всё описание - на русском.
Пакет скриптов (вернее сказать скриптовых утилит, т.к. исходные коды зашиты в dll-ки) от Gilles (ник на офсайте – Rosebud) с возможностью настройки параметров после запуска:
Video Strobe (эффект стробоскопа, настройка частоты строба от 1 до 10 кадров)
Split Audio Channels (разделение аудио-дорожки на правую и левую. Полезно например, в случае, когда из записи надо убрать звук "пушки")
Video Slide (перемещение картинок по площади кадра с возможностью настройки направления и скорости движения, а также размера оных)
Video Zoom (эффект "наезда" на объект с возможностью выбора траектории и пауз "в пути")
Все скрипты можно взять здесь или здесь (28кБ).
Скрипты уже выложенные на форуме:
Скрипт для замены Upper Field на Lower Field,
Вывод интерлейсных снимков и
Сохранение снимка кадра.
Одна из полезнейших (must have) утилит для Вегас – HandySaw DS (всё описание - на русском) - здесь.
и в дополнение к ней скрипт от altarviс, позволяющий запускать ее напрямую с таймлайн Вегас.
Здесь (5кБ).
Утилита Vegasist – после запуска "садится" в системный трей и следит за процессом просчета проекта, по окончании процесса дает сигнал.
Два момента: при наличии в системе двух звуковых карт использует для сигнала то устройство, что определено по умолчанию в настройках Windows. Сам Вегас при этом может быть настроен и на другую карту. И второе - в настройках утилиты есть возможность задать выключение компьютера по окончании рендеринга. (У меня эта функция почему-то не работает).
Скачать (765 кБ)
Утилита Vegbun – создает папку с проектом *.veg и поддиректорией (Media), в которую собирает все медиа-файлы, использованными в данном проекте - здесь (2,4 Мб)
Расширенный вариант Vegbun - утилита Structure, в дефолтовом профиле создает директории с данными проекта DVD и проекта-источника и позволяет организовывать их структуру (добавлять, удалять, перемещать) по выбору пользователя. Своего рода - файл-менеджер для проектов Вегас.
Утиллита (129 кБ) - здесь, описание - здесь