Нажмите для перехода на сайт ProVegas.ru  

Вернуться   PROVEGAS.RU: SONY VEGAS FORUM > ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ > Sony Vegas > Скрипты и утилиты для Sony Vegas

Важная информация:

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 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 Кб, 259 просмотров)
__________________
Всякий живет как может, если не может жить как хочет.

Последний раз редактировалось romamos; 01.06.2009 в 19:47.
romamos вне форума  Ответить с цитированием
Старый 03.09.2008, 02:56   #2
romamos Меню пользователя
Провидеолюбитель
 
Аватар для romamos
 
Регистрация: 06.05.2008
Сообщений: 519
Рейтинг: 20674
romamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверия
По умолчанию

Ещё пара скриптов из серии "Must Have", которые помогут исправить случайно закравшиеся при монтаже ошибки.

AuditForEventLevels
- проверяет уровни непрозрачности (Opacity) и усиления (Gain) фрагментов (event-ов) на таймлайн.

Порядок работы
После запуска в открытом проекте скрипт находит на *первой дорожке видеофрагменты, в которых уровень Opacity (Непрозрачность) менее 100% и аудиофрагменты, в которых уровень усиления Gain отличается от 0 db, предлагая это исправить. Если изменения внесены сознательно, можно отказаться от правки, и перейти к следующему фйрагменту. После "просмотра" всего проекта скрипт выдает окошко с напоминанием, что "не худо было бы ещё проверить и настройки дорожек в поле Track List", но это - уже "ручками".
*предполагается, что это - мастер-трек, и что он должен быть выделен в поле списка дорожек - TrackList

Код:
/**
 * This script finds all events where the opacity level has been 
 * set to a level only slightly less than 100%, or the audio level
 * set to slightly less than 0dB. This usually is not intentional
 * and results from accidentally moving the opacity or volume 
 * line while moving an event. Without this script, such 
 * an accident is very difficult to detect, and can result in 
 * long rendering times.
 * 
 * Written By: John H. Meyer
 * Date: November 11, 2003
 *
 **/

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

// Change this line if you want a different threshold
var Opacity = 0.90;
var EventLevel = 0.50; 

var OpacityMessage : String;
var TrackUnits : String;

try {

  //Go through the list of Tracks
  var trackEnum = new Enumerator(Vegas.Project.Tracks);
  while (!trackEnum.atEnd()) {
        var track : Track = Track(trackEnum.item());


        //Go through the list of Events
        var eventEnum = new Enumerator(track.Events);

        while (!eventEnum.atEnd()) {
          var evnt : TrackEvent = TrackEvent(eventEnum.item());
          evnt.Selected = false;  // De-select events in order to make problem events stand out
                                                          // (Problem events WILL be selected) 

          // If gain is less than 100% (or 0dB), but greater than the threshhold ...
          if ( (evnt.FadeIn.Gain > Opacity) && (evnt.FadeIn.Gain < 1) ) { 

                // Highlight the "suspect" event
                Vegas.SelectionStart = evnt.Start;
                Vegas.SelectionLength = evnt.Length;
                Vegas.Cursor = evnt.Start; 
                evnt.Selected = true; 
                Vegas.UpdateUI(); 

                // Create error message to display in message box.
                if (track.IsVideo()) {   
                  TrackUnits = "100%";
                  EventLevel = 100 * evnt.FadeIn.Gain;
                  OpacityMessage = "This event is set to: " + EventLevel.toPrecision(2);
                  OpacityMessage = OpacityMessage + "%. Do you want to set to " + TrackUnits + "?";
                }
                else {
                  TrackUnits = "0dB";
                  EventLevel = 20 * Math.log (evnt.FadeIn.Gain);
                  OpacityMessage = "This event is set to: " + EventLevel.toPrecision(2);
                  OpacityMessage = OpacityMessage + "dB. Do you want to set to " + TrackUnits + "?";
                }


                var msgBoxResult = MessageBox.Show(OpacityMessage, "Region Selected", MessageBoxButtons.YesNo);
                if (msgBoxResult == DialogResult.Yes) {
                  evnt.FadeIn.Gain = 1;   // Correct the problem
                }

          }

          evnt.Selected = false; // Clear all event selections
          eventEnum.moveNext();

        }  // End While eventEnum

        trackEnum.moveNext();

  }  // End While trackEnum
  MessageBox.Show("Don't forget to check all track header levels.","Completed",MessageBoxButtons.OK,MessageBoxIcon.Information);

} catch (e) {
        MessageBox.Show(e);
}
Особенности использования скрипта:
Значение "ошибки" уровня непрозрачности Opacity задано значением 10%. При необходимости его можно изменить, исправив в строке
#21| var Opacity = 0.90;
выделенные цифры на другую величину. В данном случае 0.90 - уровень, ниже которого изменения считаются сознательно внесенными.

Еще один чрезвычайно полезный скрипт от John H. Meyer
AuditForShortBlankGaps.

Порядок работы
После запуска скрипт находит в проекте промежутки (Gaps) и "наплывы" (Overlaps - нахлесты, пересечения) между фрагментами (event-ами) длительностью в несколько кадров, предлагая их исправить. Если они созданы сознательно, от правки можно отказаться.

Код:
/**
 * This script finds short blank gaps or overlaps between events
 * on the first selected track. 
 * 
 * Written By: John H. Meyer
 * Date: December 2, 2003
 *
 **/

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

// Change this line if you want a different threshold

var Gap : Double = new Timecode("00:00:00:15").ToMilliseconds(); // 15 Frames

var lastevnt : TrackEvent;
var MyMarker : Marker;          // Global function used in main program and in function
var evnt : TrackEvent;
var trackEnum : Enumerator; 

