Beiträge von Sagaras

    Das kannst du mit Overlay alles lösen


    Wenn dein aktuelles Video zuende ist nutzt du entweder ein neues Video oder ein Standbild um es dann zu verlängern. Und mit Overlay packst du deine 2 Videos oder halt auch Bilder rauf die du haben möchtest und positionierst sie so wie du es haben möchtest auf dem Gesamtbild.


    Die Videos lassen sich dann natürlich wieder auf den Hintergrund gerichtet ein und Ausblenden.


    Es ist also möglich. Kommt jetzt bei dir an was du genau machen möchtest. Weil Video und Bilder sind zwei unterschiedliche Quellen und müssen demnach auch entsprechend behandelt werden.


    Also mal ansagen was wie wo hinkommen soll und wie lang die Videos sind die du hinzufügen möchtest. Also die richtige Rohvideolänge die du lädst und auf welche Länge genau gekürzt werden soll.

    Die Fehlermeldung von [lexicon]MeGUI[/lexicon] kommt nur, wenn ich das Seitenverhältnis auf 0 setze. Wenn ich das Seitenverhältnis auf 1, also auf Standard lasse, kommt die Fehlermeldung nicht mehr; komisch.


    Nö, eigentlich nicht dann ^^ Dann weiß ich was das Problem ist ^^


    Um das Seitenverhältnis anzupassen muss einmal der Farbraum konvertiert werden. Bei AR=0 ist ja das Seitenverhältnis anpassen ja ausgeschaltet. Demnach wird auch nicht konvertiert beim Farbraum. Das gildet aber nur für YV12, YUY2 und RGB24. Also den letzten Einträgen.


    Der erste Eintrag mit der RGB24 Konvertierung sollte auf jedenfall klappen ^^


    Das hat den Grund das die Videos von [lexicon]FRAPS[/lexicon] in AVISynth als RGB32 eingelesen werden. Da die Konvertierungen bei den letzten Einträgen beim Farbkanal wegfallen entsteht ein Konvertierungsfehler.


    Entweder du konvertierst in RGB24 mit der Standardauswahl oder du lädst deine Videos per FFMEPEGSource2 ein ^^ Weil der erkennt dann das ganze. Ist aber halt langsamer, weil dann indexiert werden muss ^^

    Was ich nicht ganz verstehe: Wenn ich in dem Spiel mit einer [lexicon]Auflösung[/lexicon] von 1024x768 bin, ist ja trotzdem der ganze Bildschirm ausgefüllt, wird das also automatisch gestreckt? In dem Video von dem Spiel sind nun aber schwarze Balken am Rand, das will ich eigentlich nicht, sieht doof aus. Ich will, dass das Video 1:1 meine Sicht aus dem Spiel wieder gibt.


    Sofern Seitenverhältnis anpassen auf 0 ist (also aus), wird gestreckt egal was kommt. Du kannst auch bei der Zielauflösung eine 4:3 Angabe machen, dann hat dein Video keine Ränder nach dem [lexicon]Encodieren[/lexicon]. Aber spätestens auf Youtube würden diese entstehen, da YT eine 16:9 Bildanzeige hat.


    Ein richtiges 4:3 Video kann man mit einem 4:3 Monitor auf Youtube in vollen Umfang genießen ;D Das mal am Rande bemerkt.


    "[lexicon]MeGUI[/lexicon] encountered a fatal error and may not be able to proceed. Reason: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."


    Ich habe eigentlich alles so wie beim ersten mal gemacht, nur mit anderen Einstellungen im [lexicon]Batch[/lexicon], keine Ahnung was los ist.


    Das kann verschiedene Gründe haben. Entweder eine falsche Angabe in der AVS, das diese nicht richtig geladen werden konnte. (Was ich allerdings weitumgehend alles abgefangen habe eigentlich)
    Oder du machst was in [lexicon]MeGUI[/lexicon] falsch ;D Bzw. [lexicon]MeGUI[/lexicon] macht Zicken.

    Muss irgendwie mit .NET Framework zusammenhängen, gestern hat es wunderbar funktioniert. Alles mögliche schon probiert - Neustart, Neuinstallation, half nichts.


    Dann nenne doch mal deine .Net Framework Version ;D Und eventuell wo [lexicon]MeGUI[/lexicon] hininstalliert wurde. Sind noch Datein von [lexicon]MeGUI[/lexicon] im Verzeichnis wo du es hininstallierst? etc.


    Ansonsten dein Windows mal updaten richtig. Darunter wird dann auch .Net Framework dabei sein ;D

    Was muss ich jetzt also auswählen bei [lexicon]Auflösung[/lexicon] in der Batch?


    Deine Zielauflösung ^^


    2048x1152 entspricht Original auf Youtube. Also wird oder wurde als Original dort betitelt. Seit neustem gibs ja auch schon 1440p [lexicon]Auflösung[/lexicon]


    Je höher du die Zielauflösung in der [lexicon]Batch[/lexicon] wählst, desto besseren Encode bekommst du von Youtube. Das gidet auch für alle darunterliegenden Auflösungen die dann auf Youtube sind ^^


    Deine [lexicon]Auflösung[/lexicon] entspricht 16:10 = 1920x1200
    Dein Spiel hat aber 4:3 = 1024x768, genauso wie das Menü 4:3 hat mit = 640x480


    Youtube kann aber 16:9 wiedergeben. Das füllt den gesamten YT Player dann aus. 16:9 Auflösungen sind dann halt 1280x720 (720p), 1920x1080 (1080p) oder halt Original mit 2048x1152 (1152p)


    Genauso können auch 4:3 Auflösungen diese Marken erreichen. 1440x1080 (1080p), Original 1536x1152 (1152p) etc.


    Damit bekommst du aber dann halt schwarze Streifen Links und Rechts, da das Spiel 4:3 ist. Es sei denn du lässt das Seitenverhältnis nicht anpassen und zerrst das 4:3 Spiel auf 16:9. Damit wird die Propotionalität des Spieles beeinflusst und ergibt keine Originale Wiedergabe des eigentlichen Spiels.


    Das hab ich extra so eingefügt, da viele ihre Videos gnadenlos strecken wollen. Also beabsichtigt.


    Die 2048x1152 Standardauswahl betrifft erstens die 16:9 Auflösungsunterstützung Youtubes als Maximales Bildverhältnis. Dazu noch das bei dieser [lexicon]Auflösung[/lexicon] ein sehr sehr guter Encode seitens Youtube entsteht.


    Ist eine 16:9 [lexicon]Auflösung[/lexicon] gewählt wie 2048x1152 dann bekommen 4:3 Videos einen schwarzen Rand oder halt ein Bild und im gleichen Zug bekommen angeknüpfte 16:9 Videos den vollen Umfang ohne Ränder auf dem gleichen Bild.


    Das macht sich vor allem bei Spielen nützlich wo 16:9 [lexicon]Auflösung[/lexicon] das Spiel unterstützt und 4:3 die Menüführung ist ;D


    Oh okay, danke, das ist natürlich ein bisschen blöd, aber wenn du es nicht anders programmieren kannst, dann muss ich Umlaute wohl umschreiben. Und das mit dem: Ich pack mir [lexicon]Portal[/lexicon] 2 25 und [lexicon]Portal[/lexicon] 2 26 und [lexicon]Portal[/lexicon] 2 27.avi und mach die 1. Soundspur von allen Videos zu einer ist nicht wirklich toll, weil ich jetzt für jeden Part einen Unterordner brauche.


    Ich bin schon dabei eine [lexicon]GUI[/lexicon] dafür zu schreiben. De-M-oN hat schon eine provisorische Version davon getestet ;D Nur will ich es entweder auf .Net noch bringen oder Java. Mal schauen ^^ Das wird aber auch noch eine weile dauern. Weil ich bin selbst mit der Dateiwahl etwas unzufrieden das alle Datein geschluckt werden. Am liebsten wäre es mir selbst wenn man die Datein per Drag and Drop in das Programm ladet das später daraus den Skript erstellt ^^


    Das wird aber noch ein bisschen dauern bis es soweit ist. ^^ Also bitte ich da erst mal um etwas Geduld ^^

    Besonders toll finde ich, dass gleich alle Spuren aus den 6 Videos zu einer wurden. Echt top Arbeit, Hut ab!


    Sinn und Zweck der Sache ;D Immer alle Videos aus dem gleichen Ordner aus dem zur [lexicon]Batch[/lexicon] Datei gesendet wurde, werden zusammengesetzt. Und zwars so wie die Alphabetische Reihenfolge ist. Bedeutet: erst kommen die Videos mit einer Zahl vorne, dann mit Kleinbuchstaben von a - z und dann die Großbuchstaben von A - Z.


    Ledeglich eine Einschränkung haben die Batchdatein. Sie sind nicht Unicode Fähig. Bedeutet Buchstaben wie ä, ö und ü gibs ja im Englischen ja nicht. Dazu noch wie gesagt der Entfall jedes anderen zusätzlichen Unicode Characters, außer den Standart ASCII Zeichensatz.


    Bedeutet: Wenn die [lexicon]CLI[/lexicon] bereits auf Amerekanischen Zeichensatz arbeitet entfallen die Umlaute.
    Dazu noch der unterschiedliche Zeichensatz zwischen DOS und Windows.
    Und der Entfall von Unicodezeichensätzen.


    Bedeutet: Die Dateinamen dürfen allesamt nur den ASCII Zeichensatz von 32 - 127 entsprechen.



    Oben rechts und oben links auf dem Bild siehst du die erlaubten Zeichen von 32 bis 127. In den Hälften darunter die Zeichen 128 bis 255.

    Version 3.0 erschienen.


    Wenigstens einer der damit was anfangen kann ;D


    Ich schätze aber mal da die Batches innerhalb einer [lexicon]CLI[/lexicon] laufen, das die meisten damit nix anfangen können ^^ Obwohl man mit Version 3 jetzt eigentlich kaum noch denken muss ^^ Gerade bei der Installation der Batches die Teilweise automatisch geschieht.


    An alle [lexicon]MeGUI[/lexicon] Nutzer: Die Videobatch soll euch die Erstellung eines Skriptes erleichtern. Gerade weil viele von euch keine Ahnung von AVISynth haben. Und mit der Audio Batchdatei soll erreicht werden das die Audiospur zum treffenden Video angepasst wird, damit Asynchronitäten wegfallen, falls die Aufnahme Synchron war. Das macht aber nur dann Sinn wenn mehrere Videos hintereinander gelegt werden. Beispielsweise bei Splitting Aufnahmen. Entweder dort wo sich die Auflösungen ständig ändern wie [lexicon]Descent[/lexicon] 3 oder andere Spiele die jedesmal zwischen 2 oder 3 Aulösungen jedesmal hin und herspringen.


    Die Batches wurden so zusammgeschustert, das alles wichtige abgefragt wird und das Beste und Kompatibelste als Standard gewählt wurde.


    Die [lexicon]Batch[/lexicon] Datein sind wie gesagt für die Leute die keine Ahnung haben von AVISynth und nicht viel machen wollen damit. Die [lexicon]Batch[/lexicon] Datein sind auch effizienter als das Standardzeugs von [lexicon]MeGUI[/lexicon]. Gerade für Let's Plays.


    Das ist wie gesagt für alle [lexicon]MeGUI[/lexicon] Nutzer nur ein riesen Vorteil diese zu nutzen.


    Das schneiden erfolgt dann wie gewohnt in [lexicon]MeGUI[/lexicon] selbst statt, genauso wie das [lexicon]Encodieren[/lexicon]. Da euch die Batchdatein WAVs und eine Video AVS erstellt, braucht ihr zum Schneiden im [lexicon]AVS Cutter[/lexicon] bei [lexicon]MeGUI[/lexicon] eine CLT Datei und das die Schnitte dem Skript hinzugefügt werden. Und selbst das geschiet Visuell.
    Es brauch keiner mehr zu meckern das ihn irgendwas zu kompliziert sei ;D

    AR all Video Loader Scriptexport.bat


    Beschreibung:
    Diese Batchdatei ladet alle AVIs in einem Ordner und macht daraus ein AVISynth Script fertig, der nur den Videoteil betrifft. Und zwars werden alle AVIs nach der Reihenfolge in ein Video zusammengefügt. Dabei spielen unterschiedliche Auflösungen und FPS keine Rolle mehr, alles wird angepasst und zu einen Video verarbeitet. Mit der AR (Aspect Ratio, deu: Seitenverhältnis) Funktion können alle Videos im richtigen Seitenverhältnis geladen werden. Diese bekommen bei einem nicht passenden Resize Wert einen Schwarzen Rahmen. Somit können alle Videos ob 4:3, 16:10, 16:9 in ein Video verarbeitet werden. Natürlich muss mann die AR Funktion nicht nutzen und gnadenlos alles Strecken und zerren lassen. In diesem Fall kann man die AR Funktion auch abstellen.


    Das soll vor allem Spiele zugute kommen, die ständig ihre Auflösungen ändern oder halt Leuten die ihre Aufnahmen splitten. Oder halt noch irgendwas anderes vorhaben damit. z.B. ein Intro oder Outro setzen. ;D


    Wichtige Angaben und Features:

    • Als erstes wird die [lexicon]Auflösung[/lexicon] abgefragt. Diese ist wenn ihr es Durchentert immer Standardmäßig auf 2048x1152. Also Original.
    • Dann wird die FPS abgefragt. Haben die AVIs untereinander verschiedene FPS Werte, muss eine FPS Änderung stattfinden damit auf eine neue Einheitliche FPS gewechselt werden kann. Haben alle Videos sowieso die gleiche FPS, brauch die FPS nicht geändert werden und man kann Durchentern. PS: Für Youtube bitte max. auf 30 FPS
    • Dann wird der Farbraum abgefragt. Hier muss entschieden werden wie AVISource laden soll. Normalerweise nehmt ihr alle in YV12 meist auf. Daher wäre Auswahl 2 am geeignesten mit der Wahl: "Versuchen ohne Konvertierung als YV12 auszugeben". Eine Universelle Methode ist in RGB24 alles zu konvertieren. Diese Universelle Lösung wird alles laden. Nachteil ist halt eine Konvertierung des Farbmaterials zu wagen.
      Zur Auswahl stehen:

      • RGB24 Konvertierung der Videos (Standard)
      • Versuchen ohne Konvertierung als YV12 auszugeben
      • Versuchen ohne Konvertierung als YUY2 auszugeben
      • Versuchen ohne Konvertierung als RGB24 auszugeben


      Das erste ist eine Standardmäßige radikale Lösung, oder halt eine Universelle, da das Video zu 100% in RGB24 konvertiert wird. Egal ob YV12 oder was weiß ich erkannt wird.
      Die 2te bis 4te Auswahl ist der Versuch ohne Konvertierung des Films das Video im jeweils entsprechenden Farbraum ausgeben zu lassen. Dies sollte erstrebt werden, da die Encodierung keine Farbkonvertierung machen brauch, was dann halt die Encodiergeschwindigkeit steigert minimal.

    • Dann wird der AR (Aspect Ratio) Wert abgefragt. Dieser gibt nur an ob jedes einzelne Video ein korrektes Seitenverhältnis bekommt. Wenn es auf 0 ist, wird alles auf die entsprechende neue [lexicon]Auflösung[/lexicon] gezerrt. Ist der Wert aber 1 und man verknüpft ein 4:3 und ein 16:9 Video, dann ist das Resultat das das 4:3 Video einen Schwarzen linken und rechten Rand bekommt und das 16:9 Video korrekt dort hineinpasst. Alles wird dann hintereinanderweg abgespielt ;D Gleiches für schwarzen Rand für Oben und Unten.
    • Zuletzt die Auswahl des Resizers. Ich habe 4 Stück eingearbeitet, wobei der [lexicon]Spline64[/lexicon] Resizer als Standard ausgewählt ist. Bedeutet wenn ihr diesen sowieso nutzt, könnt ihr wieder Durchentern. Die einzelnen Resizer sind mitunter die wichtigsten für Let's Plays. Welches für euch der passende Resizer ist, müsst ihr selbst probieren. ;D


      Installation: Die Manuelle Installation und Funktionsweise kann dieser Anleitung entnommen werden: hier


      Benötigte Programme: -


      Ist Kompatiebel mit: - Extract Synchron Audio.bat


      Download: Version 3.0 ("AR all Video Loader_Scriptexport.bat" und "Extract Synchron Audio.bat" jetzt als Setup zusammengefasst)


    Changelog (03.10.2013):

    • Eine Setup erspart es einem nun die [lexicon]Batch[/lexicon] Datein in den Senden An Ordner zu kopieren.
    • Ein Problem mit AR Ratio wurde gefixt
    • FFMpeg Unterstützung eingebaut. Damit können Videoformate wie [lexicon]MKV[/lexicon], [lexicon]MP4[/lexicon], FLV, 3GP, WMV, MOV, H264 sowie WEBM geladen werden durch eine Indexierung
    • Hintergrund kann nun mit einem Bild ersetzt werden. Anstatt Schwarze Ränder wird dann das Bild im Hintergrund angezeigt. Das Bild kann im Senden an Ordner unter AVS Plugins\Pic\ ausgetauscht werden.


    Changelog (04.10.2013):

    • Übersichtlicheres Abfragedesign
    • Infoerstellung der gewählten Einstellungen als Textdatei (Für Fehleranalyse)
    • Resizerinfo hinzugefügt (Danke an De-M-oN ^^)

    Deine AVIDatein brauen alle eine Soundspur und sollten auch alle wenn möglich von AVISource geladen werden können.


    Sprich wenn eine Aufnahme keine Soundspur besitzt und eine andere hat eine Soundspur, dann wirds ein Fehler geben.


    Wird eine Aufnahme nicht von AVISource erkannt, gibt es natürlich auch Fehler. Hab ja dein Code gesehen per PN. Deine [lexicon]Camtasia[/lexicon] Aufnahme wird vermutlich dran Schuld sein ;D

    Ich möchte mit diesem Tutorial allen denjenigen eine Möglichkeit geben sofern diese jenigen selbst Skripte schreiben oder sonstiges ihre persönlichen Automatisierungs Skripte hier zu präsentieren.


    Da ich selbst mit AVISynth und Co. meine Videos bearbeite und mir einige Sachen kompliziert waren hab ich schon des öfteren solche Skripte und [lexicon]Batch[/lexicon] Datein geschrieben die das ganze viel viel einfacher machen ^^


    Eines dieser Skripte habe ich mit De-M-oN ausgearbeitet (Dank an dir das du die Testperson gespielt hast ;D)


    Automatisierungstools:


    und zwars ist dabei heraus gekommen die...


    Extract Synchron Audio.bat


    Beschreibung:
    Es handelt sich dabei um ein AVS Skript das in einer [lexicon]Batch[/lexicon] Datei so eingearbeitet wurde das diese alle AVIs (Und zwars wirklich nur AVIs) aus einem Ordner zu einem Track macht. Also einer Spur. Das Problem war das bei Aufnahmen bei bestimmten Games die [lexicon]Auflösung[/lexicon] wechselten, aber alles trotzdem zu einem Video gehörte. Die einzelnen Parts hatten im Millisekunden Bereichen winzig kleine Abweichungen von der Video und Audio Länge. Dadurch entstanden beim laden jedes einzelnen Parts um daraus ein Video zu machen extrem viel Arbeit, da der Ton bei gut 21 Parts um fast 5 Sekunden asynchron wurde. Alle Parts manuell zu bearbeiten wäre extrem Zeitaufwendig gewesen. Der Skript sorgt nun dafür das man alle AVI Datein im Ordner (Hauptsächlich bei Projekt x Part y etc) zu einen einzigen Part werden und man die Audiospuren sehr sehr exakt extrahieren kann. Damit sind diese total Synchron wenn sie im späteren Verlauf wieder mit dem Video per [lexicon]MKV[/lexicon] Merge zusammengefügt werden.


    Dies gilt aber nur für die Audiospuren innerhalb der AVI Datein. Jede Spur ist extrahierbar und wird auch sorgfältig korrigiert zum Video.


    Zu gebrauchen ist es für Frapsaufnahmen (insbesondere für Splittingaufnahmen dort), beim MSI [lexicon]Afterburner[/lexicon] auf jedenfall (Sehr große Defferenzen von ca. 0.7 Sekunden pro Part) und [lexicon]DXTory[/lexicon]. Halt überall wo ihr mehrere Tonspuren bei der Aufnahme im AVI [lexicon]Container[/lexicon] habt.


    Wichtige Angaben und Features:

    • FPS Angabe - Diese ist Standardmäßig auf 30 FPS eingestellt. Sofern ihr nur Enter drückt wird 30 FPS genommen. Stellt am besten die FPS ein in die ihr euer Video später encoden wollt. Die FPS Angabe ist für die Synchronisation des Audio Tracks wichtig
    • Track Wahl - Track 0 ist Standardmäßig ausgewählt. Sofern eure Parts mehrere Spuren besitzen können diese auch extrahiert werden und Synchronisiert werden zum Video
    • Info Anzeige - Standardmäßig auf 0 (aus) - Auf 1 erstellt diese Option euch am Ende der Extrahierung Bilder mit den Defferenzen von Video und Audio Spur. Diese Angaben sind extrems Exakt. Aufgeführt wird einmal die Gesamtdefferenz und die einzelnen Defferenzen jedes einzelnen Videoparts


      Installation: Die Manuelle Installation und Funktionsweise kann dieser Anleitung entnommen werden: hier


      Benötigte Programme: Virtual Dub (32 Bit)


      Ist Kompatiebel mit: - AR all Video Loader Scriptexport.bat


      Download: Version 3.0 ("AR all Video Loader_Scriptexport.bat" und "Extract Synchron Audio.bat" jetzt als Setup zusammengefasst)


    Changelog (03.10.2013):

    • Eine Setup erspart es einem nun die [lexicon]Batch[/lexicon] Datein in den Senden An Ordner zu kopieren.
    • FFMpeg Unterstützung eingebaut. Damit können Videoformate wie [lexicon]MKV[/lexicon], [lexicon]MP4[/lexicon], FLV, 3GP, WMV, MOV, H264 sowie WEBM geladen werden durch eine Indexierung


    Changelog (04.10.2013):

    • Übersichtlicheres Abfragedesign


    Wenn Fragen sind, nur zu ^^


    Sofern weitere Skripte anstehen von mir stelle ich diese auch wieder hier vor. Habt ihr noch Skripte oder Automatisierungssachen parat, nur rein hier damit und halt erklären was diese machen. ^^ Das wäre dann auch Übersichtlicher denk ich mal.

    [lexicon]FRAPS[/lexicon] find ich besser als [lexicon]DXTory[/lexicon] :o


    warum?


    die sonne ist dunkler als der Mond.
    Genauso informativ.


    Völlig unnötig und Sinnlos eure Beiträge zu diesem Thema xD
    Jedes Aufnahmeprogramm hat seine Vorteile und auch seine Nachteile. Das ist nun mal so. Manchmal kann man halt nur mit Tricks aufnehmen. Und dafür sollte dieser Tutorial Thread hier sein. Und nicht dafür um zu sagen was besser ist und was nicht ;D

    Heute ist ein Update für [lexicon]MeGUI[/lexicon] herrausgekommen das AVISynth 2.5.8 Nutzer betrifft.


    Und zwars können die AVISynth Plugins für 2.5.8 nicht mehr geladen werden, da diese nun auf 2.6 geupdatet wurden.


    Sofern ihr diese Plugins nicht benötigt, soll es euch egal sein. Betroffen ist ledeglich der DirectShowSource mit dem man auch seine Videos laden kann. Da dieser aber eh nicht empfohlen wird, wird dazu gebittet solche Videos in Zukunft per Index zu laden über FFMpeg.


    Lösung für das ganze ist entweder das ihr AVISynth 2.6 installiert um das Problem zu lösen oder
    die Datein überschreibt für die jeweilige Nutzung von AVISynth in MeGUI:
    AVISynth 2.5.8 Plugins für MeGUI: AVS 2.5


    Einfach im Ordner ...MeGUI\tools\avs\ die Datein überschreiben und nach dem [lexicon]MeGUI[/lexicon] Start das Update für AVS nicht ausführen. Dann sollte alles Funktionsfähig sein wieder.


    Das ist wie gesagt für die Nutzer die AVISynth 2.5.8 auf ihren Rechner schon vorher installiert haben. Entweder Updaten das ganze auf 2.6 oder die 2.5.8 Plugins in [lexicon]MeGUI[/lexicon] ersetzen um die volle Funktion nutzen zu können. ^^

    Danke funktioniert, bis auf einen kleinen fehler - die variablen für höhe und breite x und y müssen weggelassen werden ansonsten gibts nen Fehler.


    ApplyRange(last, 0,59,"Overlay", pic1, x=0, y=0)


    Du meinst bestimmt diese Zeile ;D


    Ja, mein Fehler xD Innerhalb von ApplyRange dürfen nur Argumente stehen und keine Bezeichnungen ^^ Bedeutet: x= oder y= darf da gar nicht stehen, ledeglich nur die Werte dafür ;D

    Das machst du mit ApplyRange ^^


    Code
    BlankClip(length=1860, width=1920, height=1080, fps=30, color=$000000, audio_rate=44100)
    pic1 = ImageSource("PFAD+DATEINAME+ENDUNG", fps = last.framerate)
    ApplyRange(last, 0,59,"Overlay", pic1, x=0, y=0)


    und würde das auch mit mehreren bildern funktionieren die nacheinander erscheinen sollen?


    Klar ^^ Machste einfach weiter dann wie grad erklärt:

    Code
    BlankClip(length=1860, width=1920, height=1080, fps=30, color=$000000, audio_rate=44100)
    pic1 = ImageSource("PFAD+DATEINAME+ENDUNG", fps = last.framerate)
    pic2 = ImageSource("PFAD+DATEINAME+ENDUNG", fps = last.framerate)
    pic3 = ImageSource("PFAD+DATEINAME+ENDUNG", fps = last.framerate)
    ApplyRange(last, 0,59,"Overlay", pic1, x=0, y=0)
    ApplyRange(last, 60,119,"Overlay", pic2, x=0, y=0)
    ApplyRange(last, 120,179,"Overlay", pic3, x=0, y=0)


    Das kannst du beliebig fortsetzen ^^ Erst erscheint Bild 1 von [lexicon]Frame[/lexicon] 0 - 59, dann Bild 2 von [lexicon]Frame[/lexicon] 60 bis 119 und dann Bild 3 von [lexicon]Frame[/lexicon] 120 bis 179 ^^ Alles auf dem gleichen Video ^^


    Oder du machst daraus eine Funktion, da das ganze sich eh immer wiederholt:



    Erst wird das Bild geladen, dann der Framebereich angegeben wo das Bild gezeigt werden soll und dann x und y wo das Bild dann halt angezeigt werden soll ;D


    Kann man noch modifizieren das ganze wenn man das möchte ^^
    Aufrufen tust du dann das ganze mit ShwoPic nur noch hintereinander weg ^^

    Code
    BlankClip(length=1860, width=1920, height=1080, fps=30, color=$000000, audio_rate=44100)
    ImageSource("PFAD+DATEINAME+ENDUNG", start = 0, end = 59, fps = 1)


    Dein ImageSource erzeugt diese 59 Frames. Du musst ImageSource in eine Variable legen und eventuell mit Overlay auf den BlankClip zeichnen.


    Code
    BlankClip(length=1860, width=1920, height=1080, fps=30, color=$000000, audio_rate=44100)
    pic1 = ImageSource("PFAD+DATEINAME+ENDUNG", start = 0, end = 59, fps = 1)
    Overlay(last, pic1, x=0, y=0)


    last wäre dann was vor pic1 als Ausgabe gedient hat. In diesem Fall BlankClip. ^^

    Multiplayer wäre geil gewesen wenn du die Story von Ehb mit jemanden gezockt hättest und dann die Multiplayer Map ;D
    Vllt sogar noch das Addon dazu in Multiplayer ^^ Das wäre sehr Interessant gewesen. Singleplayer ist nicht soooo interessant dazu ;D


    Aber ich finds klasse das überhaupt jemand ein LP dazu macht ^^ Nice ;D

    Da ich Lucki im Skriptbereich etwas helfen werde um den Skriptgenerator etwas einfacher zu machen werde ich ihn hier ein paar Skripte geben die er dafür nehmen kann. Wenn jemand noch Fehler, Verbesserungen oder andere tolle Skriptbeispiele hat dafür wäre das vllt auch interessant ;D


    Youtube FPS Schalter

    Code
    (Last.Framerate > 30) ? Last.ChangeFPS(30) : Last.AssumeFPS(Float(Round(Last.Framerate*1000))/1000)


    Diese Zeile könnte man als Youtubeschalter verwenden für FPS Raten.
    Beispiel: Hat ein Video über 30 FPS wird das Video durch diese Zeile auf genau 30 FPS limitiert, da Youtube eh nicht mehr macht. FPS Raten die 30 und darunter betragen bleiben wie sie sind. Bedeutet: Ein 25 FPS Video bleibt 25 FPS. Ein 29.97 FPS Video bleibt 29.97. 45 FPS werden in 30 FPS geändert.
    Das macht diese Zeile da. Angewendet nach dem Videoinput am besten.


    Mit dieser Funktion muss nie wieder eine FPS Rate manuell eingetragen werden.


    Bilderthumpnails erstellen in Folge und in Random


    Diese Funktion ist entstanden als jemand hier im Forum danach gefragt hatte ob man Thumpnails per Skript speichern kann. Also das Beispielsweise 30 Bilder die rein zufällig aus dem Gesamtvideo entstehen zusammengesetzt werden und gespeichert werden.
    Das obere Skript hier erzeugt zufällig 30 Bilder aus dem letzten zurückgegebenen Video und speichert diese als PNG. Also eigentlich steht da SaveRandPic(Last, 30)
    Gespeichert werden können eine Menge Formate. Das eigentliche Video wird bei der ganzen Prozedur nicht beeinflusst nach dieser Funktion. Sie dient nur zur Bildergenerierung. ^^


    Thumpnails in geordneten gleichmäßigen Abständen kann man mit dieser Funktion erreichen:


    Automatische Auflösungserkennung und Änderung
    Für Auflösungen könnte man eine Auswahlliste machen die für Youtubeauflösungen gilt. Denn... in AVISynth ist uns die Breite und die Höhe des geladenen Videos bekannt. Ebenso die Zielauflösung der Höhe. Die einzige Unbekannte ist die Breite die Errechnet werden müsste dabei.
    Ein Beispiel dafür:

    Code
    Spline64Resize((last.width * 720) / last.height, 720)


    Das kann mit jeder anderen [lexicon]Auflösung[/lexicon] auch gemacht werden. Für Youtube wären 144p, 240p, 360p, 480p. 720p. 1080p und 1152p (Original) interessant. Im Beispielskript wird für 720p skaliert propotional. Vllt das man dann noch auswählen kann zwischen den Einzelenen Resizern.


    Soundspur der Videospur exakt angleichen

    Code
    correctaudio("D:\Spiele\LucasArts\01-02A.avi", "D:\Spiele\LucasArts\01-02A_track1.wav")
    function correctaudio (string video, string audio) {
    video = AVISource(video, false)
    video = video.AssumeFPS(Float(Round(video.Framerate*1000))/1000)
    audio = WAVSource(audio)
    Track = audio++Tone(float(((video.Framecount/(video.framerate))*audio.audiorate - audio.audiolength)/audio.audiorate), 0, audio.audiorate, audio.audiochannels, "Silence").ConvertAudioTo16bit()
    return Track
    }


    Dieser Skript sorgt dafür das die Audiospur exakt der Videospur angepasst wird. Zurückgeliefert wird nur die Audiospur von der Funktion. Ist also die Audiospur länger als die Videospur, wird sie gekürzt. Ist sie kleiner als die Videospur wird sie verlängert und die fehlende Länge wird mit Leeren Sound gefüllt.
    Das wäre interessant wenn man mehrere Videos zusammenknüpfen will. ;D


    Rahmen für Videos lassen sich auch berechnen und dynamisch gestalten. Dazu aber erst, wenn ich Lucki sich dazu bereit erklärt sowas auch zu nehmen. Bin eh erst mal gespannt darüber wie das Prog mit diesen neuen Funktionen aussieht.


    Selbst das Splitten eines Videos könnte man mit Trim und mehreren Scripten genauer machen lassen, als wenn man eine [lexicon]MKV[/lexicon] über MKVmerge splitten würde. Könnte man auch realisieren.



    Eine weitere Funktion die mir gestern in den Kopf kam war mehrere Videos zu laden die eine Unterschiedliche [lexicon]Auflösung[/lexicon] haben. Hier mal ein Beispiel:


    Erklärung: Breite und Höhe geben die Zielauflösung an für das Gesamtvideo. Mit AVIload läd man nun eine AVI Datei (samt den ersten Track.)
    Der Clou dabei ist: Youtube Videos haben meist ein 16:9 Bild. Bei alten Spielen kann es sein, das das Spiel 16:9 [lexicon]Auflösung[/lexicon] hat, aber die Cutscenes oder Menüs in 4:3 vorliegen. Auch die Tatsache das es unterschiedliche Auflösungen sind. Das Spiel hat vllt 1280x720 und das Menü oder die Cutscenes vllt nur 640x480. Viele Aufnahmeprogramme die sowas aufnehem erzeugen dabei jedesmal ein neues File. Wenn man die Files mit dieser Funktion da oben die Videos ladet, werden alle auf ein einheitliches Bild gebracht und entsprechend Skaliert.


    Beispiel:
    Video1.avi -> 4:3 640x480 - Menüaufnahme
    Video2.avi -> 4:3 800x600 - Cutscene
    Video3.avi -> 16:9 2048x1152 - Spielaufnahme


    Im Skript wird jetzt mittels AVIload die Videos geladen.


    AVIload("Video1.avi") ++ AVIload("Video2.avi") ++ AVIload("Video3.avi")


    Genau so. Wenn eine 16:9 [lexicon]Auflösung[/lexicon] angegeben wurde, dann werden alle Video mit korrektem Seitenverhältnis auf die gewünschte Zielauflösung skaliert und zentriert.
    Ihr braucht nur noch eine Zielgröße angeben bei Global. Des weiteren kann man BlankClip austauschen mit einem Bild. Dann hat man ein Hintergrund sogar wenn sich die [lexicon]Auflösung[/lexicon] der Videos die man geladen hat ändert.

    Jeder Lets Player der alte Games zockt wird darüber mal gestoßen sein. Videos werden nicht aufgenommen, Menüs auch nicht immer und gewisse Spiele wollen auch nicht jedesmal erfasst werden.


    Dieses Tutorial soll sich in erster Linie damit beschäftigen wie man etwas aufnimmt und dabei auch alles gleich mitnimmt. Was weiß ich... von Diablo 1 oder 2 die Videos, von Jedi Knight Dark Forces 2 die Videos + Menü + Ingame. Solche Sachen halt.


    Viele der Aufnahmeprogramme versagen an der Tatsache das viele alte Videos von einen alten Bink oder Smackerplayer abgespielt werden und der Player nicht erfasst werden kann, weil dieser über eine Surfacefläche läuft. Also nicht Hookingfähig für [lexicon]DXTory[/lexicon], [lexicon]FRAPS[/lexicon] oder [lexicon]Afterburner[/lexicon].


    Der Clou das doch alles aufzunehmen in einen Guss ist mir erst vor kurzen Klar geworden.


    Leider Gottes auch wenn viele darüber wieder ablästern werden... für diesen Trick hab ich den [lexicon]Camtasia[/lexicon] Recoder verwendet und [lexicon]FRAPS[/lexicon] gleichzeitig.


    Jedi Knight Dark Forces 2 + Addon


    Fangen wir mal mit Jedi Knight Dark Forces an...


    Hauptproblem dort ist:

    • Videos und Menüführung können nicht per Hooking erfasst werden. Folge: Schwarzer Bildschirm
    • Das Menü braucht man dort aber öfters mal. Gerade wenn man Machtpunkte verteilt, sich das Auftragsbuch durchlesen will oder sich der 3D Karte bedienen will. Auch Abspeichern, Laden und Setup lassen sich nur über das Menü öffnen.
    • Ingameaufnahme wird total ruckelig und Laggt auch von der Grafik her, sobald mit [lexicon]Camtasia[/lexicon] Recorder aufgenommen wird, [lexicon]FRAPS[/lexicon] nimmt hier das Spiel am besten auf.


    So... damit liegt soweit alles auf der Hand. Wer jetzt denkt das man das Spiel aufnehmen kann mit [lexicon]Afterburner[/lexicon], indem man den Desktop aufnimmt, hat sich getäuscht das es geht ;D Folge ist: Schwarzes Bild bei den Videos und dem Menü + Laggs im Spiel. Und da hab ich schon sonstwas probiert.


    Also optimale Lösung jetzt für das Game: Der [lexicon]Camtasia[/lexicon] Recorder nimmt Videos + Menüführung auf, sowohl auch Ingamesound und [lexicon]Mikro[/lexicon]. [lexicon]FRAPS[/lexicon] nimmt nur Ingame auf.
    Die [lexicon]Camtasia[/lexicon] Aufnahme erfolgt dann mit einen [lexicon]Lossless[/lexicon] [lexicon]Codec[/lexicon] wie [lexicon]Lagarith[/lexicon] und geht durchgängig. Also die Aufnahme beim [lexicon]Camtasia[/lexicon] Recorder geht durchweg bis man fertig ist mit dem spielen. [lexicon]FRAPS[/lexicon] schaltet man dazu, sobald die Ingamegrafik einsetzt.


    Jetzt passiert folgendes: [lexicon]Camtasia[/lexicon] nimmt wenn Ingame ist nur ein Stück auf vom Spiel. Also nur ein Teil vom ganzen. Dafür sorgt ja nun [lexicon]FRAPS[/lexicon] der das Bild nun besser erfassen kann durch das Hooking. Erfolgt nun ein Wechsel in die Menüführung, nimmt [lexicon]FRAPS[/lexicon] für diese Zeit wo man im Menü ist schwarz auf. Der [lexicon]Camtasia[/lexicon] Recoder allerdings nimmt das Menü weiter auf.


    Ist alles im Kasten, hat man die [lexicon]Camtasia[/lexicon] Aufnahme mit samt Sound für Videos, Menü + Ingame. (Für [lexicon]FRAPS[/lexicon] braucht Sound nicht aufgenommen werden dabei) [lexicon]FRAPS[/lexicon] beinhaltet nur noch die hochauflösende Ingameaufnahem. Die schwarzen Stellen schneidet man jetzt nur noch heraus und lässt diesen Abstand. Man positioniert das nachher so das die [lexicon]Camtasia[/lexicon] Aufnahme und die Frapsaufnahme mit der Soundspur und Videospur so synchron wie möglich verlaufen. Und schon hat man Jedi Knight mit Videoaufnahme + Menü + Ingame in voller [lexicon]Auflösung[/lexicon] aufgenommen.


    Die Videos können ersetzt werden mit RADTools, indem man die SMK oder Bink Datein einfach in [lexicon]Lagarith[/lexicon] encodiert und sie später ins Video einbaut. Damit leiden dann die Videos nicht mehr über die schlechte Wiedergabe der alten Smacker oder Binkplayer.


    Diablo 2 + Videos


    Das Problem bei Diablo 2 stellen wieder die Videos dar die mal wieder nicht von Hooking Systeme erfasst werden können. Um das nicht auch so kompliziert zu machen wie bei Jedi Knight vorhin gibt es hier eine sehr einfache Lösung dafür.


    Als erstet empfehle ich kein [lexicon]Afterburner[/lexicon]. Denn der verursacht bei diesem Spiel ordentliches Flackern der aktiven Figuren im Vordergrund. Also schlechte Wahl ;D
    [lexicon]FRAPS[/lexicon] nimmt das Spiel hervorragend auf. [lexicon]DXTory[/lexicon] vermutlich auch.
    Auf jedenfall geht es um die Videos jetzt. Um die Videos im Spiel zu sehen muss man das Spiel als Vollbild laufen lassen und nicht im Fenstermodus. Nur im Vollbild aktiviert sich der Bink oder Smacker player. Also erst mal auf Vollbild schalten dann.


    Dann nehmt ihr mit [lexicon]Audacity[/lexicon] eure Stimme auf und startet [lexicon]FRAPS[/lexicon] oder [lexicon]DXTory[/lexicon]. (Fraps hat auf meinen alten Vista Rechner das ganze ohne Probleme aufgenommen. Also keine Störanfälle gezeigt nach 15 Minütiger Aufnahme)


    Als nächstes startet ihr das Spiel und beginnt mit eurern Kommentar. (Mit [lexicon]FRAPS[/lexicon] noch nicht aufnehmen, weil würde nicht gehen da die Videos nicht Hookingfähig sind). Sofern das Menü aufplopt drückt ihr schnell die [lexicon]FRAPS[/lexicon] Aufnahmetaste. Das Menü wird aufgenommen und ihr könnt loslegen. Sobald ihr das Spiel startet kommt noch mal ein Video wo ihr einfach weiter erzählen könnt. [lexicon]FRAPS[/lexicon] sollte nun wie auch bei Jedi Knight das ganze schwarz aufnehmen. Das ist wichtig für später. Lasst das Video voll durchlaufen bis das Spiel startet und zockt hinterher wie gewohnt. [lexicon]FRAPS[/lexicon] nimmt das Spiel dann schon auf ganz normal.


    Seit ihr fertig mit allem, kommt nun auch hier der Clou... Wie ihr festgestellt habt beim lesen haben wir nicht einmal ein Video aufgenommen. Da wir jetzt aber über die Positionen verfügen die wir mitaufgenommen haben wo diese Videos hinkommen, können wir diese nun ranheften.
    Um an die Videos zu kommen braucht man als erstes einen MPQ Extraktor Marke Blizzard und RADTools. Ihr braucht beide Sachen.


    Mit dem MPQ Extraktor extrahiert hier die Videos aus der entsprechenden MPQ Datei. Haltet dabei ausschau nach BIK oder SMK Datein. Diese enthalten die Videos mit Sound.
    Habt ihr diese extrahiert, kommt RADTools zum Einsatz. Damit werden diese Datein mit [lexicon]Lagarith[/lexicon] in eine für euch Verwendbare Datei encodiert. Diese können wir nun nutzen um an den Stellen die Videos hinzuzufügen wo vorher nur Schwarz bei [lexicon]FRAPS[/lexicon] war oder beim Anfang wo nix aufgenommen wurde. Legt es euch so zurecht das alles wieder Synchron wird und fertig habt ihr ein Diablo 2 LP mit Videos.


    Bei Diablo 1 kann man übrigens genauso wieder verfahren.


    Bei weiteren Problemen zur Lösung von gewissen Problemspielen einfach hier anfragen. Oder wenn ihr selbst eine Lösung habt dafür, immer hier rein posten ;D


    Manches geht nun mal nicht so einfach, sondern nur über kleine Umwege. Und das sind immer noch bessere Möglichkeiten als einen anderen PC via Capturecard aufnehmen zu lassen ;D

    Eine Funktion brauchst du nur einmal ^^


    Code
    Blende(Bild1, Bild1mask, 5, 100, 24, 24,0,(last.height-Bild1.height)-100)
    Blende(Bild2, Bild2mask, 150, 250, 30, 30,0,(last.height-Bild1.height)-100)
    Blende(Bild3, Bild3.Levels(255,10,255,255,255,false), 350, 550, 30, 30,0,(last.height-Bild1.height)-100)
    Function Blende (clip clip0, clip clip1, clip clip1mask, int sframe, int eframe, int fadeinframe, int fadeoutframe, int x2, int y2) {
    clip0 = ApplyRange(clip0, sframe, eframe-fadeoutframe-1, "Animate", sframe, sframe+fadeinframe, "Overlay", clip1, x2, y2, clip1mask, 0.0, clip1, x2, y2, clip1mask, 1.0)
    clip0 = ApplyRange(clip0, eframe-fadeoutframe, eframe, "Animate", eframe-fadeoutframe, eframe,"Overlay", clip1, x2, y2, clip1mask, 1.0, clip1, x2, y2, clip1mask, 0.0)
    return clip0
    }


    3 unterschiedliche Bilder mit der gleichen Funktion aufgerufen. Desshalb heißt es auch Funktion ;D



    Für dein anderes Problem sollte dir dieses Bild behilflich sein es zu verstehen was da nun passiert:



    Hier siehst du Die Overlayfunktion mal Bildlich betrachtet.


    Wir haben bei Overlay die Angabe von x und y. Das sind die Werte auf dem Orangen Feld für x und y. Ab da zeichnet er das Bild so wie du es siehst auf der Anschauhung.


    Clip1 hat eine feste [lexicon]Auflösung[/lexicon]. Nämlich die Bildbreite und Bildhöhe. Das sind Clip1.width und Clip1.height.


    Dein Videobesitzt auch eine Breite und eine Höhe und ist bei dieser Anschauhung das Grüne Bild. Es startet immer von der Position 0,0 und wird auch als Hauptfenster bezeichnet.


    Die Rechnungen für x und y in Overlay beziehen sich aus den Werten die zur Verfügung stehen.


    Willst du ein Bild zentrieren muss man halt Clip0.width - Clip1.width rechnen und diesen Betrag dann durch 2 teilen.


    Du kannst auch jede andere Position wählen die du willst. Das heißt das da auch nur Zahlen stehen können.


    Beispiel: Dein Hauptfenster und auch Hintergrundvideo (Grüne Fläche) betragt 640x480
    dein anderes Fenster (in deinem Fall ein Bild) (Oranges Kästchen) hat nur 320x240


    Wenn ich das Bild auf dem Hauptfenster zeichnen will habe ich alle Werte von 0 - 640 und von 0 - 480 zur Verfügung wo ich das Bild auch sehen würde.
    Alle Werte die unter der Position 0,0 sind und über 640, 480 würden aus dem Hauptfensterbereich verschwinden.


    Bedeutet für Overlay kann man bei einem 320x240 Bild alle Werte nehmen die von 0,0 bis hin zu (640-320) und (480-240) gehen würden. Damit das Bild nicht aus dem Hauptfensterbereich verschwindet. Ist doch eigentlich logisch, oder? ;D


    Wenn ich also Overlay sage 55, 100 setzt Overlay mir das Bild auf der x Position 55 und y Position 100 hin. Das ist das x und y was du auch in der Anschauhung siehst. ^^

    Bild1maske ist das Maskenbild von Bild1.


    Das löst du entweder mit


    Blende(Bild1, Bild1.Levels(255,10,255,255,255,false), 563, 790, 24, 24, 468, 270)


    Also mit dem Levles Filter indem du dein Bild1 komplett weiß gestaltest. Weil 255 im [lexicon]Alphakanal[/lexicon] Weiß ist. Und Weiß ist so das Standart für eine normale Anzeige.


    Wenn du ein Bild mit [lexicon]Alphakanal[/lexicon] hast, musst du auch eine Maske erstellen. Das geht in der Ladesektion so:
    Bild1 = ImageSource("C:\Users\Keijin\Pictures\test.png", pixel_type = "RGB32")
    Bild1mask = Bild1.ShowAlpha(pixel_type = "RGB32")