Endcard via MeGUI einfügen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Endcard via MeGUI einfügen

    Anzeige
    Guten Morgen/Mittag/Abend (je nachdem wann ihr es lest)

    Und zwar gehts um folgendes. Ich nehme ja mit DxTory auf. Diese bearbeite ich am Ende mit Sony Vegas und per Debug zu MeGUI. Da ich aber Endcards einbauen will aber es verdammt zeitaufwändig ist in Sony ein Schnitt zu ziehen dazwischen die Endcard einbauen die Spur wieder zusammenziehen um die nächste Folge (Ja ich arbeite mit mehreren Folgen im Debugmode) zu schneiden. Ich hatte mal im Internet gesehen das es für Avisynth auch ein Befehl gibt womit man am Ende jeden Videos ein Fixes Video einbauen kann.
    Das ist mein bisheriges Script:
    AVISource("E:\signpost.avi", audio=true).AssumeFPS(60.000)
    ConvertToYV12()


    __film = last
    __t0 = __film.trim(357050, 410791)
    __t0


    FadeIn(60)
    FadeOut(60)

    Ich glaube der Befehl war irgendetwas mit "Outro=" oder so. Wie genau weiß ich leider nicht mehr und ich finde auch die Seite nicht mehr. hab schon etliche Seiten durch mit google. Ich hoffe ihr könnt mir da helfen.
  • Wesentlich einfacher damit:
    SagaraS Scriptmaker (GUI)

    Mehrere Videos, Fade etc haste dann schon via der GUI möglich.
    Außerdem hast du damit dann auch die Möglichkeit multithread avisynth zu nutzen.

    Mit avisynth geht übrigens genauso viel wie mit 'ner NLE:

    avisynth.nl/index.php/Internal_filters
    avisynth.nl/index.php/External_filters
    Aktuelle Projekte/Videos




    Seit etlichen Monaten komplett veraltete Signatur, wie ihr sicherlich schon bemerkt habt. Habe mittlerweile mehr als 4 Projekte, weshalb die Signatur leider momentan gesprengt ist xD
    Notdürftig die Liste was aktuell läuft: Unreal | Complex DooM (LPT) | DooM 2016 | Need For Speed III: Hot Pursuit | Dirt Rally | Dirt 4 | WRC 7
  • SSM hab ich ja schon. Da kann ich aber auch nciht einstellen das Video X (Meine Endcard oder EndVideo) an jedem Schnitt drangehangen werden soll.

    Um es zu verdeutlichen

    Besitze Aufnahme.avi und meine Endvideo.avi. Aufnahme.avi ist sagen wir mal 2h groß. Die soll nun in 15minuten encodiert werden. Nach jeden 15minuten (Sind natürlich nicht immer 15minuten wegen Satzunterbrechungen) soll das Endvideo erscheinen. Also
    Encodiert1.mkv (15minuten) mit endvideo
    Encodiert2.mkv (15minuten) mit endvideo
    Encodiert3.mkv (15minuten) mit endvideo
    etc und so weiter und sofort

    Wie müsste ich SSM einstellen damit dies so funktioniert.
  • Du könntest das endcard video einzeln encodieren und dann jedes mal nachm encode des hauptvideos mit mkvmerge anhängen.
    Aktuelle Projekte/Videos




    Seit etlichen Monaten komplett veraltete Signatur, wie ihr sicherlich schon bemerkt habt. Habe mittlerweile mehr als 4 Projekte, weshalb die Signatur leider momentan gesprengt ist xD
    Notdürftig die Liste was aktuell läuft: Unreal | Complex DooM (LPT) | DooM 2016 | Need For Speed III: Hot Pursuit | Dirt Rally | Dirt 4 | WRC 7
  • Ein fixes Video also. Also Endcard Video ist fertig?

    Dann machste das halt so:

    Quellcode

    1. main = AVISource("E:\signpost.avi", audio=true).AssumeFPS(60.000)
    2. endcard = AVISource("E:\Endcard.avi", audio=true).AssumeFPS(60.000)
    3. __t0 = main.trim(357050, 410791).FadeOut0(60)
    4. __t1 = endcard.FadeIn0(60).FadeOut0(60)
    5. __t0 ++ __t1
    6. ConvertToYV12()


    Wichtig ist vor allem:
    • Die [lexicon]FPS[/lexicon] beider Clips müssen identisch sein. Sind sie es nicht, so muss ein Clip mit ChangeFPS auf das andere angepasst werden
    • Der Farbraum muss identisch sein um beide Clips aneinanderzuhängen. Sind sie es nicht, so muss eines der Clips mit den entsprechenden ConvertTo Befehl in den entsprechenden Farbraum konvertiert werden.
    • Audio Samplerate, sowie Bittiefe müssen bei beiden Clips exakt übereinstimmen, sollte Audio miteinander verbunden werden.
      Dafür gibt es entsprechende Befehle wie:
      SSRC, ConvertAudioTo, ResampleAudio

      Auch die Kanalanzahl sollte identisch sein, sollte ein zusammenschluss geschehen.
      MergeChannels, GetChannel, MixAudio, ConvertToMono
    • Sollte es sich um keine AVI Datein handeln die du als Endcard hast oder als Mainvideo, so wird empfohlen FFMS2 zu verwenden.
      Anwendungsbeispiel mit Parametererklärung findest du hier: ffmpegsource.googlecode.com/sv…k/doc/ffms2-avisynth.html

      Das FFMS2 Plugin ist bei [lexicon]MeGUI[/lexicon] mit dabei, das du unter den Unterordner Tools\FFMS\ finden kannst.
  • Danke dir Sagaras das mit der Endcard funktioert komischerweise mit meinenAVI Dateien nicht aber mit mp4 dateien einwandfrei.

    Jetzt besteht nur noch ein Problem wie kriege ich in mein Script die AudioSpuren eingelesen?

    Das ist mein bisheriges Script





    LoadPlugin("C:\Program Files (x86)\SagaraS Scriptmaker\Plugins\FFMS2.dll")
    Global breite = 1920
    Global hoehe = 1080
    Global AR = 1
    SetMTMode(3,2)
    main = AVIload("D:\1.mp4", 1, 0, 0, -0, -0, "Auto", "Igno.", 0, 0)
    endcard = AVIload("D:\2.mp4", 1, 0, 0, -0, -0, "Auto", "Igno.", 0, 0)
    __t0 = main.trim(01, 899).FadeOut0(60)
    __t1 = endcard.FadeIn0(60).FadeOut0(60)
    __t0 ++ __t1
    ConvertToYV12()

    Function AVIload (String file, int loading, int cl, int co, int cr, int cu, string pixtype, string afps, int fpsn, int fpsd) {
    (loading == 1) ? FFIndex(file) : nop()
    clip0 = (loading == 3) ? LWLibavVideoSource(file) : (loading == 2) ? Import(file).KillAudio() : (loading == 1) ? FFVideoSource(file, threads=1) : (pixtype == "Auto") ? AVISource(file, false).KillAudio() : AVISource(file, false, pixel_type=pixtype).KillAudio()
    clip1 = clip0.AutoFPS(afps, fpsn, fpsd).Cropping(cl, co, cr, cu)
    Return (clip1.width == breite && clip1.height == hoehe) ? clip1.ConvertToYV12(matrix = "Rec709") : Clip1.Resize()
    }

    Function AutoFPS (Clip clip0, string afps, int fpsn, int fpsd) {
    rate1 = (afps == "Auto") ? (Round(Float(clip0.framerate * 1000)) / 1000) / 2 : nop()
    rate2 = (afps == "Auto") ? Round(clip0.framerate) / 2 : nop()
    rate = (afps == "Auto") ? (rate1 == rate2) ? 1 : 1001 : (afps == "Igno.") ? clip0.frameratedenominator : fpsd
    ratefaktor = (afps == "Auto") ? (rate == 1001) ? 1000 : 1 : nop()
    clip0 = (afps == "Auto") ? (rate == 1001) ? clip0.AssumeFPS(Round(clip0.Framerate) * 1000, rate) : clip0.AssumeFPS(round(clip0.framerate), rate) : (afps == "Igno.") ? clip0.AssumeFPS(clip0.frameratenumerator, rate) : clip0.AssumeFPS(fpsn, rate)
    Return clip0.ChangeFPS(60, 1)
    }

    Function Cropping (Clip clip0, int cl, int co, int cr, int cu) {
    clip0 = (clip0.IsRGB32() == True) ? clip0.ConvertToRGB24() : clip0
    Return (cl != 0 || co != 0 || cr != 0 || cu != 0) ? clip0.Crop(cl, co, cr, cu) : clip0
    }

    Function Resize (Clip clip1) {
    clip1 = (AR == 1) ? ((float(Clip1.height * breite) / clip1.width) / 2 == round((float(Clip1.height * breite) / clip1.width) / 2)) ? ((float(Clip1.width * hoehe) / clip1.height) / 2 == round((float(Clip1.width * hoehe) / clip1.height) / 2)) ? clip1 : clip1.ConvertToRGB24() : clip1.ConvertToRGB24() : clip1
    clip1 = (AR == 1) ? (((clip1.width * hoehe) / clip1.height > breite) ? Clip1.Spline16Resize(breite, ceil(float(Clip1.height * breite) / clip1.width)) : Clip1.Spline16Resize(ceil(float(clip1.width * hoehe) / clip1.height), hoehe)) : clip1.Spline16Resize(breite, hoehe).ConvertToYV12(matrix = "Rec709")
    back = (AR == 1) ? (0 == 1) ? ImageReader("", 0, clip1.framecount - 1, clip1.framerate).ChangeFPS(Clip1.frameratenumerator, Clip1.frameratedenominator).Spline16Resize(breite, hoehe).ConvertToYV12(matrix = "Rec709") : BlankClip(clip1, width = breite, height = hoehe, pixel_type = "YV12").KillAudio() : clip1
    Return (AR == 1) ? Overlay(back, clip1, (back.width - clip1.width) / 2, (back.height - clip1.height) / 2) : clip1
    }


    Randnotiz: Das Script habe ich mir größtenteils aus deinem Scriptmaker rauskopiert ^^
  • Rayxin schrieb:

    SetMTMode(3,2)


    Dein Script ist langsam. Damit benutzt du nur 2 CPU Kerne.

    Geh in die MT Config und mach den Haken bei Threads raus. Für 1920x1080 brauchst du keine Threadlimitierung. Encodespeed++

    Den Mode 2 Haken beim nächsten Eintrag aber belassen.
    Den Seitenverhältnis Haken brauchst du ebenso rein nur dann rein machen wenn du Videos mit unterschiedlichen Seitenverhältnissen hast und die abweichenden nicht gestreckt werden sollen. Ansonsten brauchst du den Haken nicht!
    Und warum willst du 60fps auf 60fps ändern? Deine Quelle hat doch schon 60.

    Tipp: 2048x1152 erbringt erheblich bessere Qualität auf youtube. Bei 60fps aber nur wenn du das Glück hast Encode 308 zu erhalten. 308 sieht dafür dann aber auch ganz besonders gut aus.

    Jetzt besteht nur noch ein Problem wie kriege ich in mein Script die AudioSpuren eingelesen?


    Für Audio den Audio Export von SSM benutzen.
    Aktuelle Projekte/Videos




    Seit etlichen Monaten komplett veraltete Signatur, wie ihr sicherlich schon bemerkt habt. Habe mittlerweile mehr als 4 Projekte, weshalb die Signatur leider momentan gesprengt ist xD
    Notdürftig die Liste was aktuell läuft: Unreal | Complex DooM (LPT) | DooM 2016 | Need For Speed III: Hot Pursuit | Dirt Rally | Dirt 4 | WRC 7
  • Rayxin schrieb:

    main = AVIload("D:\1.mp4", 1, 0, 0, -0, -0, "Auto", "Igno.", 0, 0)
    endcard = AVIload("D:\2.mp4", 1, 0, 0, -0, -0, "Auto", "Igno.", 0, 0)
    __t0 = main.trim(01, 899).FadeOut0(60)
    __t1 = endcard.FadeIn0(60).FadeOut0(60)
    __t0 ++ __t1
    ConvertToYV12()

    Wenn du die Videos eh mit SSM lädst, dann werden die so oder so verknüpft. Da brauchst du gar nix am Skript manuell rumfuschen ^^

    Kannst alles dem SSM machen lassen. Auch das mit dem FadeIn und FadeOut. Oder aber auch Übergangseffekte setzen.

    Der SSM berücksichtigt all diese Sachen die ich dir erklärt hatte.

    Ich dachte du willst ein eigenes individuelles Skript erstellen. ^^ Aber wenn du eh SSM nutzt, dann brauchste wie gesagt nix weiter machen. Alle Funktionen sind im SSM mit enthalten.
  • Klar geht das.

    Du schneidest halt anders mit AVISynth/SSM/MeGUI als du es von einer NLE gewohnt bist.

    In einer NLE schneidest du nur den Bereich weg den du nicht willst.
    Bei AVISynth/SSM/MeGUI schneidest du aber so das du sagst den und den Bereich will ich behalten.

    Beispiel:

    Du hast ein Gesamtclip mit SSM. Bestehend aus deinem MainVideo und der Endcard.

    Jetzt schnippelst du am Gesamtclip und sagst das du vom Gesamtclip nur von Frame x bis Frame y behalten willst.

    Resultat ist das die Endcard entfällt, da der Schnitt nur im MainVideo stattgefunden hat vom Gesamtclip.

    Also müsstest du einen zweiten Schnitt angeben. Und zwars den der deine Endcard anzeigt.

    Weil die Schnitte die du angibst sind Bereiche. Daher werden sie auch Start- und Endzone genannt.

    1. Start und Endframe bei dir also: 0 - 899 (Der 0te Frame ist der erste Frame der Vorhanden ist. Der zweite ist mit 1 gekennzeichnet.)

    Rayxin schrieb:

    __t0 = main.trim(01, 899).FadeOut0(60)


    Hier scheideste von Frame 2 bis Frame 900, nach dem normalen Denkmuster.
    Schreiben tut man das denn mit 1 bis 899.

    Sind genau 898 Frames gesamt.

    Hättest du 0 bis 899 geschrieben, hätteste glatt 900 Frames gehabt.

    Rayxin schrieb:

    Ja doch. Ich kann bei deinem SM schneiden. Schön und gut. Wenn ich aber diese Funktion nutze wird nicht nach jedem Schnitt die Endcard angezeigt.

    Wie gesagt, es geht. Wenn deine Endcard immer die gleiche FPS und Frameanzahl aufweisen tut, kann man solche Schnittangabe auch im Skript festhalten.

    Weil du im Endeffekt dann Gesamtcliplänge - Endcardlänge bis Gesamtcliplänge rechnest.

    Sieht im Endeffekt so aus:

    Quellcode

    1. __t0 = film.trim(film.framecount - 900, film.framecount)


    Bei 30 FPS sind 900 Frames exakt ne halbe Minute. Hier wird quasi am Gesamtclipende der Bereich rausgeschnitten den das Endvideo später drin haben soll.

    Ist eigentlich ganz einfach, wenn man es verstanden hat.
  • Sagaras schrieb:

    Hättest du 0 bis 899 geschrieben, hätteste glatt 900 Frames gehabt.


    jup. Wenn man nämlich mit 1 anfängt, lässte den ersten Frame weg. Weil der erste ist 0 und nicht 1^^
    Aktuelle Projekte/Videos




    Seit etlichen Monaten komplett veraltete Signatur, wie ihr sicherlich schon bemerkt habt. Habe mittlerweile mehr als 4 Projekte, weshalb die Signatur leider momentan gesprengt ist xD
    Notdürftig die Liste was aktuell läuft: Unreal | Complex DooM (LPT) | DooM 2016 | Need For Speed III: Hot Pursuit | Dirt Rally | Dirt 4 | WRC 7