try {

        var dirty = 0;
        var track = FindSelectedTrack(); //Use this function to find the first selected track.  

        //Go through the list of Events
        var eventEnum = new Enumerator(track.Events);
        var lastevnt = TrackEvent(eventEnum.item()); //initialize lastevent variable

        while (!eventEnum.atEnd() ) {
          evnt = TrackEvent( eventEnum.item() );

          var test1 = evnt.Start.ToMilliseconds();  
          var test2 = lastevnt.Start.ToMilliseconds() + lastevnt.Length.ToMilliseconds();

          // To only test for gaps only, use the first line below instead
//      if (    ( (test1 - test2) > 0.05 )  && ( (test1 - test2) < Gap )  ) {                     

          if ( ( Math.abs(test1 - test2) > 0.05 )  && (Math.abs(test1 - test2) < Gap)  )  {


                  if (!MarkerExist(test1) ) {
                        MyMarker = new Marker(evnt.Start);
                        Vegas.Project.Markers.Add(MyMarker);
                        MyMarker.Label = "";
                  }
                   
                  if (test1 > test2) {
                        MyMarker.Label = MyMarker.Label + "GAP********";
                  }
                  else {
                        MyMarker.Label = MyMarker.Label + "OVERLAP****";
                  }
                  dirty = 1;
                }

          lastevnt = evnt;

          eventEnum.moveNext();

        }  // End While eventEnum

        if (dirty == 1) {
                Vegas.UpdateUI();  
                MessageBox.Show("Gaps and/or overlaps were found.","Completed",MessageBoxButtons.OK,MessageBoxIcon.Information);
        }

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


function FindSelectedTrack() : Track {
  trackEnum = new Enumerator(Vegas.Project.Tracks);
  while (!trackEnum.atEnd()) {
        var track : Track = Track(trackEnum.item());

        if (track.Selected) {
          return track;
        }
        trackEnum.moveNext();
  }
  return null;
}


function MarkerExist (dStart) : boolean {

  var markerEnum = new Enumerator(Vegas.Project.Markers);

  while (!markerEnum.atEnd()) {
        MyMarker = markerEnum.item();                                   // MyMarker is a global function in this project
        var MarkerStart = MyMarker.Position.ToMilliseconds();

        if ( dStart ==  MarkerStart ) {
          return 1;
        }

  markerEnum.moveNext();

  } // End while markerEnum

  return 0;
}
Особенности использования скрипта:
Скрипт настроен на поиск промежутков и "наплывов" длительностью до 15 кадров. При необходимости можно уменьшить значение. Это может быть актуально для тех, кто использует при монтаже короткие фрагменты длительностью 9-12 кадров.
Для этого в строке
# 17| var Gap : Double = new Timecode("00:00:00:15").ToMilliseconds(); // 15 Frames
замените выделенные цифры на нужную Вам величину (значение менее 10 кадров пишется с нулем. Например "05")

Архив со скриптами и иконками можно скачать здесь:
Вложения
Тип файла: zip VegasAuditScripts.zip (12.9 Кб, 197 просмотров)
__________________
Всякий живет как может, если не может жить как хочет.
romamos вне форума  Ответить с цитированием
Старый 03.09.2008, 02:56   #3
romamos Меню пользователя
Провидеолюбитель
 
Аватар для romamos
 
Регистрация: 06.05.2008
Сообщений: 519
Рейтинг: 20674
romamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверия
По умолчанию

Make_sfl_vegas.js скрипт для переноса маркеров (чаптеров) из проекта Вегаса в DVD Architect.
(работает во всех версиях, включая VP8b)
автор исходного кода неизвестен
модифицирован: GMax: http://www.terraspace.ru/gmax/video/
Здесь же можно найти и еще ряд авторских скриптов GMax для Bегаса. Всё описание - на русском.

Особенности работы.
После запуска скрипта открывается окошко, в верхней строке которого надо ввести название файла, в который будут сохранены маркеры из открытого проекта Вегаса. Название файла должно быть идентично названию предварительно подготовленного MPEG-видеофайла (включая расширение). Файл с маркерами сохраняется в ту же папку, что и MPEG. После создания проекта в DVD Architect активируем MPEG-файл, и в Timeline window нажимаем кнопку "Load Markers". После этого остается лишь подкорректировать расстановку маркеров по i-фреймам.

Архив со скриптом и иконкой к нему лежит здесь.
Или здесь -
Вложения
Тип файла: zip Make_SFL_Vegas_Script.zip (12.0 Кб, 166 просмотров)
__________________
Всякий живет как может, если не может жить как хочет.
romamos вне форума  Ответить с цитированием
Старый 03.09.2008, 03:08   #4
romamos Меню пользователя
Провидеолюбитель
 
Аватар для romamos
 
Регистрация: 06.05.2008
Сообщений: 519
Рейтинг: 20674
romamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверия
По умолчанию

Ещё несколько скриптов для работы со звуком.

AdjustDictorVolume написанный Edward Troxel и модифицированный David Arendt
- автоматически понижает уровень звукового сопровождения в тех местах, где есть дикторский текст.

Порядок работы:
Записываем дикторский текст на отдельный трек, называем его "Dictor"
кому не нравится название, может исправить на другое в строке
#32| var VoiceTrack = FindTrack("Dictor");
трек со звуковым сопровождением называем "Music"
аналогично, если не нравится название исправляем в строке
#36| var MusicTrack = FindTrack("Music");
разрезаем дикторский текст на фрагменты, расставляем их по своим местам (скрипт ориентируется по пробелам между event-ами) и запускаем скрипт.

Код:
/**
 * This script will reduce the volume on a music track whenever there are clips
 * on a narrative track.
 * Written By: Edward Troxel - Vegas Tips, Tricks, & Scripts
 * Modified By: David Arendt - multiple successive tracks now working
 **/

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


try {
  // Set the defaults
  var FadeWhen = 2; // 1 = all before/after, 2 = Centered on start/end
  var FadeMS : Double = 1000; //500 = 1/2 second - Time is MilliSeconds
  var LoudVol = 1; //1 = 0db, 2 = 6db, 1.5 = 3.5db, 1.75 = 4.8db
  var SoftVol = 0.5; //0 = -inf, .5 = -6db, .25 = -12db


  if (FadeWhen == 2) {
          FadeMS = FadeMS / 2;
  }

  var FadeTime = new Timecode(FadeMS);



  // Find the two audio tracks by name
  var VoiceTrack = FindTrack("Dictor");
  if (null == VoiceTrack)
          throw "no selected track";

  var MusicTrack = FindTrack("Music");
  if (null == MusicTrack)
          throw "no selected track";

  // Find the volume envelope on the music track - add if needed
  var VolEnv = FindEnvelope(MusicTrack, EnvelopeType.Volume);
  if (null == VolEnv) {
          VolEnv = new Envelope(EnvelopeType.Volume);
          MusicTrack.Envelopes.Add(VolEnv);
  }

  // Go thru the events on the narrative track finding in/out points
  var eventEnum = new Enumerator(VoiceTrack.Events);
  while (!eventEnum.atEnd()) {
        var evnt : TrackEvent = TrackEvent(eventEnum.item());
        var evntStart : Timecode = evnt.Start;
        var evntLen : Timecode = evnt.Length;
        
        // begin modification by David Arendt
        eventEnum.moveNext();
        var nextEvnt : TrackEvent;
        var nextEvntStart : Timecode;
        var nextEvntLen : Timecode;
        while (!eventEnum.atEnd())
        {
          nextEvnt = TrackEvent(eventEnum.item());
          nextEvntStart = nextEvnt.Start;
          nextEvntLen = nextEvnt.Length;
          if (nextEvntStart > evntStart + evntLen + FadeTime + FadeTime)
                break;
          evntLen = nextEvntStart - evntStart + nextEvntLen;              
          eventEnum.moveNext();
        }
        // end modification by David Arendt

        VolEnv.Points.Add(new EnvelopePoint(evntStart - FadeTime, LoudVol));
        if (FadeWhen == 2) {
                VolEnv.Points.Add(new EnvelopePoint(evntStart + FadeTime, SoftVol));
        } else {
                VolEnv.Points.Add(new EnvelopePoint(evntStart, SoftVol));
        }

        if (FadeWhen == 2) {
                VolEnv.Points.Add(new EnvelopePoint(evntStart + evntLen - FadeTime, SoftVol));
        } else {
                VolEnv.Points.Add(new EnvelopePoint(evntStart + evntLen, SoftVol));
        }
        VolEnv.Points.Add(new EnvelopePoint(evntStart + evntLen + FadeTime, LoudVol));


  }


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


function FindTrack(WhichTrack) : Track {
  var trackEnum = new Enumerator(Vegas.Project.Tracks);
  var PrevTrack : Track = Track(trackEnum.item());
  while (!trackEnum.atEnd()) {
        var track : Track = Track(trackEnum.item());
        if (WhichTrack == "Current") {
                if (track.Selected) {
                        return track;
                }
        }
        if (WhichTrack == "Previous") {
                if (track.Selected) {
                        return PrevTrack;
                }
        }
        if (track.Name == WhichTrack) {
                return track;
        }
        trackEnum.moveNext();
  }
  return null;
}

function FindEnvelope(track : Track, etype : EnvelopeType) : Envelope {
  var envEnum : Enumerator = new Enumerator(track.Envelopes);
  while (!envEnum.atEnd()) {
        var env : Envelope = envEnum.item();
        if (env.Type == etype) {
                return env;
        }
        envEnum.moveNext();
  }
  return null;
}
Особенности использования скрипта:
Скрипт настроен на понижение/повышение звукового сопровождения на 6db за 1 сек. в начале/конце event-а с дикторским текстом. Fade центрирован по началу/концу event-а.
Настройки меняются в строках
#17| var FadeWhen = 2; // 1 = all before/after, 2 = Centered on start/end
#18| var FadeMS : Double = 1000; //500 = 1/2 second - Time is MilliSeconds
#19| var LoudVol = 1; //1 = 0db, 2 = 6db, 1.5 = 3.5db, 1.75 = 4.8db
#20| var SoftVol = 0.5; //0 = -inf, .5 = -6db, .25 = -12db


MuteAudio от Randall Campbell
здесь все просто - одной кнопкой глушится/включается весь звук в проекте.

Код:
// Mutes or unmutes a portion of an audio clip.
// To use:
// 1. Select the desired audio track
// 2. Define a time selection for the part of the clip to mute
// 3. Run the script
// The script creates a mute or volume envelope for the selected track if one does not exist and adds points
// to mute the audio. If points already exist in the selection, they are deleted to unmute the audio.
//
// Author: Randall Campbell, info@peachrock.com, www.peachrock.com
// © Copyright 2004, Peach Rock Productions, LLC.
// You are free to use or modify this code as long as the copyright information is not removed.
// This software is provided AS IS, no warranty is expressed or implied

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

// You can change the fade amount if desired. The default is 1 milliseconds. This value must be greater than 0.
var fadeOut : Timecode = Timecode.FromMilliseconds(1);
var fadeIn : Timecode = Timecode.FromMilliseconds(1);

// You can modify the curve type here. Valid values are: Smooth, Sharp, Slow, Linear, Fast, None (ie. Hold)
var fadeOutCurve : CurveType = CurveType.Smooth;
var fadeInCurve : CurveType = CurveType.Smooth;

// You can change the envelope to use the volume envelope by changing EnvelopeType.Mute to EnvelopeType.Volume
// Just comment out the mode that you don't want
//var envelopeType : EnvelopeType = EnvelopeType.Mute;
var envelopeType : EnvelopeType = EnvelopeType.Volume;

for (var track in Vegas.Project.Tracks)
{
        if (!track.IsAudio() || !track.Selected)
        continue;

        if (!track.Envelopes.HasEnvelope(envelopeType))
                track.Envelopes.Add(new Envelope(envelopeType));

        var envelope : Envelope = track.Envelopes.FindByType(envelopeType);

        var unmuted = false;
        for (var i = envelope.Points.Count - 1; i > 0; i--)
        {
                var point : EnvelopePoint = envelope.Points.Item[i];
                if (point.X >= Vegas.SelectionStart && point.X <= (Vegas.SelectionStart + Vegas.SelectionLength))
                {
                envelope.Points.Remove(point);
                unmuted = true;
                }
        }
        if (!unmuted)
        {
                envelope.Points.Add(new EnvelopePoint(Vegas.SelectionStart, 1, fadeOutCurve));
                envelope.Points.Add(new EnvelopePoint(Vegas.SelectionStart + fadeOut, 0));
                envelope.Points.Add(new EnvelopePoint(Vegas.SelectionStart + Vegas.SelectionLength - fadeIn, 0, fadeInCurve));
                envelope.Points.Add(new EnvelopePoint(Vegas.SelectionStart + Vegas.SelectionLength, 1));
        }
}


NormalizeAll
- запускает нормализацию звука для всех аудио-фрагментов

Код:
/**
 * This script normalizes all Audio Events in the current project.
 * This script works best if you run it after all event peaks have
 * been built.
 *
 * Revision Date: Feb. 10, 2003
 **/

import Sony.Vegas;

var trackEnum : Enumerator = new Enumerator(Vegas.Project.Tracks);
while (!trackEnum.atEnd()) {
        var track : Track = Track(trackEnum.item());
        if (track.IsAudio()) {
                var eventEnum : Enumerator = new Enumerator(track.Events);
                while (!eventEnum.atEnd()) {
                        var audioEvent : AudioEvent = AudioEvent(eventEnum.item());
                        audioEvent.Normalize = true;
                        eventEnum.moveNext();
                }
        }
        trackEnum.moveNext();
}

RecreateAudioEvents
- чрезвычайно полезный скрипт для тех, кто увлекшись монтажом картинки начинает искать исходный звук (интершум, реплики и т.п.) видео-фрагментов. Эту операцию можно сделать через Trimmer, но если фрагментов много, а времени, как всегда - мало, то быстрее сделать это скриптом.

Код:
/*
 * (re)create audio parts on seperate audio track for all selected video events
 */

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

try {
  // create new target audio track
  var targetTrack = new AudioTrack(-1,"Missing Audio");
  Vegas.Project.Tracks.Add(targetTrack);
  // step through all selected video events:
  for (var track in Vegas.Project.Tracks) {
        for (var evnt in track.Events) {
          if (!evnt.Selected || evnt.MediaType != MediaType.Video) continue;
          // create a fitting audio event and add to target audio track:
          var audioEvent = new AudioEvent(evnt.Start,evnt.Length);
          targetTrack.Events.Add(audioEvent);
          // step through all events of selected video event
          for (var tke in evnt.Takes)
          {
                // find first audio stream in this takes media
                var aviFile = new Media(tke.MediaPath);
                for (var stream in aviFile.Streams)
                {
                  if (stream.MediaType != MediaType.Audio) continue;
                  // create new take out of this audio stream
                  var newTake = new Take(stream,tke.IsActive);
                  // add it to target audio event (must be done before anything else!!)
                  audioEvent.Takes.Add(newTake);
                  // fit offset to video event
                  newTake.Offset = tke.Offset;
                  break; // we assume there's only one audio part in any avi file
                }
          }
          audioEvent.Selected = true;
        }
  }
} catch (e) {MessageBox.Show(e);}
Архив со скриптами и иконками к ним :
Вложения
Тип файла: zip Audio_Scripts_for_Vegas.zip (22.6 Кб, 234 просмотров)
__________________
Всякий живет как может, если не может жить как хочет.
romamos вне форума  Ответить с цитированием
Старый 26.09.2008, 20:34   #5
Tango Меню пользователя
Стажер
 
Регистрация: 17.09.2008
Сообщений: 9
Рейтинг: 71
Tango со Вторым уровенем доверия
По умолчанию

Цитата:
Сообщение от romamos Посмотреть сообщение
Make_sfl_vegas.js скрипт для переноса маркеров (чаптеров) из проекта Вегаса в DVD Architect.
а какой в нем смысл? или это для тех случаев, когда MPEG2 выводится не из Вегаса?

Цитата:
Сообщение от romamos Посмотреть сообщение
После этого остается лишь подкорректировать расстановку маркеров по i-фреймам.
вот это серьезный минус альтернативных MPEG2-кодировщиков. приятно все-таки и удобно расставлять чаптеры по своему усмотрению, а не зависеть от произвольно ими расставленных I-кадров.
Tango вне форума  Ответить с цитированием
Старый 11.02.2009, 17:50   #6
Yarosik Меню пользователя
Научный сотрудник
 
Аватар для Yarosik
 
Регистрация: 11.02.2009
Сообщений: 44
Рейтинг: 133
Yarosik со Вторым уровенем доверияYarosik со Вторым уровенем доверия
По умолчанию

Цитата:
Сообщение от romamos Посмотреть сообщение
Make_sfl_vegas.js скрипт для переноса маркеров (чаптеров) из проекта Вегаса в DVD Architect.
(работает во всех версиях, включая VP8b)


Архив со скриптом и иконкой к нему лежит здесь.
Или здесь -
ПриветЪ!

старнно, но у меня не срабатывает. и вот такую ошибку выдает(см. приложения)

Версия - Вегас 8.0с, что подскажете?
Миниатюры
Нажмите на изображение для увеличения Название: error script.jpg Просмотров: 154 Размер: 60.2 Кб ID: 180  
Yarosik вне форума  Ответить с цитированием
Старый 03.09.2008, 03:08   #7
romamos Меню пользователя
Провидеолюбитель
 
Аватар для romamos
 
Регистрация: 06.05.2008
Сообщений: 519
Рейтинг: 20674
romamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверия
По умолчанию

Скрипт DeleteEmptySpaceBetweenEvents удаляет пустые места между event-ами на выделенных треках.

Код:
/** 
* Program: 
* Description: This script will Delete Empty Space Between Events In Selected Tracks
* Author: Philip
* 
* Date: August 31, 2003 
**/ 

import Sony.Vegas; 
import System.Windows.Forms;
import Microsoft.Win32;

//time intervals for split events.

try
{


// step through all selected video events:
var FirstTrack : Track = Vegas.Project.Tracks.Item(0);

// step through all selected video events:
for (var track in Vegas.Project.Tracks) {
if( !track.Selected) continue;
var tracktime = new Timecode(0);
for (var evnt in track.Events) {
evnt.AdjustStartLength(tracktime,evnt.Length,true);
tracktime = tracktime + evnt.Length;
}
}
}

catch (errorMsg)
{
MessageBox.Show(errorMsg, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
Комплект (скрипт с иконкой) лежит здесь:
Вложения
Тип файла: zip DES_script.zip (3.6 Кб, 192 просмотров)
__________________
Всякий живет как может, если не может жить как хочет.
romamos вне форума  Ответить с цитированием
Старый 06.09.2008, 01:21   #8
romamos Меню пользователя
Провидеолюбитель
 
Аватар для romamos
 
Регистрация: 06.05.2008
Сообщений: 519
Рейтинг: 20674
romamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверия
По умолчанию

Barronizer_10
Скрипт для "шинковки" even-ов в Вегасе (работает во всех версиях, включая VP8).
Режет выделенные even-ты на части с последующей сборкой "в кучку", или без нее.

В начале кода есть описание работы скрипта и его параметров. Для тех, кто не знает английского - краткая инструкция.

После запуска появляется окно управления параметрами нарезки.


"Number of Jumps" - количество "отрезов"
"Jump Length" - длина "отреза"
"Inter-Jump Length" - промежуток между "отрезами"

Внимание! Параметры - в кадрах.

В нижней части опция "сборки":
"Don't" - без сборки.
"Front" - собрать все к первому "отрезу".
"Back" - собрать все к последнему "отрезу".
Нажав кнопку Barronize! получаем результат.


Код:
/*
* Copyright (c) 2004, Folding Rain Filmworks Inc.
*
* author: Joe Howes (joeh@guild1.com)
*
* I wrote this script while working on the making-of documentary
* for The Libertine.  I was working with the two geniunses behind
* the design of all the special effects for the Hallmark
* mini-series "Dreamkeeper".  The director of that film is an
* underrated and overawesome guy named Steve Barron, who pioneered
* the look of about 90% of the television you saw in the nineties.
* He was the first director to embrace speeding through a scene by
* jump-cutting through hundreds of frames in a very short time,
* resulting in an ultra-cool stutter effect that rocks ass.
*
* Anyway, Steve is a great guy, a super cool dude, and his work
* quite frankly gives me a boner for filmmaking like no one else.
*
* http://www.imdb.com/name/nm0006625/
*
* USAGE:
* Select one and only one video event.
*
*    Number of Jumps:    The number of jump cuts you want to end up with.
*    Jump Length:        The length (in frames) of the visible jumps.
*    Inter-Jump Length:  The length (in frames) of the bits between the
*                          visible frames that will be removed.
*
*    Gather:    If "Don't", all the jumps will be left in place.
*                If "Front", the jumps will be gathered together at the start
*                    point of the original event.
*                If "Back", the jumps will be gathered together at the end
*                    of the cutting area, bumped right up against the remaining
*                    event.
*
* After application, the jump cuts will be bumped right up against
* the remaning portion of video.
*
* v1.1: Aug. 22, 2004
*/

import System;
import System.Collections;
import System.Text;
import System.IO;
import System.Drawing;
import System.Windows.Forms;
import Sony.Vegas;


/**
* Just get the selected event (there can be only one) and Barronize it.
*/
try {

    var dlog = new BarronizerDialog();
    var done:Boolean = false;

    while (!done) {

        if (DialogResult.OK == dlog.ShowDialog()) {

            var targetEvent:TrackEvent = getSelectedEvent();

            if (targetEvent != null) {

                // Validate input
                var numJumps : Number;
                if (dlog.numJumps.Text == "*") {
                    numJumps = new Number(-1);
                } else {
                    numJumps = new Number(dlog.numJumps.Text);
                }
                //MessageBox.Show("JOE: " + numJumps, "JOE");
                /*if (numJumps.isNaN()) {
                    MessageBox.Show("Number of jumps must be either '*' or a number.", "WARNING");
                }*/

                // Put together the gather option
                var gatherOption = "NO";
                if (dlog.gatherFrontRadio.Checked) {
                    gatherOption = "FRONT";
                } else if (dlog.gatherBackRadio.Checked) {
                    gatherOption = "BACK";
                }

                // Put together the fade option
                var fadeOption = "NO";
                if (dlog.fadeInRadio.Checked) {
                    fadeOption = "IN";
                } else if (dlog.fadeOutRadio.Checked) {
                    fadeOption = "OUT";
                }

                // Barronize!
                done = barronize(targetEvent,
                                    numJumps,
                                    dlog.jumpLen.Text,
                                    dlog.interJumpLen.Text,
                                    gatherOption,
                                    fadeOption);
            }
        } else {
            done = true;
        }
    }

    Vegas.UpdateUI();
}
catch (e) {
    MessageBox.Show(e, "WARNING");
}


/**
* Jump-cut through a number of frames to produce a cool skipping effect.
*/
function barronize(evt:TrackEvent,
                    numJumps,
                    jumpLen,
                    interJumpLen,
                    gatherOption,
                    fadeOption) {

    var theTrack : Track;            // The track this is all happening on
    var theGroup : TrackEventGroup;    // The group this track belongs to
    var node : TrackEvent;            // A stutter node
    var internode : TrackEvent;        // An internode
    var nodeTC : Timecode;            // Node length in frames converted to timecode
    var internodeTC : Timecode;        // Internode length in frames converted to timecode
    var originalStart : Timecode;    // Original starting timecode of the event
    var effectLen : Timecode;
    var stutterNodeList : Array;
    var tcCounter : Timecode;
    var index = 0;



    // Some init
    theTrack = evt.Track;
    theGroup = evt.Group;
    nodeTC = new Timecode("00:00:00," + jumpLen);
    internodeTC = new Timecode("00:00:00," + interJumpLen);
    originalStart = evt.Start;


    // If numJumps is -1, just make as many jumps as possible in the event
    // given the jumpLen and interJumpLen
    if (numJumps == -1) {
        var evtFrames = evt.Length.FrameCount;
        var divisor = new Number(jumpLen) + new Number(interJumpLen);
        numJumps = Math.floor(new Number(evtFrames / divisor));
    }


    // Figure out the amount of time the stutter effect will consume of the event
    effectLen = new Timecode("00:00:00,00");

    for (var i = 0; i < numJumps; i++) {
        effectLen += nodeTC + internodeTC;
    }

    // If there's not enough event, let 'em know and bail
    if (effectLen > evt.Length) {
        MessageBox.Show("Event not long enough.", "WARNING");
        return false;
    }

    stutterNodeList = new Array();
    node = evt;
    stutterNodeList[index++] = node;

    // -- SPLIT --
    for (var i = 0; i < numJumps; i++) {

        // Make a node (no, this is not reversed, we are making a NODE)
        internode = node.Split(nodeTC);

        // Make an internode (no, this is not reversed, we are making an INTERNODE)
        node = internode.Split(internodeTC);

        // If the node is not the final leftover chunk, add it to the list of
        // stutter nodes that need to be bumped up against the leftover event
        if (i < (numJumps - 1)) {
            stutterNodeList[index++] = node;
        }

        // Remove the internode
        theTrack.Events.Remove(internode);
    }


    // -- GATHER --
    // If there's no gathering to be done, skip it
    if (gatherOption != "NO") {

        // Default to FRONT
        tcCounter = originalStart;

        if (gatherOption == "BACK") {

            // Now we move all the stutter nodes up against the leftover event
            tcCounter = node.Start;

            // Count back nodeTC frames for every stutter node
            for (var i = 0; i < numJumps; i++) {
                tcCounter = tcCounter - nodeTC;
            }

        }

        // Adjust them all
        for (var i = 0; i < stutterNodeList.length; i++) {
            node = stutterNodeList[i];
            /*if (groupBaseList.Contains(node)) {
                theGroup.Remove(node);
            }*/
            node.AdjustStartLength(tcCounter, nodeTC, true);
            tcCounter += nodeTC;
        }

    }


    // -- FADE -- not implemented yet
    // If there's no fading to be done, skip it
    if (fadeOption != "NO") {
    }

    return true;
}


/**
* Function: getSelectedEvent()
*
* Find the selected video event while making sure that the only event selected
* in the entire project is a video event, and there is only one.
*/
function getSelectedEvent() {

    var done:Boolean = false;
    var targetEvent:TrackEvent = null;
    var selectCount = 0;

    // Search all groups
    for (var track in Vegas.Project.Tracks) {

        for (var evnt in track.Events) {
            if (evnt.Selected) {
                targetEvent = evnt;
                selectCount++;
            }
        }

    }

    if (selectCount < 0) {
        throw("No video events selected.");
    }

    if (selectCount > 1) {
        throw("More than one event selected.  Select one and only one video event.");
    }

    if (targetEvent == null || targetEvent.IsAudio()) {
        throw("No video events selected.");
    }

    return targetEvent;
}


/**
* My homage to Steve...his very own dialog box.
*/
class BarronizerDialog extends Form {

    var numJumps : TextBox;
    var jumpLen : TextBox;
    var interJumpLen : TextBox;
    var barronizeButton : Button;
    var cancelButton : Button;
    var cuttingParamGroup : GroupBox;
    var gatherNoRadio : RadioButton;
    var gatherFrontRadio : RadioButton;
    var gatherBackRadio : RadioButton;
    var gatherParamGroup : GroupBox;
    var fadeNoRadio : RadioButton;
    var fadeInRadio : RadioButton;
    var fadeOutRadio : RadioButton;
    var fadeParamGroup : GroupBox;


    function BarronizerDialog() {

        this.Text = "Barronizer";
        this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
        this.MaximizeBox = false;
        this.StartPosition = FormStartPosition.CenterScreen;

        this.numJumps = new TextBox();
        this.jumpLen = new TextBox();
        this.interJumpLen = new TextBox();
        this.Width = 237;
        this.Height = 219;


        // numJumps
        var numJumpsLabel:Label = new Label();
        numJumpsLabel.Location = new System.Drawing.Point(8, 25);
        numJumpsLabel.Name = "numJumpsLabel";
        numJumpsLabel.Size = new System.Drawing.Size(100, 16);
        numJumpsLabel.TabIndex = 2;
        numJumpsLabel.Text = "Number of Jumps:";

        numJumps.Location = new System.Drawing.Point(110, 22);
        numJumps.Name = "numJumps";
        numJumps.Size = new System.Drawing.Size(80, 20);
        numJumps.TabIndex = 1;
        numJumps.Text = "*";


        // jumpLen
        var jumpLenLabel:Label = new Label();
        jumpLenLabel.Location = new System.Drawing.Point(8, 50);
        jumpLenLabel.Name = "jumpLenLabel";
        jumpLenLabel.Size = new System.Drawing.Size(100, 16);
        jumpLenLabel.TabIndex = 2;
        jumpLenLabel.Text = "Jump Length:";

        jumpLen.Location = new System.Drawing.Point(110, 47);
        jumpLen.Name = "jumpLen";
        jumpLen.Size = new System.Drawing.Size(80, 20);
        jumpLen.TabIndex = 1;
        jumpLen.Text = "2";


        // interJumpLen
        var interJumpLenLabel:Label = new Label();
        interJumpLenLabel.Location = new System.Drawing.Point(8, 75);
        interJumpLenLabel.Name = "interJumpLenLabel";
        interJumpLenLabel.Size = new System.Drawing.Size(100, 16);
        interJumpLenLabel.TabIndex = 2;
        interJumpLenLabel.Text = "Inter-Jump Length:";

        interJumpLen.Location = new System.Drawing.Point(110, 72);
        interJumpLen.Name = "interJumpLen";
        interJumpLen.Size = new System.Drawing.Size(80, 20);
        interJumpLen.TabIndex = 1;
        interJumpLen.Text = "12";


        // cuttingParamGroup
        cuttingParamGroup = new GroupBox();
        cuttingParamGroup.Controls.Add(numJumpsLabel);
        cuttingParamGroup.Controls.Add(numJumps);
        cuttingParamGroup.Controls.Add(jumpLenLabel);
        cuttingParamGroup.Controls.Add(jumpLen);
        cuttingParamGroup.Controls.Add(interJumpLenLabel);
        cuttingParamGroup.Controls.Add(interJumpLen);
        cuttingParamGroup.Location = new System.Drawing.Point(8, 8);
        cuttingParamGroup.Name = "cuttingParamGroup";
        cuttingParamGroup.Size = new System.Drawing.Size(216, 100);
        cuttingParamGroup.TabIndex = 4;
        cuttingParamGroup.TabStop = false;
        cuttingParamGroup.Text = "Cutting Options";

        this.Controls.Add(cuttingParamGroup);


        // Gathering
        gatherNoRadio = new RadioButton();
        gatherNoRadio.Location = new System.Drawing.Point(10, 20);
        gatherNoRadio.Size = new System.Drawing.Size(50, 16);
        gatherNoRadio.Name = "gatherNoRadio";
        gatherNoRadio.TabIndex = 1;
        gatherNoRadio.Text = "Don't";

        gatherFrontRadio = new RadioButton();
        gatherFrontRadio.Location = new System.Drawing.Point(85, 20);
        gatherFrontRadio.Size = new System.Drawing.Size(50, 16);
        gatherFrontRadio.Name = "gatherFrontRadio";
        gatherFrontRadio.TabIndex = 1;
        gatherFrontRadio.Text = "Front";

        gatherBackRadio = new RadioButton();
        gatherBackRadio.Location = new System.Drawing.Point(160, 20);
        gatherBackRadio.Size = new System.Drawing.Size(50, 16);
        gatherBackRadio.Name = "gatherBackRadio";
        gatherBackRadio.TabIndex = 1;
        gatherBackRadio.Text = "Back";
        gatherBackRadio.Checked = true;


        // Gathering group
        gatherParamGroup = new GroupBox();
        gatherParamGroup.Controls.Add(gatherNoRadio);
        gatherParamGroup.Controls.Add(gatherFrontRadio);
        gatherParamGroup.Controls.Add(gatherBackRadio);
        gatherParamGroup.Location = new System.Drawing.Point(8, 115);
        gatherParamGroup.Name = "gatherParamGroup";
        gatherParamGroup.Size = new System.Drawing.Size(216, 45);
        gatherParamGroup.TabIndex = 4;
        gatherParamGroup.TabStop = false;
        gatherParamGroup.Text = "Gathering Options";

        this.Controls.Add(gatherParamGroup);


        // Fading
        fadeNoRadio = new RadioButton();
        fadeNoRadio.Location = new System.Drawing.Point(10, 20);
        fadeNoRadio.Size = new System.Drawing.Size(50, 16);
        fadeNoRadio.Name = "fadeNoRadio";
        fadeNoRadio.TabIndex = 1;
        fadeNoRadio.Text = "Don't";
        fadeNoRadio.Checked = true;

        fadeInRadio = new RadioButton();
        fadeInRadio.Location = new System.Drawing.Point(85, 20);
        fadeInRadio.Size = new System.Drawing.Size(50, 16);
        fadeInRadio.Name = "fadeInRadio";
        fadeInRadio.TabIndex = 1;
        fadeInRadio.Text = "In";

        fadeOutRadio = new RadioButton();
        fadeOutRadio.Location = new System.Drawing.Point(160, 20);
        fadeOutRadio.Size = new System.Drawing.Size(50, 16);
        fadeOutRadio.Name = "fadeOutRadio";
        fadeOutRadio.TabIndex = 1;
        fadeOutRadio.Text = "Out";


        // Fading group
        fadeParamGroup = new GroupBox();
        fadeParamGroup.Controls.Add(fadeNoRadio);
        fadeParamGroup.Controls.Add(fadeInRadio);
        fadeParamGroup.Controls.Add(fadeOutRadio);
        fadeParamGroup.Location = new System.Drawing.Point(8, 170);
        fadeParamGroup.Name = "fadeParamGroup";
        fadeParamGroup.Size = new System.Drawing.Size(216, 45);
        fadeParamGroup.TabIndex = 4;
        fadeParamGroup.TabStop = false;
        fadeParamGroup.Text = "Fade Options";

        //this.Controls.Add(fadeParamGroup);


        // Buttons
        barronizeButton = new Button();
        barronizeButton.DialogResult = System.Windows.Forms.DialogResult.OK;
        barronizeButton.Text = "Barronize!";
        barronizeButton.Left = 65;
        barronizeButton.Top = 165;
        AcceptButton = barronizeButton;
        Controls.Add(barronizeButton);

        cancelButton = new Button();
        cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
        cancelButton.Text = "Cancel";
        cancelButton.Left = 148;
        cancelButton.Top = 165;
        CancelButton = cancelButton;
        Controls.Add(cancelButton);

    }

}
Архив со скриптом и иконкой лежит здесь.
Успехов всем!
__________________
Всякий живет как может, если не может жить как хочет.
romamos вне форума  Ответить с цитированием
Старый 26.09.2008, 22:21   #9
Kanst Меню пользователя
Научный сотрудник
 
Аватар для Kanst
 
Регистрация: 22.05.2008
Сообщений: 30
Рейтинг: 4915
Kanst с Максимальным уровнем доверияKanst с Максимальным уровнем доверияKanst с Максимальным уровнем доверияKanst с Максимальным уровнем доверияKanst с Максимальным уровнем доверияKanst с Максимальным уровнем доверияKanst с Максимальным уровнем доверияKanst с Максимальным уровнем доверияKanst с Максимальным уровнем доверияKanst с Максимальным уровнем доверияKanst с Максимальным уровнем доверия
По умолчанию

Расставляй перед кодированием в ССЕ - он в месте маркера автоматически ставит I-кадр.
__________________
Когда ты, наконец-то стал специалистом в своем деле, дело может исчезнуть к чертовой матери!
Kanst вне форума  Ответить с цитированием
Старый 12.02.2009, 23:14   #10
romamos Меню пользователя
Провидеолюбитель
 
Аватар для romamos
 
Регистрация: 06.05.2008
Сообщений: 519
Рейтинг: 20674
romamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверия
По умолчанию

Только что еще раз попробовал на Vegas 8.0c. Все работает.
Я, увы, не программер, поэтому точный диагноз дать не могу. Возможно проблема в NET.Framework, или, как уже бывало прежде, в каком-нибудь обновлении безопасности от мелкомягких. У меня монтажная система только с SP2 и небольшим набором критических обновлений.
__________________
Всякий живет как может, если не может жить как хочет.
romamos вне форума  Ответить с цитированием
Старый 15.02.2009, 10:59   #11
Yarosik Меню пользователя
Научный сотрудник
 
Аватар для Yarosik
 
Регистрация: 11.02.2009
Сообщений: 44
Рейтинг: 133
Yarosik со Вторым уровенем доверияYarosik со Вторым уровенем доверия
По умолчанию

ПриветЪ!

Похоже на то, мой ХР обновляется автоматически. И вот что страннно,
RecreateAudioEvents и AlfaChanel работают. а другие скрипты - нет.

может есть у кого-нибудь догадки на этот счет?
Yarosik вне форума  Ответить с цитированием
Старый 15.02.2009, 22:55   #12
vkuzin Меню пользователя
Старший научный сотрудник
 
Аватар для vkuzin
 
Регистрация: 14.05.2008
Сообщений: 616
Рейтинг: 15862
vkuzin с Максимальным уровнем доверияvkuzin с Максимальным уровнем доверияvkuzin с Максимальным уровнем доверияvkuzin с Максимальным уровнем доверияvkuzin с Максимальным уровнем доверияvkuzin с Максимальным уровнем доверияvkuzin с Максимальным уровнем доверияvkuzin с Максимальным уровнем доверияvkuzin с Максимальным уровнем доверияvkuzin с Максимальным уровнем доверияvkuzin с Максимальным уровнем доверия
По умолчанию

попробуй переустановить Вегас.На проекты это никак не скажется..
__________________
Вперед и вверх А там посмотрим...
vkuzin вне форума  Ответить с цитированием
Старый 16.02.2009, 18:17   #13
romamos Меню пользователя
Провидеолюбитель
 
Аватар для romamos
 
Регистрация: 06.05.2008
Сообщений: 519
Рейтинг: 20674
romamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверия
По умолчанию

Цитата:
Сообщение от Yarosik Посмотреть сообщение
ПриветЪ!

Похоже на то, мой ХР обновляется автоматически. И вот что страннно,
RecreateAudioEvents и AlfaChanel работают. а другие скрипты - нет.
В Вегасе при установке ставится базовый набор скриптов. Эти скрипты работают?
__________________
Всякий живет как может, если не может жить как хочет.
romamos вне форума  Ответить с цитированием
Старый 16.02.2009, 01:54   #14
daos Меню пользователя
Старший научный сотрудник
 
Аватар для daos
 
Регистрация: 02.02.2009
Сообщений: 186
Рейтинг: 10977
daos с Максимальным уровнем доверияdaos с Максимальным уровнем доверияdaos с Максимальным уровнем доверияdaos с Максимальным уровнем доверияdaos с Максимальным уровнем доверияdaos с Максимальным уровнем доверияdaos с Максимальным уровнем доверияdaos с Максимальным уровнем доверияdaos с Максимальным уровнем доверияdaos с Максимальным уровнем доверияdaos с Максимальным уровнем доверия
По умолчанию

Помниться скрипты разные бывают. Были под версии когда вега еще была не сонивская(там имя что ли менял, не помню уже). А и еще разные фреймнетвоки им нужны вроде бы(опять тут не помню:-))
daos вне форума  Ответить с цитированием
Старый 16.02.2009, 12:50   #15
YNUS Меню пользователя
Старший научный сотрудник
 
Аватар для YNUS
 
Регистрация: 12.05.2008
Сообщений: 916
Рейтинг: 22598
YNUS с Максимальным уровнем доверияYNUS с Максимальным уровнем доверияYNUS с Максимальным уровнем доверияYNUS с Максимальным уровнем доверияYNUS с Максимальным уровнем доверияYNUS с Максимальным уровнем доверияYNUS с Максимальным уровнем доверияYNUS с Максимальным уровнем доверияYNUS с Максимальным уровнем доверияYNUS с Максимальным уровнем доверияYNUS с Максимальным уровнем доверия
По умолчанию

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

Цитата:
/**
* This script will remove all effects from selected events
*
* To use, simply select the events on which effects are to be eliminated.
*
* Written By: Edward Troxel
* www.jetdv.com/tts
* Modified: 07-23-2003
**/

import System;
import System.Collections;
import System.Text;
import System.IO;
import System.Drawing;
import System.Windows.Forms;
import Sony.Vegas;

try {

var trackEnum = new Enumerator(Vegas.Project.Tracks);
while (!trackEnum.atEnd()) {
var track : Track = Track(trackEnum.item());

//Go through the list of Events
var eventEnum = new Enumerator(track.Events);
while (!eventEnum.atEnd()) {
var evnt : TrackEvent = TrackEvent(eventEnum.item());

if (evnt.Selected & evnt.IsVideo()) {
var videoEvent = VideoEvent(evnt);
var i;
for (i=videoEvent.Effects.Count - 1; i >= 0; i--) {
var effect = videoEvent.Effects[i];
videoEvent.Effects.Remove(effect);
}
}

eventEnum.moveNext();
}

trackEnum.moveNext();
}


} catch (e) {
MessageBox.Show(e);
}
YNUS вне форума  Ответить с цитированием
Старый 19.02.2009, 11:54   #16
Yarosik Меню пользователя
Научный сотрудник
 
Аватар для Yarosik
 
Регистрация: 11.02.2009
Сообщений: 44
Рейтинг: 133
Yarosik со Вторым уровенем доверияYarosik со Вторым уровенем доверия
По умолчанию

ПриветЪ!

работает не всякий сторонний скрипт, родные работают.
Yarosik вне форума  Ответить с цитированием
Старый 19.02.2009, 14:53   #17
romamos Меню пользователя
Провидеолюбитель
 
Аватар для romamos
 
Регистрация: 06.05.2008
Сообщений: 519
Рейтинг: 20674
romamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверия
По умолчанию

Тогда надо разбираться с каждым конкретно. Как вариант - брать тексты неработающих скриптов и сравнивать построчно с рабочими. Иногда скрипты не запускаются из-за того, что неправильно указаны пути сохранения, форматы и т.п.
Те, что выкладываются в этой теме, работают вплоть до VP 8.0c.
Общее для всех скриптов - в первых строках должно быть указано:

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


у "старых" скриптов часто бывает ошибка во второй строке. Вместо Sony - Sonic Foundry.
__________________
Всякий живет как может, если не может жить как хочет.
romamos вне форума  Ответить с цитированием
Старый 20.02.2009, 10:31   #18
Yarosik Меню пользователя
Научный сотрудник
 
Аватар для Yarosik
 
Регистрация: 11.02.2009
Сообщений: 44
Рейтинг: 133
Yarosik со Вторым уровенем доверияYarosik со Вторым уровенем доверия
По умолчанию

ПриветЪ!

вот спасибо, в програмирование не вникал, но просмотрю тексты тех скриптов что не работают.
Yarosik вне форума  Ответить с цитированием
Старый 20.03.2009, 14:41   #19
albert_kes Меню пользователя
Толковый человек ®
 
Регистрация: 21.10.2008
Сообщений: 1,275
Рейтинг: 34243
albert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверия
По умолчанию

Несколько скриптов для 8 версии
__________________
Знание - сила, сила есть - ума не надо...
albert_kes вне форума  Ответить с цитированием
Старый 05.04.2009, 01:39   #20
romamos Меню пользователя
Провидеолюбитель
 
Аватар для romamos
 
Регистрация: 06.05.2008
Сообщений: 519
Рейтинг: 20674
romamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверия
По умолчанию

Цитата:
Сообщение от albert_kes Посмотреть сообщение
Несколько скриптов для 8 версии
В этом комплекте скриптов для VP8 от GILLES PIALAT (прямой ход в хранилище: http://sony.vegas.1.free.fr/VP8/ там можно найти еще и ряд скрин-шотов, поясняющих работу скриптов) есть ряд весьма полезных скриптов особенно для тех, кто часто работает с мультикамерой. В частности:
Add New Take To Multicam Project
Automatic Multicam Editing
Sync Events

TakesToTracks
Takes2TracksForCDM_V2

Два последних хочу выделить особо. Они преобразуют мультикамерный трек обратно в набор треков! Причем делать это можно, в т.ч. и на этапе редактуры.
TakesToTracks дает возможность разделять мультикам в разных вариантах: только видео, только аудио, и видео и аудио.
Есть пара моментов. Без аудиодороги (с чистым видео) скрипт работать не будет. Если в окне настроек поставить флажок только на аудио, видео дорога удаляется и в результате остаются только аудио-треки.
Takes2TracksForCDM_V2 просто разделяет мультикамерную аудиодорогу на треки, не трогая видео.
__________________
Всякий живет как может, если не может жить как хочет.
romamos вне форума  Ответить с цитированием
Старый 27.03.2009, 12:02   #21
albert_kes Меню пользователя
Толковый человек ®
 
Регистрация: 21.10.2008
Сообщений: 1,275
Рейтинг: 34243
albert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверия
По умолчанию

Коллекция скриптов

Add Effect And Slow Play
Add effect to all media
Add markers at interval
Add markers at interval
Add markers to events
Add Regions To Events
Add2SecondGap
Adjust volume
Apply Random Transition
Apply transitions
Aspect ratio
Audio to new take
Audit for event levels
Audit for short blank gaps
Automated_photo_snapshot
Automated_photo_snapshot
Batch render
Batch render gui
Batch Render GUI (JHM)
Batch Render Gui JHM
Blink
ChangeAlphaChannel
ChangeMediaPoolAspectRatio
Chop off front
CopyVelEnv(e)
Create tracks
CurveTypesConcave
CurveTypesConvex
CurveTypesLinear
CurveTypesSmooth
Delete Empty Space Between Events
Delete from cursor to event start
Delete n frames from event
Delete next frames on all tracks
Directory converter
Drum bus and track
DVDA chapter from Vegas marker
Event curve types (4)
Expand events
Export images for range
Fade event in out
Fade in out cursor
Film look
Highlight selected fX Events
Improved Render Gui
Loop to normalize
Markers at Media Change Points
Markers To Regions
Match aspect
Move cursor 60 sec left
Multi Cam Dissolve
Multi fade
MulticamWithTakes 1.54
Normalize all
One frame from each event
Opacity level
Photo_Snapshot
Play Sound
Put In First Track End
Quick Envelope
Quick pan
Quick Pan 1.0
QuickEnvelope2.0[1]
RC1_filmlook
Reconstruct Audio events
Recreate Audio events
Reduce Interlace Flicker
Regions from event names
RegionsToChapters
Remote Control
Remove all effects
Remove Not Active Takes
Render DVD
Render image sequence
Render on markers
Render queue
RenderSegs2
Reverse event
Select all
Select all events in single track
Select all events in tracks
SelectEventsFromCursor
Selection area around selected event
SelectionToMultitakeClips 1.32
Show number of tracks
Snapshot to clipboard
Snapshot to file
Split Events
TapTempo
Test pattern
Test timeline redraw
Thumbnail
Thumbnail at markers
Time Lapse (1 Frame per Event)
Tracksetup
Transitions
TRIMMODULE 1.12
VegasQuakeInstall
Visual Key framer
wil_maestrochp

ЗЫ Если есть повторы, извините. все не проверял

Описание на аглицком в архиве Описание.zip

.
Вложения
Тип файла: zip Описание.zip (18.3 Кб, 365 просмотров)
Тип файла: zip Vegas_6 Scripts.zip (55.3 Кб, 277 просмотров)
Тип файла: zip Vegas Scripts.zip (140.1 Кб, 407 просмотров)
__________________
Знание - сила, сила есть - ума не надо...
albert_kes вне форума  Ответить с цитированием
Старый 27.03.2009, 14:01   #22
vladyud Меню пользователя
Стажер
 
Регистрация: 26.03.2009
Сообщений: 2
Рейтинг: 56
vladyud со Вторым уровенем доверия
По умолчаниюExport MKVmerge chapters

Экспорт маркеров в XML-файл в формате программы MKVmerge
- скрипт будет полезен тем, кто собирает mkv-файлы в MKVmerge;
- после экспорта достаточно загрузить полученный xml-файл в MKVmerge: меню Chapter Editor -> Load,
либо указать Chapter file в закладке Global.

Код:
/**
 * Script that exports Sony Vegas project's markers data to an XML file.
 *
 * Based on "Export XML" script.
 *
 * Note: Not every aspect of project data is accessible from the
 * scripting API so it is likely that information will be lost in a
 * round trip to and from Xml.  Most noticeably, you'll loose effect
 * properties.
 *
 * Revision Date: March 27, 2009.
 * Author: Vlad Yudkin
 **/

using System;
using System.Collections;
using System.Text;
using System.IO;
using System.Xml;
using System.Windows.Forms;
using System.Globalization;
using Sony.Vegas;

public class EntryPoint
{

    NumberFormatInfo myNumberFormat = NumberFormatInfo.InvariantInfo;

    System.Text.Encoding myCharacterEncoding = System.Text.Encoding.UTF8;

    bool UseProjectRulerFormatForTimecodes = true;
    RulerFormat myTimecodeFormat = RulerFormat.Nanoseconds;

    Vegas myVegas = null;
    
    public void FromVegas(Vegas vegas) {
        myVegas = vegas;
        if (UseProjectRulerFormatForTimecodes)
            myTimecodeFormat = myVegas.Project.Ruler.Format;

        String outputFile = myVegas.Project.FilePath;
        if (!String.IsNullOrEmpty(outputFile)) {
            String fileNameWOExt = Path.GetFileNameWithoutExtension(outputFile);
            String directoryName = Path.GetDirectoryName(outputFile);
            outputFile = Path.Combine(directoryName, fileNameWOExt + ".xml");
        }

        outputFile = ShowSaveFileDialog("XML Files (*.xml)|*.xml", "XML Output File", outputFile);
        myVegas.UpdateUI();

        if (null != outputFile) {
            ExportXml(outputFile);
        }
    }

    void ExportXml(String outputFile) {
        XmlDocument doc = new XmlDocument();
        XmlProcessingInstruction xmlPI = doc.CreateProcessingInstruction("xml", "version=\"1.0\"");
        doc.AppendChild(xmlPI);
        XmlElement root = doc.CreateElement("Chapters");
        doc.AppendChild(root);

        ExportProject(root, myVegas.Project);
    
        XmlTextWriter writer = new XmlTextWriter(outputFile, myCharacterEncoding);
        writer.Formatting = Formatting.Indented;
        writer.Indentation = 2;
        writer.IndentChar = ' ';
        doc.WriteTo(writer);
        writer.Close();
    }

    void ExportProject(XmlElement parent, Project proj) {
        XmlElement elt = AddChild(parent, "EditionEntry");
        ChildInt32(elt, "EditionFlagHidden", 0);
        ChildInt32(elt, "EditionFlagDefault", 0);
        ChildString(elt, "EditionUID", proj.Length.Nanos.ToString(myNumberFormat));
        ExportMarkers(elt, proj.Markers, "Markers");
    }

    void ExportMarkers(XmlElement parent, IList markers, String type) {
        foreach (Marker marker in markers) {
            ExportMarker(parent, marker);
        }
    }

    void ExportMarker(XmlElement parent, Marker marker) {
        Type type = marker.GetType();
        XmlElement elt = AddChild(parent, "ChapterAtom");
        ChildString(elt, "ChapterUID", marker.Position.Nanos.ToString(myNumberFormat));
        ChildUInt32(elt, "ChapterFlagHidden", 0);
        ChildUInt32(elt, "ChapterFlagEnabled", 1);
        XmlElement elt2 = AddChild(elt, "ChapterDisplay");
        ChildString(elt2, "ChapterString", marker.Label);
        ChildString(elt2, "ChapterLanguage", "rus");
        ChildTimecode(elt, "ChapterTimeStart", marker.Position);
    }

    XmlElement AddChild(XmlElement parent, String childName) {
        return ChildString(parent, childName, null);
    }

    // For Timecodes, both the string and nanos are exported so that
    // importing them can be precise and flexible.
    XmlElement ChildTimecode(XmlElement parent, String childName, Timecode childValue) {
        XmlElement elt = ChildString(parent, childName, TimecodeToString(childValue));
        //elt.SetAttribute("Nanos", myTimecodeFormat);
        return elt;
    }

    XmlElement ChildBoolean(XmlElement parent, String childName, Boolean childValue) {
        return ChildString(parent, childName, childValue.ToString());
    }

    XmlElement ChildDouble(XmlElement parent, String childName, Double childValue) {
        return ChildString(parent, childName, childValue.ToString(myNumberFormat));
    }

    XmlElement ChildSingle(XmlElement parent, String childName, Single childValue) {
        return ChildString(parent, childName, childValue.ToString(myNumberFormat));
    }

    XmlElement ChildInt64(XmlElement parent, String childName, Int64 childValue) {
        return ChildString(parent, childName, childValue.ToString(myNumberFormat));
    }

    XmlElement ChildInt32(XmlElement parent, String childName, Int32 childValue) {
        return ChildString(parent, childName, childValue.ToString(myNumberFormat));
    }

    XmlElement ChildUInt32(XmlElement parent, String childName, UInt32 childValue) {
        return ChildString(parent, childName, childValue.ToString(myNumberFormat));
    }

    XmlElement ChildObject(XmlElement parent, String childName, Object childValue) {
        return ChildString(parent, childName, childValue.ToString());
    }

    XmlElement ChildString(XmlElement parent, String childName, String childValue) {
        XmlElement child = parent.OwnerDocument.CreateElement(childName);
        parent.AppendChild(child);
        if (null != childValue)
            child.InnerText = childValue.ToString();
        return child;
    }

    String TimecodeToString(Timecode timecode) {
        return timecode.ToString(myTimecodeFormat);
    }


    String ShowSaveFileDialog(String filter, String title, String defaultFilename) {
        SaveFileDialog saveFileDialog = new SaveFileDialog();
        if (null == filter) {
            filter = "All Files (*.*)|*.*";
        }
        saveFileDialog.Filter = filter;
        if (null != title)
            saveFileDialog.Title = title;
        saveFileDialog.CheckPathExists = true;
        saveFileDialog.AddExtension = true;
        if (null != defaultFilename) {
            String initialDir = Path.GetDirectoryName(defaultFilename);
            if (Directory.Exists(initialDir)) {
                saveFileDialog.InitialDirectory = initialDir;
            }
            saveFileDialog.DefaultExt = Path.GetExtension(defaultFilename);
            saveFileDialog.FileName = Path.GetFileName(defaultFilename);
        }
        if (DialogResult.OK == saveFileDialog.ShowDialog()) {
            return Path.GetFullPath(saveFileDialog.FileName);
        } else {
            return null;
        }
    }

}
vladyud вне форума  Ответить с цитированием
Старый 28.03.2009, 13:56   #23
vladyud Меню пользователя
Стажер
 
Регистрация: 26.03.2009
Сообщений: 2
Рейтинг: 56
vladyud со Вторым уровенем доверия
По умолчанию

romamos, благодарю

В дополнение к скрипту: для его корректной работы необходимо выставить Time Format в Time, т.е. чтобы время было в виде 01:30:15.235.
В зависимости от региональных настроек Windows, тысячные доли секунды могут быть отделены запятой - должна быть точка.
vladyud вне форума  Ответить с цитированием
Старый 27.03.2009, 18:04   #24
Quentin Buratino Меню пользователя
Научный сотрудник
 
Аватар для Quentin Buratino
 
Регистрация: 04.03.2009
Сообщений: 34
Рейтинг: 3420
Quentin Buratino с Максимальным уровнем доверияQuentin Buratino с Максимальным уровнем доверияQuentin Buratino с Максимальным уровнем доверияQuentin Buratino с Максимальным уровнем доверияQuentin Buratino с Максимальным уровнем доверияQuentin Buratino с Максимальным уровнем доверияQuentin Buratino с Максимальным уровнем доверияQuentin Buratino с Максимальным уровнем доверияQuentin Buratino с Максимальным уровнем доверияQuentin Buratino с Максимальным уровнем доверияQuentin Buratino с Максимальным уровнем доверия
По умолчанию

Цитата:
Сообщение от vladyud
Экспорт маркеров в XML-файл в формате программы MKVmerge
- скрипт будет полезен тем, кто собирает mkv-файлы в MKVmerge;
- после экспорта достаточно загрузить полученный xml-файл в MKVmerge: меню Chapter Editor -> Load,
либо указать Chapter file в закладке Global.
офтоп:
как говориться у вас не будет второго шанса произвести первое впечатление =)
Quentin Buratino вне форума  Ответить с цитированием
Старый 27.03.2009, 22:49   #25
romamos Меню пользователя
Провидеолюбитель
 
Аватар для romamos
 
Регистрация: 06.05.2008
Сообщений: 519
Рейтинг: 20674
romamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверия
По умолчанию

Quentin Buratino, зачем же так вот безапеляционно... Если бы вы потрудились посмотреть сам скрипт, то увидели бы, что скрипт как раз написан для Sony Vegas и предназначен для переноса данных проекта Вегаса в MKVmerge. Другое дело - то, что вы лично не пользуетесь этой программой, но тем кто использует MKVmerge, этот скрипт очень пригодится. Задача вполне актуальная. Есть большой спрос на подобные скрипты, с помощью которых можно было бы полностью передавать данные проекта Вегаса в другие программы, например After Affects, Final Cut, AVID MC и т.д. и поднимать из них обратно в Вегас. Форматы EDL и AAF не решают этой задачи, некоторые данные в них передать нельзя. В XML это возможно.
Так что офтопом был именно ваш пост. На будущее... Слово - не воробей, подумайте прежде чем выпускать его на всеобщее обозрение.

vladyud, вам спасибо за то, что решили опубликовать этот скрипт здесь. Скриптописателей у нас не так много. Добро пожаловать в тему.
__________________
Всякий живет как может, если не может жить как хочет.
romamos вне форума  Ответить с цитированием
Старый 15.04.2009, 08:01   #26
albert_kes Меню пользователя
Толковый человек ®
 
Регистрация: 21.10.2008
Сообщений: 1,275
Рейтинг: 34243
albert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверияalbert_kes с Максимальным уровнем доверия
По умолчанию

Цитата:
Сообщение от romamos
Add New Take To Multicam Project
romamos А Вы разбирались с этим скриптом? Может подскажите что к чему?

Ещё один скрипт New Deshaker
__________________
Знание - сила, сила есть - ума не надо...
albert_kes вне форума  Ответить с цитированием
Старый 15.04.2009, 17:09   #27
romamos Меню пользователя
Провидеолюбитель
 
Аватар для romamos
 
Регистрация: 06.05.2008
Сообщений: 519
Рейтинг: 20674
romamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверияromamos с Максимальным уровнем доверия
По умолчанию

Цитата:
Сообщение от albert_kes Посмотреть сообщение
romamos А Вы разбирались с этим скриптом? Может подскажите что к чему?
Да, в общем-то - все просто. Скажем, у вас есть мультикамерный проект из трех "камер". Вы решили, что вам, для создания шедевра не хватает еще одной "камеры". Затягиваете видеофайл в существующий проект, запускаете скрипт и ... получаете 4-х камерный мультик.
Есть пара приятных сервисных моментов.
Скрипт позволяет выбирать, что хотите добавить: видео, или аудио, или и то, и другое вместе
+ к этому есть возможность выбрать как добавлять "камеру": только в мультикамерный трек, или плюс к этому оставить еще и отдельным треком в проекте.
Подводный камень - если в добавляемой "камере" и мультикамерном треке нет звука, скрипт будет ругаться.
__________________
Всякий живет как может, если не может жить как хочет.
romamos вне форума  Ответить с цитированием
Старый 30.06.2010, 20:17   #28
psi-x Меню пользователя
Стажер
 
Регистрация: 30.06.2010
Сообщений: 1
Рейтинг: 10
psi-x с Первым уровенем доверия
По умолчанию

Цитата:
Сообщение от albert_kes Посмотреть сообщение
romamos
Ещё один скрипт New Deshaker
а можно узнать как с ним работать в вегасе? Я только недавно научился кое как его применять в виртуал дабе, а вот в вегасе непойму как его заставить работать...

И еще вопрос попроще: подскажите хороший скрипт для автоматической генерации переходов, мне нужно чтоб использовались не все переходы, а только те которые я выберу.
psi-x вне форума  Ответить с цитированием
Старый 07.10.2010, 13:22   #29
igode2007 Меню пользователя
Старший научный сотрудник
 
Аватар для igode2007
 
Регистрация: 18.03.2010
Сообщений: 126
Рейтинг: 11671
igode2007 с Максимальным уровнем доверияigode2007 с Максимальным уровнем доверияigode2007 с Максимальным уровнем доверияigode2007 с Максимальным уровнем доверияigode2007 с Максимальным уровнем доверияigode2007 с Максимальным уровнем доверияigode2007 с Максимальным уровнем доверияigode2007 с Максимальным уровнем доверияigode2007 с Максимальным уровнем доверияigode2007 с Максимальным уровнем доверияigode2007 с Максимальным уровнем доверия
По умолчанию

Цитата:
...Ещё один скрипт New Deshaker...а можно узнать как с ним работать в вегасе..
может это поможет?
__________________
Учись у мудрых и помогай молодым
Любите книгу (учебник) - источник знаний!
igode2007 вне форума  Ответить с цитированием
Старый 08.10.2010, 12:27   #30
Maxundel Меню пользователя
Стажер
 
Аватар для Maxundel
 
Регистрация: 13.06.2009
Сообщений: 29
Рейтинг: 1286
Maxundel с Девятым уровнем доверияMaxundel с Девятым уровнем доверияMaxundel с Девятым уровнем доверияMaxundel с Девятым уровнем доверияMaxundel с Девятым уровнем доверияMaxundel с Девятым уровнем доверияMaxundel с Девятым уровнем доверияMaxundel с Девятым уровнем доверияMaxundel с Девятым уровнем доверия
Question

Цитата:
Сообщение от igode2007 Посмотреть сообщение
может это поможет?
Вроде всё делаю как надо... ))
Установил VirtualDub, установил Deshaker
В вегасе появилась славная иконка D
Выделяю клип, нажимаю D
Vegas спрашивает скрипт с расширением vds, а там vdf, в чем разница?
Направляю на vdf, начинает вроде что-то рендерить - и фиг.
В конце просчёта выдает ошибку
__________________
www.SiMax.Pro

Последний раз редактировалось Maxundel; 08.10.2010 в 13:16.
Maxundel вне форума  Ответить с цитированием
Ответ

Теги
scripts, sony vegas, скрипты


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный видКомбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


ProVegas.ru
© 2008-2010 При полном или частичном использовании материалов ссылка на ProVegas.ru обязательна.

Часовой пояс GMT +4, время: 19:43.


Работает на vBulletin® версия 3.7.0.
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Перевод: zCarot