Tutorial für die Videobearbeitung mit AVISynth LPer Spezifisch

  • Das es ehr genau geht weiß ich und kann nur momentan dazu keine genaueren Angaben machen, das müsste ich dann sehen und auch ein wenig probieren.


    Mit meinem aktuellen Skript habe ich es noch nicht probiert, da du ja an diesem viel geschrieben hast. Mit Overlay selbst habe ich schon mal das ein oder andere Probiert.
    Mein Unwissen fängt leider schon dabei an genau zu definieren, dass es am Ende erst kommen soll. Benötige ich dazu die genauen [lexicon]Frame[/lexicon] angaben?



    So weit für das Overlay, jetzt müsste noch die Blendenfunktion mit eingebracht werden, wo ich ja bereits eine in meinem anderen Script besitze. Das hatte ich aber auch nur bedingt verstanden ;-)



    Um jetzt zu deiner Frage zu bekommen bezüglich den Gedanken machen... ja die habe ich mir gemacht, aber an der Umsetzung scheitert es schon bei Grundlegenden dingen. Deswegen auch hier der Hilfeaufruf.

  • Du brauchst im Endeffekt nur dein Hauptvideo verlängern mit einem Standbild ^^


    Hmm... wie soll ich das am besten erklären? Also dein Skript für dein richtiges Video ist ja denke ich schon mal fertig. Und du weißt auch die FPS deines neuen Videos in AVISynth. Farbraum etc.


    Wenn du das weißt, kannst du weiter machen indem du dein Video verlängerst um x Frames ^^


    Sagen wir mal 2 Minuten noch dran hängen. Das sind 120 Sekunden
    Dein Video hat Beispielsweise mal 30FPS


    Dann ergibt sich die neue Framelänge die dazu kommen soll aus 120 * 30 = 3600


    Also ladest du erst mal ein Bild mit ImageSource wie gewohnt. Nur das du es gleich an dein Hauptvideo dranhängst.
    Das bedeutet: dein neues Bild muss die gleiche [lexicon]Auflösung[/lexicon], die gleiche FPS und den gleichen Farbraum wie dein Video davor besitzen.


    Mal angenommen das ist dein Video und das möchtest du verlängern, dann steht schon fest das die [lexicon]Auflösung[/lexicon] 2048x1152 ist und die FPS 30 sind.
    Farbraum denke ich mal RGB32, da du ja schon mit Masken arbeitest wegen der Blende.


    Jetzt fügst du einfach ein zu deinem Grundvideo ein Bild um 3600 Frames hinzu, achte auf die neuen Zeilen im Skript:


    Damit haste erst mal verlängert um 2 Minuten mit dem neuen Bild ^^


    Jetzt brauchste nur noch deine Blende zu verwenden ;D
    Da du für die Videos keine Masken hast, kann man sich eine erstellen lassen.


    Also du nimmst für die Blendfunktion für deine Videos wie gewohnt und gibst für die Maske einfach


    Video2.Levels(255,10,255,255,255,false) ein ^^


    Dabei ist Video2 die Variable mit der du das zweite Video geladen hast ^^

  • Danke dafür, hab leider momentan nicht so viel Zeit das ganze auszuprobieren. Melde mich aber noch einmal ob es Funktioniert hat oder wenn es Probleme gibt ;-)

  • Ich habe für EUCH hier und jetzt etwas zusammengestellt, das euch interessieren dürfte. Weil was macht man bei Videos sehr oft? Richtig Blendfunktionen noch nutzen.


    Wie das sehr Professionell geht in AVISynth zeig ich euch mal anhand dieses Videos hier erst mal:


    http://www.youtube.com/watch?v=YD2EPb1USBs


    Das alles macht eine einzige Blendfunktion, die ich immer wieder aufrufe. Ich hab sie euch hier in diesem Tutoral aufgebaut in einen der Beiträge ;D Schaut echt keiner drauf oder liest es mal. Geschweige das es ausprobiert wird.


    Ihr denkt, das Video da ist aus irgendwelchen anderen Videos entstanden? ;D Falsch. Das ganze Video was ihr oben seht ist einzig und allein aus 6 Bildern entstanden. Mehr nicht. 6 Stinknormale Bilder. Der Rest ist alles AVISynth.


    Um das euch auch zu beweisen und zu zeigen das es geht, gebe ich euch jetzt eines der Heavysten Beispiele in Sachen AVISynth.
    PS: Das Damespiel was ihr im Video gesehen habt, ist reines AVISynth. Bis auf die Figuren. Das sind 2 Bilder.


    Hier mal der Link für die Skripte: Blende Beispiel.7z


    Ich habe für euch im Ordner Plugins ein AVISynth Plugin hinterlegt mit meinen Skripten die hier so des öfteren gebraucht wurden und auch gefragt sind. Darunter auch die Blendfunktion.
    Eine Erklärung findet ihr in der SagaraS.avsi <- Plugin Datei. Einfach mit dem Texteditor öffnen.


    Das Skript "Dame Beispiel.avs" ist das Damespiel was nur auf AVISynth aufbaut.
    Das Skript "Blende Beispiel.avs" ist das oben gezeigte Video.


    Tüftelt euch das ein bisschen aus und probiert. Und wenn Fragen sein sollten, dann fragt.


    [lexicon]MeGUI[/lexicon] und AVISynth. Mehr braucht ihr gar nicht eigentlich. Höstens noch [lexicon]Audacity[/lexicon]. Das ist alles Kostenlos. ;D

  • Vielen Dank erstmal, Sargaras. Ich hab mir jetzt die Tutorials zu dem BlankScreen, dem Overlay und dem Croppen angeschaut und ausprobiert.


    Allerdings hatte ich ein Problem bei dem Overlay. Du hast ja gleich zwei Fliegen mit einer Klappe geschlagen und DirectSource erklärt. Ich hab das zweite Video per DirectSource geladen, aber sobald es zum Resizen kam, hat er Ärger gemacht. Er hat die ganze Zeit behauptet, das Ausgangsvideo sei für diese Art des Resizen zu klein! Mein Video war 1024x890 groß und damit sicher nicht zu klein, um auf die Größe resized zu werden!


    Als ich dann das zweite Video ebenfalls per AVISource geladen habe, hat es einwandfrei geklappt....


    Da ich in der Regel sowieso mit AVIs arbeite, werde ich DirectShowSource nicht unbedingt brauchen, hab ich mir gedacht. Aber ich mache auch manchmal Aufnahmen von Konsolen, die als ts-Dateien rauskommen und da wäre DirectShowSource wohl schon eher angebracht.


    Ich würde einfach nur gern wissen, was das Problem von DirectShowSource war? Das Script sah genauso aus wie im Tutorial übrigens. Ich hab dann sogar die Rechnung, die erklärt wurde, noch auf meine [lexicon]Auflösung[/lexicon] von 1024x890 übertragen und die neuen Werte eingegeben, aber er hat weiterhin behauptet, das Ausgangsvideo sei zu klein gewesen.
    Die beiden Videos, die ein Overlay machen sollten, waren übrigens exakt gleich groß, da ich sie vom selben Emulator aufgenommen hatte.

  • TS oder [lexicon]MP4[/lexicon] Aufnahmen die via von einer Konsole über eine Capture Card kommen haben oft den Makel das diese in VFR (Variable Framerate) vorliegen. [lexicon]AVISynth[/lexicon] ist aber ein reines [lexicon]CFR[/lexicon] (Constant Framerate) [lexicon]Frameserver[/lexicon].


    Zudem wird DirectShowSource ledeglich nur noch für Notfälle benutzt und sollte weitesgehend vermieden werden. Für AVC Material bietet sich FFMpegSource2 an (FFMS2) oder aber auch der DGAVCIndexer. (Beide Plugins für [lexicon]AVISynth[/lexicon] sind bei [lexicon]MeGUI[/lexicon] mit dabei)


    Aber um auf TS und [lexicon]MP4[/lexicon] Aufnahmen mit VFR zurückzukommen. Das ist eine sehr komplizierte Sache, wenn man es dann mit [lexicon]AVISynth[/lexicon] direkt bearbeiten will. Für VFR braucht man nämlich exakte Timecodelisten. Bedeutet man braucht ein Tool was die VFR Aufnahme korrekt laden tut ohne Asynchronisation und Abweichungen der Länge um dann eine Timecodeliste zu erstellen. Anhand dieser Liste kann dann auch geladen werden mit korrekter FPS.


    VFR Aufnahmen haben oftmals das doppelte der FPS. Ein CFR Programm läd ein Video aber anhand der gegebenen FPS. Da diese ja falsch ist, wird das Video schon falsch geladen und kann somit Asynchron werden.


    Ich habe denke ich eine Methode gefunden wie man das ganze von VFR zu [lexicon]CFR[/lexicon] wandeln kann und auch erfolgreich bei kleineren Aufnahmen probiert. Jedoch noch nie bei längeren Aufnahmen von mehr als ner halben Stunde ^^


    Das ganze hab ich in diesem Beitrag aufgeschrieben: Sound und Video asynchron bei Avisynth


    Habe es aber wie gesagt noch nicht bei größeren Aufnahmen testen können.
    Hier das Plugin für [lexicon]AVISynth[/lexicon]: VFRtoCFR
    Das andere sollteste in dem angegebenen Thread auch finden.


    Leider hat bei ihm der TSMuxer nicht funktioniert, aus welchen Gründen auch immer. Aber dies war der Schlüssel bei meinen Testversuch.


    Für Gewöhnlich zeichnet man am besten in [lexicon]CFR[/lexicon] auf. Da es einfacher zu Handhaben ist ^^


    Ich würde einfach nur gern wissen, was das Problem von DirectShowSource war? Das Script sah genauso aus wie im Tutorial übrigens.


    Das Problem bei diesem Ladebefehl ist das es anhand deine [lexicon]FFDShow[/lexicon] [lexicon]Codec[/lexicon] Einstellung arbeitet. Oder mit anderem Worten deine DirectShow Codecs ;D Diese kannst du mit Sicherheit irgendwo einstellen bei dir. DirectShowSource nutzt einen externen Filter als Decodierer. Damit ist er sehr anfällig und kann nicht immer 1:1 von Rechner A nach B kopiert werden. Weil wie gesagt die [lexicon]Decoder[/lexicon] erst dazu eingestellt werden müssen, da er ein externen Filter verwendet. Das kann HaaliMedia Splitter sein oder [lexicon]FFDShow[/lexicon] etc.

  • Aha, ok. Das ist doch schon mal einleuchtend. Aber das muss ich mir alles in Ruhe vornehmen.


    Ich hab zwar eine Methode, die ts-Dateien in AVIs zu verwandeln, allerdings geht dabei ein guter Teil der Qualität flöten.


    P.S.
    Ich hab meine Capture Card so eingestellt, dass sie eine konstante Qualität halten soll. Das klingt, als ob es förderlich ist für das Bearbeiten mit AVISinth.
    Weiterhin habe ich den [lexicon]ffdshow[/lexicon] bei mir installiert. Ich hab den so eingestellt wie im [lexicon]MeGUI[/lexicon]-Tutorial vom CobraVerde.

  • Ich hab zwar eine Methode, die ts-Dateien in AVIs zu verwandeln, allerdings geht dabei ein guter Teil der Qualität flöten.


    Ja ne, solltest eher meiden. Es sei denn du benutzt verlustfreien Audio- und Videocodec dafür und kannst sicherstellen, das das Programm die .ts Datei synchron behandelt.


    Für Gewöhnlich zeichnet man am besten in [lexicon]CRF[/lexicon] auf. Da es einfacher zu Handhaben ist


    Bitte pass doch beim schreiben besser auf, das du es richtig schreibst, dann würde sowas:


    Ich hab meine Capture Card so eingestellt, dass sie eine konstante Qualität halten soll. Das klingt, als ob es förderlich ist für das Bearbeiten mit AVISinth.


    nicht entstehen.


    Denn du meinst CFR (constant framerate) und nicht [lexicon]CRF[/lexicon] (constant rate factor, [lexicon]x264[/lexicon] codiermodus)

  • Hallöchen.


    Ich hab mal eine Frage, ob die Art von Videobearbeitung, die mir vorschwebt, mit Avisinth möglich ist. Ich denke, es müsste klappen, bin mir aber nicht sicher, wie genau.


    Und zwar geht es mir um Spiele vom DS... wenn man die aufnimmt, sieht das ziemlich beknackt aus. Der Bildschirm ist langgezogen und man hat einen megafetten schwarzen Rand.


    Da kann es sich lohnen, dass ein bisschen schöner zu machen. Als Beispiel nehme ich mal ein Video vom werten Herrn Suoshimaru:


    https://www.youtube.com/watch?…z71R9mygznVM4vm3Duy11kNrO


    Er hat ein Hintergrundbild eingefügt, den wichtigen Bildschirm vergrößert und den unwichtigen Bildschirm in die Ecke gedrängt.


    Sowas müsste doch auch mit Avisinth möglich sein, oder?


    Wenn ja, was für Befehle kann man dazu nutzen?

  • Sowas ist in der Tat möglich. Die Frage besteht wie die Aufnahme aussieht?


    Wird der gesamte Desktop dafür aufgenommen oder exakt nur die Videobereiche wo das Spiel stattfindet?


    Wichtige Befehler für die Umsetzung wären Crop, Trim, Overlay, Layer, Animation, ApplyRange und gegebenfalls noch ein oder zwei Funktionen zur Bildwechslung.


    Das Prinzip ist eigentlich einfach: Zwei Indizien der Aufnahme werden benötigt. Einmal für das obere Display und einmal für das untere Display.


    Dann erfolgt die Anordnung auf dem Gesamt Display. Das kann z.B. auch ein Wallpaper sein das mit ImageReader geladen wurde.


    Dann sollte sich überlegt werden wie man den Bildwechsel macht. Dafür muss sich eine Funktion entsprechend erstellt werden. Die Animation die du machen willst sozusagen um den Bildwechsel zu gestalten.


    Beim [lexicon]SSM[/lexicon] sind auch noch einige Sachen als Plugin. Im Plugin Ordner findeste die Datei Blend.avsi. Die kannste in deine Skripte importieren lassen und hast somit den Zugriff auf alle Funktionen der avsi Datei. Wenn du die Blend.avsi mal öffnest mit [lexicon]AvsPmod[/lexicon] oder nem Editor, dann siehste alle Funktionen + deren Funktionsbeschreibung. Vllt sind da ein paar Sachen dabei die du noch nutzen kannst. ^^

  • Danke. Mir ging es erstmal nur darum, ob man sowas auch mit Avisinth machen kann. Ich hab ja keine Ahnung, wie Sui es gemacht hat und der kriegt sicher genügend dämliche Anfragen, da muss ich ihn nicht damit nerven, wie er denn seine Aufnahmen bearbeitet ^^


    Es würde bloß der Spielbereich aufgenommen werden. Nicht der ganze Bildschirm mit Desktop.


    Leider kenne ich von den angegebenen Befehlen bis jetzt nur Crop und Overlay. Den Rest muss ich mir noch aneignen. Aber das ist alles so komplex, da darf ich mein Gehirn nicht mit überladen.

  • Hier mal ein kleines Beispiel wie sowas aussehen kann bei einem NDS


    Fertiges Video auf YT: https://www.youtube.com/watch?v=k3GeLih9SO8&HD=1
    Skript: http://www.mediafire.com/view/9mbdvrd2de6ortc/NDS.avs


    So sah das Aufnahmebild aus: http://www.mediafire.com/view/…lo94/NDS_Aufnahmebild.png
    Und hier die [lexicon]Mediainfo[/lexicon] vom Rohvideo: http://www.mediafire.com/view/…s0cmbi9/NDS_Mediainfo.txt


    Das Video auf YT entspricht nicht der Länge die in der [lexicon]Mediainfo[/lexicon] steht. Ich habe es einfach mal gekürzt, da es ja nur als Beispiel dienen sollte. ;D

  • Wow, vielen Dank für dieses anschauliche Beispiel, Sargaras! Ich hatte eigentlich vor, nach und nach den Rest der AVS-Befehle zu lernen und dann zu gucken, wie ich das am Besten hinkriege. Auf die Art habe ich eine fantastische Vorlage, die mir sicherlich helfen wird, den gesamten Prozess zu verstehen.

  • Hier hätte ich noch mal ein anderes Beispiel aus der selben Rohdatei wieder.


    Fertiges Video auf YT: https://www.youtube.com/watch?v=UPONbBj3-LM&HD=1
    Skript: http://www.mediafire.com/view/weaq54zfqz1bi3k/NDS2.avs


    Hier habe ich StackVertical genutzt um ein Sliden der einzelnen Displays zu realisieren.


    Das ganze ist einfach nur ne Spielerei.


    Das Tolle an den Skripten ist es, das ich nur noch die Punkte von a bis b angeben muss, wann was passieren soll. Der Rest ist völlig Automatisch und akkurat und ich brauch mich nur noch drum zu kümmern an welche Frames das alles kommen soll.

  • Ich hab mir das Skript mal angesehen und kapier den größten Teil.


    Aber nicht diesen Teil:
    #Größenangaben bei kleinen und großen Fenstern vordifinieren und global setzen
    global wmin = int(Oben.width*1.5)
    global hmin = int(Oben.height*1.5)
    global wmax = int(Oben.width * 3.4)
    global hmax = int(Oben.height * 3.4)
    global wmit = int(Oben.width * 2.45)
    global hmit = int(Oben.height * 2.45)


    Was hat das zu bedeuten?

  • Das sind die Vordifinierten Größenangaben die im gesamten Skript Global wirken. Das bedeutet das ich diese Variablen nirgendwo weitergeben muss. Weder in eine Funktion, noch sonstwo. Ich kann diese Variablen überall anwenden.


    Desweiteren dürfen Bildpunkte keine Kommazahlen sein (Float), sondern müssen Ganzzahlig sein (Integer).


    Der Rest sollte auch klar sein dann wieder: Die Größe wird durch einen Faktor bestimmt, damit das Seitenverhältnis des Displays nicht komische Verhältnisse annimmt. Man will ja nicht das Figuren auf einmal Fett oder Hauchdünn werden, sondern man will ja so nah am Original sein wie möglich ;D


    Die Größe wird ermittelt durch die schon vorhandene Größe aus der Clip Variable Oben.


    Einmal wird Breite und Höhe für das kleinste Display benötigt, einmal für das große Display und einmal für die mittlere Größe.


    Da Oben und Unten die gleiche [lexicon]Auflösung[/lexicon] haben, stimmen diese Werte für beide Displays


    Als Beispiel:


    Video hat die [lexicon]Auflösung[/lexicon] 640x960
    Danach wird in Oberen und Unteren Bildschirm geteilt und haben dann jeweils 640x480


    Die Rechnung dann sind die festen Bilder auf dem fertigen Bild.


    Ich schreib das jetzt mal ausführlich mit Zahlen:
    Global wmin = Int(640 * 1.5)
    Global wmin = 960
    Global hmin = Int(480 * 1.5)
    Global hmin = 720
    Global wmax = Int(640 * 3.4)
    Global wmax = 2176
    Global hmax = Int(480 * 3.4)
    Global hmax = 1632
    ...


    Somit hat das kleinste Display die Größe von 960x720 und das große 2176x1632


    Somit kann ich wmin, hmin, wmax, hmax, wmit und hmit überall einsetzen und brauche es nicht ständig anzugeben.


    Das sind sozusagen die fertigen Größen die du im Video siehst dann.

  • Tutorial für die Videobearbeitung mit AVISynth LPer Spezifisch
    das dürfte mir aktuell bei meinem Vorhaben helfen :D das erste mal video-in-video was ich mache x3


    wenn ich aber die einzelnen videos croppen will, müsst ich das dann ja von Hand im Skript und auf gut glück tun wa? wenn 2videos geladen werden ist das ja etwas ungünstig das im ersten reiter von [lexicon]megui[/lexicon] zu machen wo man den globalen crop auswählen kann

  • Weiß nicht ob du AutoGK kennst... (Dieses Programm aus Anno Domini 2009 und älter)
    Dort wurde in [lexicon]AVISynth[/lexicon] der [lexicon]Filter[/lexicon] Autocrop verwendet.


    http://avisynth.org.ru/docs/en…ernalfilters/autocrop.htm


    Sollte für dich ja dann interessant sein.


    Er croppt aber nur schwarze Ränder des Videos weg die Eindeutig durch das gesamte Video schwarz sind.


    Als Beispiel wie es AutoGK macht:

    Code
    autocrop(movie,mode=0,wmultof=4,hmultof=4,samples=10,aspect=0,threshold=0,samplestartframe=0,leftadd=0,rightadd=0,topadd=0,bottomadd=0)

Jetzt mitmachen!

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