AviSynth

AviSynth
Utvecklare AviSynth-utvecklare, Doom9 -communityt
Initial release 19 maj 2000 ; 22 år sedan ( 2000-05-19 )
Stabil frisättning 3.7.2 (AviSynth+) (17 mars 2022 ; 11 månader sedan ( 2022-03-17 ) )
Förhandsgranska release 3.7.2 (17 mars 2022 ; 11 månader sedan ( 2022-03-17 ) )
Förvar
Skrivet i C++ , montering
Operativ system Windows , Linux , macOS
Plattform x86 och x86-64
Typ Digital video frameserver
Licens GNU GPL
Hemsida www .avisynth .nl

AviSynth är ett ramserverprogram för Microsoft Windows , Linux och macOS som ursprungligen utvecklades av Ben Rudiak-Gould, Edwin van Eggelen, Klaus Post, Richard Berg och Ian Brabham i maj 2000 och senare plockades upp och underhålls av open source-gemenskapen som fortfarande är aktiv Nu för tiden. Det är fri programvara under GNU GPL- licens.

Videoredigerare för skript

AviSynth fungerar som en icke-linjär videoredigerare som helt kontrolleras av skript (utan ett GUI ). Den emulerar en AVI- videofil (eller WAV -ljudfil) som ses av VFW- nedströmsapplikationen, som vanligtvis är en mediaspelare , videoredigeringsprogram eller en kodare .

AviSynth bygger på filter , som är ungefär som DirectShow-filter , men med ett annat binärt gränssnitt . Filterfunktionerna inkluderar beskärning , deinterlacing , omvänd telecine , arbeta med stillbilder , göra grundläggande färggradering , reducera videobrus och många andra saker. AviSynth utför också traditionella videoredigeringsuppgifter som att klippa, trimma och sekvensera om segment.

Tänk till exempel på skriptet "myAvi.avs" (bara en vanlig textfil sparad med tillägget "avs")

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

Denna skriptfil kan öppnas i de flesta mediaspelare (som Windows Media Player) . Programmet kommer att spela upp videofilen "myAvi.avi" beskuren till dess övre vänstra 320 pixlar gånger 240 pixlar och suddig en liten mängd. Åtgärder sker i sekventiell ordning, så beskärningen sker först och sedan suddningen.

Tekniskt sett konstruerar AviSynth ett filterdiagram (som Microsoft GraphEdit men med extra funktioner), kontrollerat av skript skrivna i skriptspråket AviSynth . Dess funktionalitet kan utökas genom användning av tredjepartsfilter som kallas plugins . En extern plugin-lista upprätthålls på AviSynth Filter Collection .

AviSynth är en frameserver – det anropande programmet begär ljud-/videoramar och skriptet betjänar dem. Det anropande programmet kan anropa ramar i valfri ordning, så att det kan pausa, hoppa framåt eller bakåt etc., precis som med en fysisk fil.

AviSynth skriptspråk

Skriptspråket är ett dataflödesspråk : ett programmeringsparadigm som beskriver en riktad graf över data som flödar mellan operationer. Den saknar vissa kontrollstrukturer för procedurprogrammering , men den innehåller många funktioner som är bekanta för programmerare, inklusive variabler , distinkta datatyper , villkor och komplexa uttryck .

Språket fungerar i första hand med ljud/videoklippet som en inbyggd datatyp. Klippet är en komplex struktur med många attribut som bredd, höjd och varaktighet. Språket har även flera andra mer standarddatatyper: int , float , bool och string . Dessa kan användas för att utföra beräkningar, beslut och skriva text som till exempel undertexter till videon.

Skriptet har ett enda returvärde , vilket är ljudet och videon som "setts" av programmet som kör skriptet. Detta är normalt den sista raden i skriptet, men en retursats kan infogas när som helst.

"Hej världen"

Det här exemplet är ett "Hello World"-program .

BlankClip() Subtitle("Hej världen!")

Om texten ovan skrivs in i en textfil med filtillägget .avs kan den öppnas i Windows Media Player eller något av de andra programmen i listan nedan och en video som innehåller orden "Hello, world!" kommer att visas.

Funktionen BlankClip skapar en ny video. Parenteserna i slutet av ordet är valfria, eftersom inga argument skickas, men ges i detta fall för att indikera att det är en funktion och inte en variabel.

Undertextfunktionen ritar orden "Hej, värld! " ovanpå den tidigare skapade tomma videon.

