Automatyczne usuwanie przerw w Vegasie
Ostatnio sporo montuję korzystając z importowania plików z kodem czasowym. Niezwykle przydatny patent, nawet dla tylko jednej kamery + rejestrator. Zabawa jest jeszcze fajniejsza, kiedy kamer i rejestratorów jest więcej :) Jednak są momenty, gdy pracuje tylko jedna kamera a po imporcie mamy na timeline wiele dziur.
Nie jest to zresztą jedyny sposób na wiele dziur między klipami - ja akurat w tym momencie najczęściej mam je z tego właśnie powodu. Tak czy inaczej, dziur chcemy się pozbyć w maksymalnie uproszczony sposób.
Z pomocą przychodzi nam możliwość dodawania skryptów.
W sieci można znaleźć informacje, że funkcja taka zawarta jest już w Vegasaurze albo Vegas Pro Production Assistant 2, niemniej jednak są one płatne. Jak to w naturze Polaka - po co przepłacać, skoro nie widać różnicy ;) Znalazłem w sieci "gotowca", jednak nie działał on do końca, ponieważ skrypt był pisany jeszcze za czasów SonicFoundry. Na szczęście w internecie można też znaleźć co zmienić, by nowe wersje Vegasa również go łykały.
Jako, że javascriptu trochę znam, pozwoliłem sobie jeszcze nieco bardziej zmodyfikować skrypt, który standardowo działa dla wszystkich klipów na zaznaczonych ścieżkach. Obecna wersja dodatkowo działa tylko dla zaznaczonych klipów i przesuwa je do miejsca, gdzie jest aktualnie ustawiony kursor.
Ważne! Skrypt zdaje się ignorować grupowanie obiektów i zasadniczo działa dla każdej zaznaczonej ścieżki osobno.
Działanie skryptu widać na poniższym obrazku:
Oczywiście można zmodyfikować kod, by działał dla wszystkich ścieżek, nie tylko tych zaznaczonych. Wystarczy usunąć if (!track.Selected) continue. To samo można zrobić z if (!evnt.Selected) i wtedy będzie działać dla wszystkich klipów na danej ścieżce. Usunięcie obu oczywiście spowoduje zupełny chaos :)
Okazuje się, że skrypt nie tylko usuwa dziury, pomiędzy klipami, ale także na swój sposób je porządkuje. Jeżeli ujęcia nachodzą na siebie (z przejściem, bądź w całości "jeden leży na drugim"), również i one zostaną poukładane wg kolejności:
Mam nadzieję, że osoby korzystające z Vegasa wiedzą, co należy zrobić z poniższym kodem:
/**
* Program:
* Description: This script will Delete Empty Space Between Events In Selected Tracks
* Author: Philip
*
* Date: August 31, 2003
*
* --------------------------
* Modified by Radomir Rytych
* Date: November 20, 2013
* Script will delete space only if events and tracks are selected and move them to cursor position
* Note: It ignores groups, so use it carefully.
**/
import Sony.Vegas;
import System.Windows.Forms;
import Microsoft.Win32;
try
{
for (var track in Vegas.Project.Tracks) {
if( !track.Selected) continue;
var tracktime = new Timecode(Vegas.Cursor.ToMilliseconds());
for (var evnt in track.Events) {
if (!evnt.Selected) continue;
evnt.Start = tracktime;
evnt.Offset = evnt.ActiveTake.Offset
tracktime = tracktime + evnt.Length;
}
}
}
catch (errorMsg)
{
MessageBox.Show(errorMsg, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
Życzę miłego korzystania! Jak znajdę czas, to spróbuję go zmodyfikować, żeby działał również w ramach zwykłego zaznaczenia.