03.09.2008, 01:52 | #1 | |
romamos
Провидеолюбитель
Регистрация: 06.05.2008
Сообщений: 545
Рейтинг: 48438
|
Скрипты (Scripts)
Скрипты и утилиты для Sony Vegas
Помимо множества полезных функций Sony Vegas обладает и чрезвычайно приятной особенностью – он умеет работать со скриптами (scripts). Для справки: Работа со скриптами доступна лишь в полной версии Vegas. В варианте Vegas Movie Studio такая возможность отсутствует. Скрипт – это макрокоманда, которая "в один клик" запускает целую цепочку операций в Вегас и позволяет таким образом автоматизировать выполнение множества задач при работе с видео и звуком и сэкономить массу времени. Для Vegas уже написано множество различных скриптов и они активно используются, однако для большинства русскоязычных пользователей их применение ограничивается тем, что инструкции по работе и настройке скрипта под конкретную систему записываются в исходном коде на английском языке. Пришла пора исправить этот пробел. Править скрипты можно с помощью встроенного в Windows Notepad, но удобнее это делать с помощью бесплатного редактора Notepad++, в котором есть подсветка синтаксиса скрипта и ряд других полезных возможностей (в т.ч. русский интерфейс) скачать можно с оф.сайта: http://notepad-plus.sourceforge.net/...ut.php?lang=ru Предлагаю выкладывать здесь реально работающие скрипты для Вегаса, и дабы уменьшить по возможности число лишних вопросов выкладывать их с ОБЯЗАТЕЛЬНЫМ описанием того, как скрипт работает и какие изменения необходимо внести в исходный код для подстройки под конкретную систему. Поскольку ссылки на файлообменники имеют тенденцию устаревать, просьба в постах выкладывать также и исходный код скрипта, чтобы пользователь, в случае необходимости, мог самостоятельно создать для себя файл скрипта или адаптировать существующий. Ну и, естественно, хотя большинство скриптов и выкладываются в сети для общего пользования - не стоит забывать о том, что каждый скрипт имеет своего автора. Давайте уважать друг друга и если Вы модифицировали скрипт – укажите это ОТДЕЛЬНОЙ СТРОКОЙ, а не затирайте имя автора исходного кода.
Цитата:
Для того, чтобы создать файл скрипта из исходного кода необходимо в любом текстовом редакторе (например в 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кБ).
__________________
Всякий живет как может, если не может жить как хочет. Последний раз редактировалось romamos; 01.06.2009 в 18:47. |
|
03.09.2008, 01:56 | #2 |
romamos
Провидеолюбитель
Регистрация: 06.05.2008
Сообщений: 545
Рейтинг: 48438
|
Ещё пара скриптов из серии "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") Архив со скриптами и иконками можно скачать здесь:
__________________
Всякий живет как может, если не может жить как хочет. |
03.09.2008, 01:56 | #3 |
romamos
Провидеолюбитель
Регистрация: 06.05.2008
Сообщений: 545
Рейтинг: 48438
|
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-фреймам. Архив со скриптом и иконкой к нему лежит здесь. Или здесь -
__________________
Всякий живет как может, если не может жить как хочет. |
03.09.2008, 02:08 | #4 |
romamos
Провидеолюбитель
Регистрация: 06.05.2008
Сообщений: 545
Рейтинг: 48438
|
Ещё несколько скриптов для работы со звуком.
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);}
__________________
Всякий живет как может, если не может жить как хочет. |
03.09.2008, 02:08 | #5 |
romamos
Провидеолюбитель
Регистрация: 06.05.2008
Сообщений: 545
Рейтинг: 48438
|
Скрипт 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); }
__________________
Всякий живет как может, если не может жить как хочет. |
06.09.2008, 00:21 | #6 |
romamos
Провидеолюбитель
Регистрация: 06.05.2008
Сообщений: 545
Рейтинг: 48438
|
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); } } Успехов всем!
__________________
Всякий живет как может, если не может жить как хочет. |
26.09.2008, 19:34 | #7 | |
Tango
Стажер
Регистрация: 17.09.2008
Сообщений: 8
Рейтинг: 71
|
Цитата:
вот это серьезный минус альтернативных MPEG2-кодировщиков. приятно все-таки и удобно расставлять чаптеры по своему усмотрению, а не зависеть от произвольно ими расставленных I-кадров. |
|
26.09.2008, 21:21 | #8 |
Kanst
Научный сотрудник
Регистрация: 21.05.2008
Сообщений: 67
Рейтинг: 16831
|
Расставляй перед кодированием в ССЕ - он в месте маркера автоматически ставит I-кадр.
__________________
Когда ты, наконец-то стал специалистом в своем деле, дело может исчезнуть к чертовой матери! |
11.02.2009, 16:50 | #9 | |
Yarosik
Научный сотрудник
Регистрация: 11.02.2009
Сообщений: 44
Рейтинг: 133
|
Цитата:
старнно, но у меня не срабатывает. и вот такую ошибку выдает(см. приложения) Версия - Вегас 8.0с, что подскажете? |
|
12.02.2009, 22:14 | #10 |
romamos
Провидеолюбитель
Регистрация: 06.05.2008
Сообщений: 545
Рейтинг: 48438
|
Только что еще раз попробовал на Vegas 8.0c. Все работает.
Я, увы, не программер, поэтому точный диагноз дать не могу. Возможно проблема в NET.Framework, или, как уже бывало прежде, в каком-нибудь обновлении безопасности от мелкомягких. У меня монтажная система только с SP2 и небольшим набором критических обновлений.
__________________
Всякий живет как может, если не может жить как хочет. |
15.02.2009, 09:59 | #11 |
Yarosik
Научный сотрудник
Регистрация: 11.02.2009
Сообщений: 44
Рейтинг: 133
|
ПриветЪ!
Похоже на то, мой ХР обновляется автоматически. И вот что страннно, RecreateAudioEvents и AlfaChanel работают. а другие скрипты - нет. может есть у кого-нибудь догадки на этот счет? |
15.02.2009, 21:55 | #12 |
vkuzin
Старший научный сотрудник
Регистрация: 14.05.2008
Сообщений: 627
Рейтинг: 29246
|
попробуй переустановить Вегас.На проекты это никак не скажется..
__________________
Вперед и вверх А там посмотрим... |
16.02.2009, 00:54 | #13 |
daos
Старший научный сотрудник
Регистрация: 02.02.2009
Сообщений: 871
Рейтинг: 254830
|
Помниться скрипты разные бывают. Были под версии когда вега еще была не сонивская(там имя что ли менял, не помню уже). А и еще разные фреймнетвоки им нужны вроде бы(опять тут не помню:-))
|
16.02.2009, 11:50 | #14 | |
YNUS
Старший научный сотрудник
Регистрация: 12.05.2008
Сообщений: 978
Рейтинг: 35972
|
RemoveAllEffects
Достаточно полезный скрипт, редкая необходимость в использовании но очень важен при ошибочном монтаже и переделке достаточно большого проекта. Как следует из названия удаляет все присвоенные эффекты из выделенных эвентов.
Цитата:
|
|
16.02.2009, 17:17 | #15 |
romamos
Провидеолюбитель
Регистрация: 06.05.2008
Сообщений: 545
Рейтинг: 48438
|
В Вегасе при установке ставится базовый набор скриптов. Эти скрипты работают?
__________________
Всякий живет как может, если не может жить как хочет. |
Теги |
scripts, sony vegas, скрипты |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|