Även om båda funktionerna båda accepterar många fler argument (till exempel att styra storleken och längden på den tomma videon och placeringen, teckensnittet och färgen på undertexten), utelämnar detta exempel dem; funktionerna använder inbyggda standardargument.

Avisynth använder syntaktisk socker som gör enkla skript mycket lättare att skriva: en implicit variabel som heter Last . Utan implicita variabler skulle ovanstående skript behöva skrivas så här:

Last = BlankClip() Last = Last.Subtitle("Hej, värld!") returnerar Last

eller så här:

A = BlankClip() B = A.Subtitle("Hej, värld!") returnerar B

Explicita klippvariabler används normalt bara för funktioner som involverar mer än ett klipp:

A = BlankClip() B = A.Subtitle("Hej, värld!") return Dissolve(A, B, 30) # 30-frames cross fade

Videobearbetning

Det här exemplet tar en verklig video, tillämpar en del enkel bearbetning och returnerar den till utgången.

AviSource("C:\Example.avi") ReduceBy2() GreyScale()

AviSource - funktionen används för att ladda en AVI-video från en riktig plats. För att öppna andra mediatyper DirectShowSource- funktionen användas istället. ReduceBy2 delar upp videons vertikala och horisontella storlek på mitten och GreyScale tar bort all färginformation.

AviSynth-filter fungerar i många RGB- och YUV - färgrymder för att tillåta alla typer av videoinmatning och -utgång. Vissa funktioner fungerar bara på specifika färgrymder , som kräver konvertering – till exempel distribueras de flesta videor i en YUV- färgrymd, men de flesta färgkorrigeringar görs i ett av RGB -utrymmena. Ett färgkorrigerande skript kan se ut så här:

DirectShowSource("movie.mp4") # YV12 färgrymd ConvertToRGB32 RGBAdjust(1.0, 0.95, 1.0) # minska Grön kanal ConvertToYV12

Användardefinierad

Skriptspråket AviSynth tillåter användare att definiera sina egna funktioner.

Detta är ett exempel på en funktion som låter dig lösa upp från ett klipp till ett annat utan att skada sammanflätade linjer.

clip1 = AVISource("video1.avi") clip2 = AVISource("video2.avi") # anropa den användardefinierade funktionen som definieras nedan: interlaced_dissolve(clip1, clip2, 30) # ...skriptet returnerar ovanstående resultat till det anropande programmet # användardefinierad funktion: # lös upp från klipp1 till klipp2 över 30 ramar funktion interlaced_dissolve(klipp klipp1, klipp klipp2, int iter) { klipp1 = klipp1.SeparateFields evn1 = klipp1.VäljJämn udda1 = klipp1.Välj klipp2 klipp2 =Välj Udda klipp .SeparateFields evn2 = klipp2.VäljJämn udda2 = klipp2.VäljOdd evn = Dissolve(evn1, evn2, iter) udda = Dissolve(udda1, udda2, iter) Interleave(evn, udda).Weave.DoubleWeave.Select functionOdd returnerar resultatet ovan till huvudskriptet }

AviSynth 3.0 och AviSynth+

AviSynth 3.0 var en fullständig omskrivning av AviSynth 2.x, och syftade till att övervinna begränsningarna med AviSynth 2.x. Lägga till förbättringar som en abstrakt färgrymdsmodell , där nya färgrymder (inklusive två med 45-bitars djup) kan stödjas genom en plug-in-mekanism, bättre cachehantering för bättre prestanda och använda Ruby snarare än det hemmagjorda språket som används i nuvarande versioner.

AviSynth 3.0 skulle vara tillgängligt för andra operativsystem än Windows , istället förlita sig på GStreamer , vilket utökade stödet till plattformar som Linux , Mac OS X och BSD . Utvecklingen har stannat av sedan augusti 2007.

Den mest aktuella och moderna versionen av AviSynth idag är AviSynth+ , ursprungligen en gaffel av den officiella AviSynth 2.xx, men AviSynth+ har sedan dess fått ett brett erkännande och har blivit den bästa implementeringen. Den skrev om det mesta av den ursprungliga AviSynth-koden och introducerade eftertraktade funktioner som 64-bitars stöd , multithreading , djupa färgrymder , stöd för senaste kompilatorer, nya skriptkonstruktioner (nya kontrollflödeskonstruktioner som loopar) och ökad prestanda på många områden. Samtidigt behöll den 100 % kompatibilitet med AviSynth 2.5/2.6-serien, både för filter och värdapplikationer. I skrivande stund (2020-12) underhålls den också aktivt.

