AviSynth

AviSynth
Deweloperzy Twórcy AviSynth, społeczność Doom9
Pierwsze wydanie 19 maja 2000 ; 22 lata temu ( 19.05.2000 )
Wersja stabilna 3.7.2 (AviSynth+) (17 marca 2022 ; 11 miesięcy temu ( 17.03.2022 ) )
Wersja podglądu 3.7.2 (17 marca 2022 ; 11 miesięcy temu ( 17.03.2022 ) )
Magazyn
Napisane w C++ , montaż
System operacyjny Windowsa , Linuksa , macOS
Platforma x86 i x86-64
Typ Cyfrowy serwer klatek wideo
Licencja GNU GPL
Strona internetowa www.avisynth.nl _ _

AviSynth to program serwera ramek dla systemów Microsoft Windows , Linux i macOS , początkowo opracowany przez Bena Rudiaka-Goulda, Edwina van Eggelena, Klausa Posta, Richarda Berga i Iana Brabhama w maju 2000 r., a później przejęty i utrzymywany przez społeczność open source, która jest nadal aktywna Obecnie. Jest to wolne oprogramowanie na licencji GNU GPL .

Skryptowy edytor wideo

AviSynth działa jako nieliniowy edytor wideo kontrolowany całkowicie przez skrypty (bez GUI ). Emuluje AVI (lub plik audio WAV ) widziany przez aplikację podrzędną VFW , która zazwyczaj jest odtwarzaczem multimedialnym , oprogramowaniem do edycji wideo lub koderem .

AviSynth opiera się na filtrach , które są bardzo podobne do filtrów DirectShow , ale mają inny interfejs binarny . Możliwości filtrów obejmują kadrowanie , usuwanie przeplotu , odwrotną telecine , pracę z obrazami nieruchomymi , podstawową korekcję kolorów , redukcję szumów wideo i wiele innych rzeczy. AviSynth wykonuje również tradycyjne związane z edycją wideo, takie jak wycinanie, przycinanie i ponowne sekwencjonowanie segmentów.

Rozważmy na przykład skrypt „myAvi.avs” (zwykły plik tekstowy zapisany z rozszerzeniem „avs”)

AviSource("myAvi.avi") Crop(0, 0, 320, 240) Blur(0.1)

Ten plik skryptu można otworzyć w większości odtwarzaczy multimedialnych (takich jak Windows Media Player ). Program odtworzy plik wideo „myAvi.avi” przycięty do lewego górnego rogu o wymiarach 320 pikseli i nieznacznie rozmyty. Operacje odbywają się w kolejności sekwencyjnej, więc najpierw następuje kadrowanie, a następnie rozmycie.

Technicznie rzecz biorąc, AviSynth konstruuje wykres filtru (podobnie jak Microsoft GraphEdit , ale z dodatkowymi możliwościami), kontrolowany przez skrypty napisane w języku skryptowym AviSynth . Jego funkcjonalność można rozszerzyć za pomocą filtrów innych firm, zwanych wtyczkami . Zewnętrzna lista wtyczek jest utrzymywana w AviSynth Filter Collection .

AviSynth jest serwerem ramek – program wywołujący żąda ramek audio/wideo, a skrypt je obsługuje . Program wywołujący może wywoływać ramki w dowolnej kolejności, umożliwiając mu pauzę, przeskakiwanie do przodu lub do tyłu itp., tak jak w przypadku pliku fizycznego.

Język skryptowy AviSynth

Język skryptowy to język przepływu danych : paradygmat programowania opisujący ukierunkowany wykres danych przepływających między operacjami. Brakuje w nim pewnych proceduralnych struktur kontroli programowania, ale zawiera wiele funkcji znanych programistom, w tym zmienne , różne typy danych , wyrażenia warunkowe i złożone wyrażenia .

Język działa głównie z klipem audio/wideo jako wbudowanym typem danych. Klip to złożona struktura z wieloma atrybutami, takimi jak szerokość, wysokość i czas trwania. Język ma również kilka innych bardziej standardowych typów danych: int , float , bool i string . Można ich używać do wykonywania obliczeń, podejmowania decyzji i pisania tekstu, takiego jak napisy do filmu.

Skrypt ma pojedynczą wartość zwracaną , która jest dźwiękiem i obrazem „widzianym” przez program uruchamiający skrypt. Zwykle jest to ostatnia linia skryptu, ale w dowolnym miejscu można wstawić instrukcję return .

"Witaj świecie"

Ten przykład to program „Hello World” .

BlankClip() Subtitle("Witaj świecie!")

Jeśli powyższy tekst zostanie wpisany do pliku tekstowego z rozszerzeniem .avs, można go otworzyć w programie Windows Media Player lub dowolnym innym programie z poniższej listy , a wideo zawierające słowa „Witaj, świecie!” zostanie wyświetlone.

Funkcja BlankClip tworzy nowy film. Nawiasy na końcu słowa są opcjonalne, ponieważ żadne argumenty nie są przekazywane, ale w tym przypadku są podane, aby wskazać, że jest to funkcja, a nie zmienna.

