|
Ostatnio dodane
Najchętniej pobierane
|
|
|
|
|
VideoAudio.pl - serwis o technologii video/audio WITAMY:
Waldemarjako nowego użytkownika.
Zarejestrowanch Uzytkowników: 3876
Super Administratorzy: 3
Administratorzy: 2 Użytkownicy: 3871
Użytkownicy Online:
Gości Online: 16
Najwiecej online: 106
Bylo: 27.05.2008-19:56 Twoje IP to: 38.107.179.210
|
|
|
|
|
|
Poprzedni | NastępnySłowo wstępne
Dla początkujących pierwsze spotkanie z AviSynth
może być zaskakujące. Nowicjusz zadaje sobie pytania: "Jak to
uruchomić?" i "Czy muszę być programistą, aby pisać skrypty?".
Niniejszy tekst ma ułatwić bezbolesne wejście w świat AviSynth
niedoświadczonym osobom.
Instalacja
Aby rozpocząć pracę z AviSynth, musimy go
zainstalować w systemie. W tym celu ściągamy najnowszą wersję ze strony
http://www.avisynth.org
i dwukrotnie klikamy ściągnięty plik programu instalacyjnego. Potem
klikamy I Agree w oknie umowy licencyjnej, zaś
następnie konfigurujemy instalator tak, jak na załączonym obrazku:
Dzięki temu pliki skryptów będą stowarzyszone z programem Notatnik.
Czym są skrypty? Dowiesz się za chwilę. Do pracy będziemy jeszcze
potrzebować programu do kompresji obrazu i dźwięku, takiego jak VirtualDubMod.
Pierwszy skrypt
Przyszedł czas na napisanie pierwszego skryptu. Poleceniem Plik
-> Nowy -> Dokument tekstowy w Eksploratorze
Windows tworzymy plik tekstowy. Zostanie on automatycznie
podświetlony. Następnie zmieniamy jego nazwę na skrypt.avs
(gdy pojawi się pytanie Czy na pewno chcesz je zmienić?,
klikamy Tak). Potem dwukrotnie klikamy plik skrypt.avs
- otworzy się okno programu Notatnik. Do pliku
wpisujemy tekst:
Version()
Plik skrypt.avs otwieramy w programie VirtualDubMod
poleceniem File -> Open video file.
Powinniśmy otrzymać klip zawierający komunikat o zainstalowanej wersji AviSynth.
Zadziałało? Gratulacje! Właśnie napisałeś swój pierwszy
skrypt AviSynth.
Otwieranie pliku
Aby zrobić coś sensownego w AviSynth, należy
otworzyć w nim plik z filmem. Poszukajmy jakiegoś pliku *.avi.
Na przykład jeśli wykorzystamy plik C:\filmy\plik.avi,
musimy napisać skrypt:
AVISource("C:\filmy\plik.avi")
Po otwarciu tego skryptu w VirtualDubMod powinniśmy
zobaczyć pierwszą klatkę naszego filmu. Należy wiedzieć, że AviSynth
zawsze dekompresuje otwierany plik, zatem niemożliwe jest kopiowanie
skompresowanego strumienia. Przez to AviSynth nie
nadaje się do wycinania fragmentów filmu bez ich ponownej
kompresji.
Gdy film, który chcemy załadować do AviSynth
nie jest plikiem *.avi, lub funkcja AVISource()
nie znajdzie dekompresora dla naszego pliku *.avi,
możemy posłużyć się funkcją DirectShowSource().
Przypuśćmy, że nasz film jest w pliku C:\filmy\plik.mkv.
Wówczas piszemy skrypt:
DirectShowSource("C:\filmy\plik.mkv")
Funkcja DirectShowSource() powinna poradzić sobie z
każdym filmem, który odtwarza się prawidłowo w programie Windows
Media Player.
Łączenie obrazu z dźwiękiem
Przypuśćmy, że strumienie obrazu i dźwięku są w osobnych plikach (C:\filmy\plik.avi
i C:\filmy\plik.wav). Możemy je połączyć przy
pomocy skryptu:
Video=AVISource("C:\filmy\plik.avi")
Audio=WAVSource("C:\filmy\plik.wav")
Clip=AudioDub(Video,Audio)
Clip=DelayAudio(Clip,0.500)
Return Clip
Funkcja WAVSource() otwiera
nieskompresowane pliki *.wav, funkcja AudioDub()
łączy obraz z klipu Video z dźwiękiem z klipu Audio,
zaś funkcja DelayAudio() opóżnia dźwięk
w stosunku do obrazu o pół sekundy (500 milisekund). Należy
wiedzieć, że przy pomocy skryptu AviSynth nie można
połączyć dźwięku z obrazem łącząc ich strumienie bez dekompresji - w
tym celu należy się posłużyć programem VirtualDubMod.
AviSynth zawsze dekompresuje strumienie obrazu i
dźwięku, które otwiera.
Filtrowanie
Celem otwarcia filmu w AviSynth jest poddanie go
działaniu jakichś filtrów. Omówienie wszystkich
wbudowanych w AviSynth filtrów wykracza
poza zakres niniejszego opracowania (ich opisy można znaleźć na stronie
http://www.avisynth.org).
Pokażemy jedynie, jak dopisywać nazwy filtrów do skryptu.
Spójrzmy na następujący skrypt:
AVISource("C:\filmy\plik.avi")
DelayAudio(0.500) # opóźnienie dźwięku o pół
sekundy
Tweak(bright=30) # rozjaśnienie obrazu
LanczosResize(512,384) # zmiana rozmiaru do 512x384
Ten skrypt opóźni dźwięk o pół sekundy, rozjaśni
obraz oraz zmieni jego rozdzielczość. Filtry stosowane są w kolejności,
w jakiej zostały wpisane do skryptu. Linie rozpoczynające się znakiem #
to komentarze.
Zewnętrzne wtyczki
Filtry zastosowane w tym skrypcie są wbudowane na stałe w AviSynth.
Możliwe jest również korzystanie z filtrów
zewnętrznych zwanych wtyczkami (ang. plugins). Aby
załadować wtyczkę, posługujemy się instrukcją LoadPlugin().
Wtyczki zewnętrzne są przechowywane w plikach *.dll.
Jeśli na przykład nasza wtyczka znajduje się w pliku C:\wtyczki\wtyczka.dll,
na początku skryptu dopisujemy:
LoadPlugin("C:\wtyczki\wtyczka.dll")
Potem możemy już stosować w naszym skrypcie filtry, które
zawiera załadowana wtyczka. Gdy na przykład załadujemy wtyczkę C:\wtyczki\tdeint.dll,
możemy zastosować w naszym skrypcie funkcję TDeint()
zawartą w tej wtyczce.
LoadPlugin("C:\wtyczki\tdeint.dll")
AVISource("C:\filmy\plik.avi")
TDeint()
Gdy umieścimy plik wtyczki w katalogu C:\Program
Files\AviSynth 2.5\plugins, nie będziemy musieli ładować jej
funkcją LoadPlugin() w naszym skrypcie - zostanie
ona załadowana automatycznie.
Obsługa kilku klipów
Skrypt AviSynth może przetwarzać więcej niż jeden
film. Możliwe jest załadowanie kilku filmów, poddanie ich
działaniu rozmaitych filtrów, a następnie ich połączenie.
Przypuścmy, że mamy do dyspozycji filmy C:\filmy\plik.avi
(o rozdzielczości 640x480 i 23.976 klatkach na sekundę) oraz C:\filmy\plik.mkv
(o rozdzielczości 512x384 i 25 klatkach na sekundę). W jednym skrypcie
możemy poddać obróbce każdy z nich, a następnie połączyć je
w jeden film.
Clip1=AVISource("C:\filmy\plik.avi")
Clip2=DirectShowSource("C:\filmy\plik.mkv")
Clip2=Tweak(Clip2,bright=30) # rozjaśnienie obrazu
Clip1=AssumeFPS(Clip1,25,true) # przyspieszenie do 25 FPS
Clip1=SSRC(Clip1,44100,false) # resampling dźwięku
Clip1=LanczosResize(Clip1,512,384) # zmiana rozmiaru do 512x384
Clip=AlignedSplice(Clip1,Clip2) # połączenie obu klipów
Return Clip
Ten skrypt otworzy plik C:\filmy\plik.avi jako Clip1,
zaś C:\filmy\plik.mkv jako Clip2.
Ponieważ filmy różnią się rozdzielczością i prędkością
klatkową, Clip1 jest przyspieszony do 25 FPS
funkcją AssumeFPS() (dźwięk jest przywracany do
częstotliwości próbkowania 44.1 kHz funkcją SSRC())
i przeskalowany do rozdzielczości 512x384 funkcjąLanczosResize().
Z kolei Clip2 jest rozjaśniany funkcją Tweak().
Funkcja AlignedSplice() łączy oba filmy.
Montaż
W AviSynth możemy również dokonać
montażu fragmentów jednego lub kilku filmów.
Funkcja ta jest ważna, gdy chcemy na przykład wyciąć reklamy z filmu
nagranego z telewizji. Przypuśćmy, że program przechwytujący podzielił
film na dwa pliki: C:\filmy\plik1.avi i C:\filmy\plik2.avi
(dzieje się tak podczas przechwytywania na partycje FAT32). Pliki mają
odpowiednio 24.997 i 25.002 FPS (takie wahania prędkości klatkowej są
spotykane w materiałach przechwyconych z analogowego
źródła). Możemy się posłużyć takim skryptem:
Clip1=AVISource("C:\filmy\plik1.avi")
Clip2=AVISource("C:\filmy\plik2.avi")
Clip1=AssumeFPS(Clip1,25,true)
Clip1=SSRC(Clip1,44100,false)
Clip2=AssumeFPS(Clip2,25,true)
Clip2=SSRC(Clip2,44100,false)
Clip1=Trim(Clip1,100,5000)++Trim(Clip1,6000,10000)++Trim(Clip1,12000,15000)
Clip2=Trim(Clip2,0,3000)++Trim(Clip2,4500,9000)++Trim(Clip2,10500,13000)
Clip=LanczosResize(Clip,512,384)
Clip=Clip1++Clip2
Return Clip
Funkcja Trim(X,Y) wycina z klipu fragment
rozpoczynający się klatką X i kończący się klatką Y.
W naszym przykładzie w Clip1 zawiera reklamy w
przedziałach klatek 5001-5999 i 10001-11999, zaś Clip2
w przedziałach 3001-4499 i 9001-10499.
Uzyskiwanie informacji o filmie
Aby uzyskać informacje o klipie generowanym przez nasz skrypt,
dopisujemy na jego końcu funkcję Info(), na
przykład:
Clip1=AVISource("C:\filmy\plik1.avi")
Clip2=AVISource("C:\filmy\plik2.avi")
Clip1=AssumeFPS(Clip1,25,true)
Clip1=SSRC(Clip1,44100,false)
Clip2=AssumeFPS(Clip2,25,true)
Clip2=SSRC(Clip2,44100,false)
Clip1=Trim(Clip1,100,5000)++Trim(Clip1,6000,10000)++Trim(Clip1,12000,15000)
Clip2=Trim(Clip2,0,3000)++Trim(Clip2,4500,9000)++Trim(Clip2,10500,13000)
Clip=LanczosResize(Clip,512,384)
Clip=Clip1++Clip2
Clip=Info(Clip)
Return Clip
Informacje o klipie są nadrukowane na klatkę.
Poniżej omówiono znaczenie poszczególnych
linijek:
Frame - numer aktalnej klatki
ColorSpace - przestrzeń kolorów
(AviSynth obsługuje YV12, YUY2,
RGB32 i RGB24)
Width - szerokość (rozdzielczość pozioma)
klatki
Height - wysokość (rozdzielczość pionowa)
klatki
Frames per second - ilość klatek na
sekundę (prędkość klatkowa)
FieldBased (Separated) Video - czy obraz
zawiera rozdzielone (YES), czy splecione (NO)
półobrazy
Parity - "parzystość" klipu, tzn.
który półobraz jest wcześniejszy (Asuming
Top Field First - górny półobraz, Assuming
Bottom Field First - dolny półobraz)
Has Audio - czy plik zawiera ścieżkę
dźwiękową (YES - tak, NO - nie)
Audio Channels - ilość kanałów
w ścieżce dźwiękowej
Sample Type - rodzaj próbek
dźwięku (Integer 8 bit - całkowite 8-bitowe, Integer
16 bit - całkowite 16-bitowe, Integer 24 bit
- całkowite 24-bitowe, Integer 32 bit - całkowite
32-bitowe, Float - rzeczywiste)
Samples Per Second - ilość
próbek dźwięku na sekundę (częstotliwość
próbkowania dźwięku)
CPU detected - wykryte zestawy instrukcji
procesora
Dodatek: Obsługa MPEG-1 i MPEG-2
Aby załadować do AviSynth film skompresowany w MPEG-1
(VideoCD i DVD) lub MPEG-2
(Super VideoCD i DVD), możemy
posłużyć się pakietem DGMPGDec autorstwa Donalda
Grafta. Składa się on z dwóch części: wtyczki do AviSynth
pod nazwą dgdecode.dll i programu DGIndex.
Wtyczka dgdecode.dll dekoduje strumień wideo MPEG-1
lub MPEG-2 posługując się informacjami z pliku *.d2v
stworzonego przez DGIndex. Teraz omówimy
krok po kroku proces otwierania plików przy pomocy pakietu DGMPGDec.
1. Uruchom program DGIndex.
2. Z głównego menu
programu wybierz File -> Open.
3. W oknie otwierania
plików zaznacz kliknięciem pierwszy plik MPEG
i kliknij przycisk Otwórz.
4. Jeśli chcesz załadować
sekwencję plików MPEG (np. kilka
plików *.vob zripowanych z płyty DVD),
kliknij przycisk ADD i dodaj kolejny plik podobnie
jak w punkcie 3. W razie
potrzeby powtórz operację.
5. Kliknij przycisk OK.
6. Jeśli chcesz wydzielić
dźwięk z plików *.vob do osobnego pliku,
wybierz Audio -> Output Method -> Demux All
Tracks z menu programu.
7. Z głównego menu
wybierz File -> Save Project.
8. W oknie zapisu pliku wskaż
adres pliku projektu *.d2v i kliknij przycisk Zapisz.
9. Napisz skrypt postaci:
LoadPlugin("ścieżka_do_wtyczki\dgdecode.dll")
MPEG2Source("ścieżka_do_projektu\projekt.d2v")
Artykuł dostępny jest również w formie dokumentu PDF
Aby ściągnąć plik skorzystaj z menu kontekstowego myszy i opcji Zapisz element docelowy jako... |
| |
|
|
| Poprzedni | Następny
|
|