AviSynth för icke-Windows operativsystem

AviSynth 2.xx kan användas under andra operativsystem än Windows genom användning av Wine . För att arbeta med skript VirtualDub / VirtualDubMod användas som på Windows. För gränssnitt mellan AviSynth under Wine och till exempel FFmpeg som körs på en Linux-värd kan Avs2YUV användas. Avs2YUV är ett Windows kommandoradsprogram som körs under Wine och renderar utdata från ett AviSynth-skript till stdout som sedan skickas till FFmpeg. Avs2YUV stöder också skrivning till en namngiven pipe .

Det finns en Linux-port för AviSynth som heter AvxSynth.

AviSynth-kompatibla program

Program namn Licens Kommentarer Hemsida
Adobe Premiere Pro Proprietär, kommersiell Versioner 6.0 och senare (till och med CS4) har ett AviSynth-importplugin tillgängligt. Premiere AviSynth import plugin
Avanti GUI Proprietär, gratisprogram Avanti GUI är en gratis front-end för FFmpeg med möjlighet att infoga AviSynth som förprocessor. Avanti GUI
AvsPmod GPL AvsPmod är AviSynth-skriptredigerare med inbyggd spelare, syntaxmarkering och autokompletterande kod. AvsPmod
Cinema Craft Encoder Proprietär Cinema Craft Encoder är en kommersiell MPEG-2-kodare som stöder AviSynth-ingång. Cinema Craft
FFmpeg LGPL2.1+, GPL 2+ FFmpeg kompilerad för Windows kan ta emot AviSynth-ingång instruktioner
GOM-spelare Proprietär, gratisprogram, annonsstödd kan spela .avs-filer
Klassisk mediaspelare GPL Media Player Classic kan ladda och spela AviSynth-skript. 32-bitarsversionen behövs. Klassisk mediaspelare
Microsoft Expression Encoder Proprietär, freemium Microsoft Expression Encoder kan importera och omkoda .avs-filer.
MPlayer GPL MPlayer kan spela .avs-filer
Nero Multimedia Suite Proprietär, kommersiell Nero Showtime kan spela avs-filer
SUPER Proprietär, gratisprogram, annonsstödd SUPER (Simplified Universal Player, Encoder och Renderer) är gratisprogram från eRightSoft som kan koda de vanligaste videoformaten och har fullt AviSynth-stöd. SUPER
TMPGEnc Shareware/freeware TMPGEnc är en gratis MPEG-1- och MPEG-2-kodare. TMPGEnc Plus och TMPGEnc Express är kommersiella versioner av TMPGEnc som inkluderar förbättrad funktionalitet, såväl som borttagandet av en 30-dagarsbegränsning på MPEG-2-kodning som finns i TMPGEnc. Pegasys Inc.
Total videokonverterare Proprietär, testprogram Total video converter har en AviSynth import plugin tillgänglig. Total Video Converter
VirtualDub GPL VirtualDub är en allmänt använd videokonverterare för alla ändamål. VirtualDub
VirtualDubMod GPL VirtualDubMod innehåller flera AviSynth-specifika funktioner som explicit stöd för AviSynth-skript, en AviSynth-skriptredigerare och mer. Den har dock inte uppdaterats sedan 2006 och innehåller många buggar. VirtualDubMod
Windows mediaspelare Proprietär, komponent av Windows / gratisprogram Windows Media Player kan ladda och spela AviSynth-skript, så det är ett bra val för enkel uppspelning och testning. Det kan kräva vissa registerjusteringar för att få det att fungera. Windows Media Home

Dessutom har flera program nu skapats som endast accepterar AviSynth-skript som input - vilket förenklar själva programmen men ger användarna full kraft av AviSynth för input.

Det finns också flera batch-kodningsapplikationer som knyter ihop AviSynth med kommandoradsljud- och videokodare och muxers för att tillhandahålla en allt-i-ett, modulär, anpassningsbar videokodningsapplikation. MeGUI är ett exempel på denna typ av applikation.

Även om AviSynth-skript är avsedda att enkelt öppnas i enkla textredigeringsprogram, finns det flera redigerare avsedda speciellt för redigering av AviSynth-skript som AvsPMod .

Se även

externa länkar