Funkcja napisów rysuje słowa „Witaj, świecie!” na wcześniej utworzonym pustym filmie.

Chociaż obie funkcje akceptują o wiele więcej argumentów (na przykład kontrolowanie rozmiaru i długości pustego wideo oraz pozycjonowanie, czcionkę i kolor napisów), ten przykład je pomija; funkcje używają wbudowanych argumentów domyślnych.

Avisynth wykorzystuje cukier syntaktyczny , który znacznie ułatwia pisanie prostych skryptów: niejawną zmienną o nazwie Last . Bez zmiennych niejawnych powyższy skrypt musiałby być napisany w następujący sposób:

Last = BlankClip() Last = Last.Subtitle("Witaj świecie!") return Last

lub tak:

A = BlankClip() B = A.Subtitle("Witaj świecie!") return B

Jawne zmienne klipu są zwykle używane tylko w przypadku funkcji obejmujących więcej niż jeden klip:

A = BlankClip() B = A.Subtitle("Witaj, świecie!") return Rozpuść(A, B, 30) # 30-klatkowe przenikanie

Przetwarzanie wideo

Ten przykład pobiera rzeczywiste wideo, stosuje proste przetwarzanie i zwraca je na wyjście.

AviSource("C:\Przykład.avi") ReduceBy2() GreyScale()

Funkcja AviSource służy do ładowania wideo AVI z rzeczywistej lokalizacji. Aby otworzyć inne typy multimediów, zamiast tego można użyć funkcji DirectShowSource . ReduceBy2 dzieli pionowy i poziomy rozmiar wideo na pół, a GreyScale usuwa wszystkie informacje o kolorach.

Filtry AviSynth działają w wielu przestrzeniach kolorów RGB i YUV , umożliwiając wszelkiego rodzaju wejścia i wyjścia wideo. Niektóre funkcje działają tylko w określonych przestrzeniach kolorów i wymagają konwersji — na przykład większość filmów jest dystrybuowana w przestrzeni kolorów YUV , ale większość korekcji kolorów odbywa się w jednej z przestrzeni RGB . Skrypt korygujący kolory może wyglądać tak:

DirectShowSource("movie.mp4") # Przestrzeń kolorów YV12 ConvertToRGB32 RGBAdjust(1.0, 0.95, 1.0) # Zmniejsz kanał zielony ConvertToYV12

Określony przez użytkownika

Język skryptowy AviSynth pozwala użytkownikom definiować własne funkcje.

To jest przykład funkcji, która pozwala przechodzić z jednego klipu do drugiego bez uszkadzania przeplotu.

clip1 = AVISource("video1.avi") clip2 = AVISource("video2.avi") # wywołaj zdefiniowaną przez użytkownika funkcję zdefiniowaną poniżej: interlaced_dissolve(clip1, clip2, 30) # ...skrypt zwraca powyższy wynik do programu wywołującego # funkcja zdefiniowana przez użytkownika: # rozpuszczanie od klipu1 do klipu2 na 30 klatkach function interlaced_dissolve(clip clip1, clip clip2, int iter) { clip1 = clip1.SeparateFields evn1 = clip1.SelectEven nieparzyste1 = clip1.SelectOdd clip2 = clip2 .SeparateFields evn2 = clip2.SelectEven nieparzyste2 = clip2.SelectOdd evn = Dissolve(evn1, evn2, iter) nieparzyste = Dissolve(nieparzyste1, nieparzyste2, iter) Interleave(evn, nieparzyste).Weave.DoubleWeave.SelectOdd # ...funkcja zwraca powyższy wynik do głównego skryptu }

AviSynth 3.0 i AviSynth+

AviSynth 3.0 był całkowitym przepisaniem AviSynth 2.x i miał na celu przezwyciężenie ograniczeń AviSynth 2.x. Dodanie ulepszeń, takich jak abstrakcyjny przestrzeni kolorów , w którym nowe przestrzenie kolorów (w tym dwie z 45-bitową głębią) mogą być obsługiwane przez mechanizm wtyczek, lepsze zarządzanie pamięcią podręczną w celu uzyskania lepszej wydajności oraz używanie języka Ruby zamiast używanego języka rodzimego w aktualnych wersjach.

AviSynth 3.0 miał być dostępny dla innych systemów operacyjnych niż Windows , zamiast polegać na GStreamer , rozszerzając wsparcie na platformy takie jak Linux , Mac OS X i BSD . Rozwój utknął w martwym punkcie od sierpnia 2007 roku.

Najnowszą i najnowocześniejszą wersją AviSynth jest AviSynth+ , pierwotnie fork oficjalnej wersji AviSynth 2.xx, ale od tego czasu AviSynth+ zyskał szerokie uznanie i stał się powszechnie stosowaną implementacją. Przepisał większość oryginalnego kodu AviSynth i wprowadził długo poszukiwane funkcje, takie jak obsługa 64-bitów , wielowątkowość , głębokie przestrzenie kolorów , obsługa najnowszych kompilatorów, nowe konstrukcje skryptowe (nowe konstrukcje przepływu sterowania, takie jak pętle) i zwiększona wydajność w wielu dziedzinach. Jednocześnie zachował 100% kompatybilność z serią AviSynth 2.5/2.6, zarówno w zakresie filtrów, jak i aplikacji hosta. W chwili pisania tego tekstu (2020-12) jest również aktywnie utrzymywany.

