Tutorial für die Videobearbeitung mit AVISynth LPer Spezifisch

  • Hm glaube das nützt mir nicht viel ^^
    beide videos sind von der [lexicon]Auflösung[/lexicon] gleich groß und würden dann ja 1:1 aufeinanderliegen. Erst durch das croppen sieht man dann ja 2videos
    Also das manuelle croppen ist ja jetzt nicht so schwer - wüsste jetzt auch nicht wie man sowas auch realisieren könnte :P

  • Vermutlich Desktopaufnahme wo du die Cam aufnimmst?


    Wie auch immer... wenn die Cam auf der großen Aufnahme eine feste Position jedesmal hat + die gleiche [lexicon]Auflösung[/lexicon], dann werden die Cropwerte wohl jedesmal identisch sein.


    Müssteste aber selbst für sorgen das es so ist.
    Ansonsten ist das wirklich ein Ratespiel. Kein Programm der Welt kann ein Bild im Bild erkennen und automatisch auf das innere Bild croppen. Einfach weil man nicht wissen kann was von dem Gesamtbild nun zu dem Bild und zu dem anderen Bild gehört. Ist genauso als würdeste versuchen wollen aus Bild Unikaten immer den gleichen Bereich rauszuschneiden. Bekommste immer was anderes.
    Aber aus nem Bild Fabrikat wo jedes Bild gleich ist (gleiche größe) kannst du aus jedem Bild den gleichen Bereich rausschneiden und bekommst immer das was du haben wolltest ^^


    Gibt ja denke ich genung Programme die Fenster/Programme mit einheitlicher Größe und Position aufrufen können.


    Ansonsten seperat aufnehmen wenn es geht. Mir war glaube ich so das der [lexicon]Afterburner[/lexicon] sich in mehrere Programme gleichzeitig hooken kann und mehrere Aufnahmen gleichzeitig erlaubt.

  • Es sind 2videoaufnahmen von dem gleichen Spiel, welche aber nebeneinader ablaufen sollen - da will ich von der ur-aufnahme rechts und links soweit das unnötige wegschneiden, das beides gut passt


    Ja das meinte ich ja :P unmöglich programmiermäßig - deswegen mach ichs einfach von hand mit nem crop befehl

  • Ich glaub ich bin ma wieder zu doof für [lexicon]avisynth[/lexicon] :D


    Ich will die Subtitles auch noch ausgeben lassen - nachdem ich ja die 3videoquellen mit return verknüpfen muss damit sie nacheinander ausgegeben werden, krieg ich die subtitles nichmehr rein ._.



    Kann mir wer n [lexicon]Avisynth[/lexicon] Pro helfen? x3

  • Dann überleg mal warum das nicht geht? ^^


    1. Lass dieses dämliche Return weg. Das ist A) für Funktionen gedacht oder B) um mehrere AVS Verschachtlungen durchzuführen und die Variablen davor nicht gelten sollen.


    2. Quelle 1 bis 3 werden zuerst verknüpft und dann erst wird der Untertitel draufgepackt.

    Code
    Quelle = Quelle1 + Quelle2 + Quelle3
    Quelle.Subtitle ("XYZ #1", 1000, 150, 20, 100, "Comic Sans MS" , 180, $FFFFFF)


    Oder so:

    Code
    Last = Quelle1 + Quelle2 + Quelle3
    Subtitle (Last, "XYZ #1", 1000, 150, 20, 100, "Comic Sans MS" , 180, $FFFFFF)


    Oder so:

    Code
    Quelle1 + Quelle2 + Quelle3
    Last.Subtitle ("XYZ #1", 1000, 150, 20, 100, "Comic Sans MS" , 180, $FFFFFF)


    Oder so:

    Code
    Quelle1 + Quelle2 + Quelle3
    Subtitle ("XYZ #1", 1000, 150, 20, 100, "Comic Sans MS" , 180, $FFFFFF)


    Oder so:

    Code
    Last = Quelle1 + Quelle2 + Quelle3
    Subtitle ("XYZ #1", 1000, 150, 20, 100, "Comic Sans MS" , 180, $FFFFFF)


    Wie du das machst... liegt ganz bei dir. Ist alles das gleiche.


    Die Frage ist immer von wo bekommt er was. Die Subtitle Funktion ist Abhängig von einem Clip. Immer. Wenn da nix steht, dann nimmt er Last. Sprich den letzten Clip den er in Last gespeichert hat.

  • kann man innerhalb der subtitles dem Text noch eine farbige Umrandung geben? Oder kann [lexicon]avisynth[/lexicon] das nich? :c


    Du kannst extrem aufwändige subs machen wie du sie aus Anime Fan Sub Videos vllt kennst. Die nutzen dafür nämlich ebenfalls [lexicon]avisynth[/lexicon] ;)


    Das Programm dazu heißt Aegisub. Und das erstellt dir eine .ass Datei und die kann dann via [lexicon]Avisynth[/lexicon] genutzt werden :)


    Das sieht dann zb so aus:


    Code
    LoadPlugin("C:\Program Files (x86)\MeGUI\tools\avisynth_plugin\vsfilter-aegisub.dll") # die vsfilter von aegisub laden, da die gemoddet ist und somit mehr funktionen hat
    TextSub("eine_tolle_untertitel_datei\von_aegisub.ass", 1)


    Vor allem haste mit Aegisub dann ja auch eine [lexicon]GUI[/lexicon]. Das dürfte dir ja entgegen kommen ;)

  • So nicht mehr. Nein.
    Die nächste Variante für bessere Texte wäre wenn man externe Subtitles nehmen würde und via VSFilter einbindet.


    VOBSub z.B. hat den VSFilter Plugin für [lexicon]AVISynth[/lexicon] mit dabei.


    Die VSFiltermod wäre dann für Aegisub interessant, wenn man Texte animieren will wie bei Anime oder drehen, kippen etc. Danach kann man diese Subs in den AVS Skript mit einbinden lassen und ins Video einbrennen lassen samt Animationen.

  • Habe mir mal ein Script mit Hilfe des Internets gebastelt, mit dem ich die beiden Videos von meiner 3DS Aufnahme hinter ein Overlay, das ich erstellt habe bekomme.
    Ich könnte mir aber vorstellen, dass man das noch etwas eleganter lösen könnte und ich weiß nicht wirklich ob ich das mit dem SetMTmode so richtig verwendet habe.
    Das Script gibt mir das gewünschte Ergebnis, jedoch dauert der Encode fast 2 Stunden bei mir und das erreicht nicht mal Dark Souls 2 und ich denke das ist komplexer als Pokemon :P



    Code
    SetMTmode(1,2)
    Oben = AviSource("G:\Aufnahme\3ds_capture 2014-09-05 21-07-05-971.avi")
    Unten = AviSource("G:\Aufnahme\3ds_capture 2014-09-05 21-07-06-014.avi")
    bc = BlankClip(length=1, width=1920, height=1080, fps=25, color=$000000).Loop(Oben.framecount)
    Hintergrund = ImageSource("C:\Users\Daniel\Dropbox\Overlays\Pokemon X.png",0,0,25).Loop(Oben.framecount)
    a3 = ImageSource("C:\Users\Daniel\Dropbox\Overlays\Pokemon X.png",0,0,25,pixel_type="RGB32").ShowAlpha(pixel_type="RGB32").Loop(Oben.framecount)
    SetMTmode(3)
    NurOben = Overlay (bc,Oben,y=300,x=620)
    ObenUnten = Overlay (NurOben,Unten,y=650,x=0)
    Overlay (ObenUnten,Hintergrund,mask=a3)


    ~Edit~
    Das Script habe ich noch in [lexicon]Sagaras Scriptmaker[/lexicon] gepackt:

  • Mir gefällt das nich das du mehrfach MT einsetzt^^
    Des Weiteren gefällt mir nicht das du dafür 2 Scripte machst.


    Die Quellen kannste im Videoquellen bereich einfügen


    Code
    SetMTMode(3,2) # Sourcen mit Mode 3 einlesen.
    AVIload("G:\Aufnahme\Pokemon #55.avs", 2, 0, 0, -0, -0) # hier stattdessen die avi hin
    Oben = AviSource("G:\Aufnahme\3ds_capture 2014-09-05 21-07-05-971.avi")
    Unten = AviSource("G:\Aufnahme\3ds_capture 2014-09-05 21-07-06-014.avi")
    bc = BlankClip(length=1, width=1920, height=1080, fps=25, color=$000000).Loop(Oben.framecount)
    Hintergrund = ImageSource("C:\Users\Daniel\Dropbox\Overlays\Pokemon X.png",0,0,25).Loop(Oben.framecount)
    a3 = ImageSource("C:\Users\Daniel\Dropbox\Overlays\Pokemon X.png",0,0,25,pixel_type="RGB32").ShowAlpha(pixel_type="RGB32").Loop(Oben.framecount)


    Und die [lexicon]Filter[/lexicon] hier:


    Code
    ### Filter Verarbeitungszone ###
    SetMTMode(2)
    NurOben = Overlay (bc,Oben,y=300,x=620)
    ObenUnten = Overlay (NurOben,Unten,y=650,x=0)
    Overlay (ObenUnten,Hintergrund,mask=a3)
  • Hab es jetzt so übernommen wie du es geschrieben hast. Allerdings hab ich zum Schluss noch ein Spline100Resize(3200,1800) hinzugefügt und das ganze läuft jetzt nur noch mit einem Script ^^. Es läuft jetzt auch schon schneller :P
    Ich glaube ich sollte mir die MT modes mal genauer angucken ^^

  • Code
    Oben = AviSource("G:\Aufnahme\3ds_capture 2014-09-05 21-07-05-971.avi")
    Unten = AviSource("G:\Aufnahme\3ds_capture 2014-09-05 21-07-06-014.avi")
    bc = BlankClip(Oben.framecount, 1920, 1080, "YV12" , 25, color=$000000)
    Hintergrund = ImageSource("C:\Users\Daniel\Dropbox\Overlays\Pokemon X.png", 0, Oben.framecount, 25, pixel_type="RGB32")
    a3 = Hintergrund.ShowAlpha(pixel_type="RGB32")
    NurOben = Overlay (bc, Oben, 620, 300)
    ObenUnten = Overlay (NurOben, Unten, 0, 650)
    Overlay (ObenUnten, Hintergrund, 0, 0, a3)


    +



    Würde so besser laufen.


    [lexicon]SSM[/lexicon] richtig eingestellt hat im Endeffekt dann nur noch den Skalierer am Schluss.
    Ist so als würde man Spline100 direkt in die andere AVS einfügen. Mehr würde der [lexicon]SSM[/lexicon] ja auch nicht mehr machen.

  • wenn ich versuche das unten stehende Script zu laden werden bei mir nur die ersten 1000 Frames Geladen




    #videoladen


    LoadPlugin("C:\Users\User\Documents\Schnittpogramme\MeGUI_2418_x86\tools\ffms\ffms2.dll")
    v1 = FFVideoSource("E:\Kartoffel\video1.avi").AssumeFPS(30).crop(256,0,0,0).Lanczos4Resize(800,600)
    v2 = FFVideoSource("E:\Kartoffel\video2.avi").AssumeFPS(30).crop(0,0,256,0).Lanczos4Resize(264,198)
    bg = ImageSource("C:\Users\User\Pictures\test.jpg")
    #Bearbeiten


    a = Overlay (bg, v1, x=08, y=06, output="YV12")
    b = Overlay (a, v2, x=818, y=408, output="YV12").Spline64Resize(1280,720)
    return b


    Ich weiß nicht was ich falsch gemacht haben könnte nur dass es weder mit [lexicon]MeGui[/lexicon] noch mit [lexicon]Avidemux[/lexicon] funktioniert
    Aufgenommen habe ich Mit Loilo Game recorder (Mpeg)

  • Du gibst die Länge des Bildes nicht an, daher ist das so kurz. Du musst es entweder der Länge von v1 oder v2 anpassen.
    Und das Return unten kannste dir schenken ^^


    Indexiere mit FFMS2 lieber anständig. Oder noch besser... nimm nicht in MPEG auf. MPEG ist Verlustbehaftet und Verlustmaterial ist immer blöd. Gerade wenn es in [lexicon]AVISynth[/lexicon] rein kommen soll.


    Für dein Problem jetzt, hier ne Abgeänderte Variante die funktionieren sollte:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!