AviSynth dla systemów operacyjnych innych niż Windows

AviSynth 2.xx może być używany w systemach operacyjnych innych niż Windows za pomocą Wine . Do pracy na skryptach VirtualDub / VirtualDubMod można używać tak jak w systemie Windows. Aby połączyć AviSynth pod Wine i na przykład FFmpeg działający na hoście Linux, można użyć Avs2YUV. Avs2YUV to systemu Windows , który jest uruchamiany pod Wine i renderuje wyjście skryptu AviSynth na standardowe wyjście , które jest następnie przesyłane do FFmpeg. Avs2YUV obsługuje również zapis do nazwanego potoku .

Istnieje port Linux AviSynth o nazwie AvxSynth.

Programy kompatybilne z AviSynth

Nazwa programu Licencja Uwagi Strona główna
Adobe Premiere Pro Własny, komercyjny Wersje 6.0 i nowsze (do CS4 włącznie) mają dostępną wtyczkę importującą AviSynth. Premierowa wtyczka do importu AviSynth
GUI Avanti Zastrzeżony, darmowy Avanti GUI to darmowy interfejs dla FFmpeg z opcją wstawienia AviSynth jako preprocesora. GUI Avanti
AvsPmod GPL AvsPmod to edytor skryptów AviSynth z wbudowanym odtwarzaczem, podświetlaniem składni i autouzupełnianiem kodu. AvsPmod
Koder Cinema Craft Prawnie zastrzeżony Cinema Craft Encoder to komercyjny koder MPEG-2 obsługujący wejście AviSynth. Rzemiosło kinowe
FFmpeg LGPL2.1+, GPL2+ FFmpeg skompilowany dla systemu Windows może odbierać dane wejściowe AviSynth instrukcje
Odtwarzacz GOM Zastrzeżone, darmowe, obsługiwane przez reklamy może odtwarzać pliki .avs
Media Player Classic GPL Media Player Classic może ładować i odtwarzać skrypty AviSynth. Wymagana jest wersja 32-bitowa. Media Player Classic
Koder wyrażeń firmy Microsoft Własność, freemium Microsoft Expression Encoder może importować i transkodować pliki .avs.
MPlayer GPL MPlayer może odtwarzać pliki .avs
Pakiet multimedialny Nero Własny, komercyjny Nero Showtime może odtwarzać pliki avs
SUPER Zastrzeżone, darmowe, obsługiwane przez reklamy SUPER (Simplified Universal Player, Encoder and Renderer) to darmowe oprogramowanie firmy eRightSoft, które może kodować większość popularnych formatów wideo i ma pełną obsługę AviSynth. SUPER
TMPGEnc Oprogramowanie typu shareware/freeware TMPGEnc to darmowy koder MPEG-1 i MPEG-2. TMPGEnc Plus i TMPGEnc Express to komercyjne wersje TMPGEnc, które obejmują ulepszoną funkcjonalność, a także usunięcie 30-dniowego ograniczenia kodowania MPEG-2 obecnego w TMPGEnc. Pegasys Inc.
Całkowity konwerter wideo Zastrzeżone, wersja próbna Total video converter ma dostępną wtyczkę importującą AviSynth. Całkowity konwerter wideo
VirtualDub GPL VirtualDub to szeroko stosowany uniwersalny konwerter wideo. VirtualDub
VirtualDubMod GPL VirtualDubMod zawiera kilka funkcji specyficznych dla AviSynth, takich jak wyraźna obsługa skryptów AviSynth, edytor skryptów AviSynth i wiele innych. Jednak nie był aktualizowany od 2006 roku i zawiera wiele błędów. VirtualDubMod
Windows Media Player Własność, składnik systemu Windows / freeware Windows Media Player może ładować i odtwarzać skrypty AviSynth, więc jest dobrym wyborem do prostego odtwarzania i testowania. Może wymagać pewnych poprawek w rejestrze, aby działał. Windows Media Home

Ponadto stworzono kilka programów, które akceptują tylko skrypty AviSynth jako dane wejściowe - upraszczając w ten sposób same programy, ale dając użytkownikom pełną moc AviSynth do wprowadzania danych.

Istnieje również kilka aplikacji do kodowania wsadowego, które łączą AviSynth z koderami i mukserami audio i wideo z wiersza poleceń, aby zapewnić wszechstronną, modułową, konfigurowalną aplikację do kodowania wideo. MeGUI jest przykładem tego rodzaju aplikacji.

Chociaż skrypty AviSynth mają być łatwo otwierane w prostych programach do edycji tekstu, istnieje kilka edytorów przeznaczonych specjalnie do edycji skryptów AviSynth, takich jak AvsPMod .

Zobacz też

Linki zewnętrzne