• Guten Abend!

    Ich habe einige Videos , die ich aus Computerspielen gecaptured habe.

    Es handelt sich um Videos mit einer Framerate von 50 Frames pro Sekunde.

    VDM zeigt jedoch 49,998 fps an , also habe ich ein AussumeFPS(50) vorne ins Script gehängt.

    Ich möchte diese Videos nun gerne für die Verwendung auf DVD nach 25fps interlaced konvertieren , wie stelle ich das nun am besten an?


    Wie kriege ich das ganze nun interlaced?

    Die Rotation der Erde wurde in den letzten Jahren primär durch sich im Grab umdrehende Musiker angetrieben - Mainstream sei dank.

  • Ich würde sagen, das müsste mit einer Hälfte dieser Skripte möglich sein, die zum Field-Tauschen verwendet werden.

    - die 50 fps Vollbilder mit SeparateFields trennen
    - mit SelectEvery (nur weiß ich jetzt nicht sicher, welche Parameter) von einem Bild das Top-, von einem anderen das Bottom-Field wählen
    - mit Weave beide Fields zu einem Frame verbinden

    Vielleicht muss irgendwo noch was mit AssumeFieldBased/AssumeFrameBased oder AssumeTTF rein, wenn sich das nicht automatisch ergeben sollte; und auch die Framerate wird bei SeparateFields sicher verdoppelt worden sein, wird aber bei SelectEvery nur theoretisch halbiert, also muss da bestimmt noch die Geschwindigkeit mit AssumeFPS auch noch halbiert werden...

    Aber ausgerechnet "ConvertToYV12" wäre dann eine Sache, die man noch mal überdenken sollte, denn YV12 ist bei Interlaced-Material nicht gerade "erste Wahl".

  • Zitat von LigH

    Aber ausgerechnet "ConvertToYV12" wäre dann eine Sache, die man noch mal überdenken sollte, denn YV12 ist bei Interlaced-Material nicht gerade "erste Wahl".

    Ich hab das da drin wegen AddGrain.

    Ich kann ja danch wieder zurückkonvertieren.

    Hat eventuell jemand ein Paar Links für mich?

    Ich hab überhaupt kein Plan wie ich überhaupt anfangen soll...

    Grüße,
    Eastermeyer

    Die Rotation der Erde wurde in den letzten Jahren primär durch sich im Grab umdrehende Musiker angetrieben - Mainstream sei dank.

  • Ich hatte an Links zu Progressiv nach Interlaced Konvertierungen gedacht.

    Ich erwarte keinesfalls das mir jemand ein fertiges Script zusammenbastelt , aber ien kleiner Gedankenanstoß wäre nicht schlecht.

    Ich werde mich mal im Englishen schlau machen...
    (forum.doom9.org)

    Danke schonmal LigH!

    Die Rotation der Erde wurde in den letzten Jahren primär durch sich im Grab umdrehende Musiker angetrieben - Mainstream sei dank.

  • Dann schau doch mal in der Dokumentation auf deiner Platte. Da sind viele Filter dokumentiert: Zum einen die internen (im Kernel von AviSynth), zum anderen externe (als Plugins). Und die sind dann in Kategorien unterteilt, unter anderem auch auch zur Verwaltung von Interlaced-Videos. Du kannst dir beim Installieren von AviSynth auch eine deutschsprachige Dokumentation mit entpacken lassen. Allerdings sind die englischen Beschreibungen etwas aktueller - auch auf der Website von AviSynth.

  • Das mit dem Rauschen solltest Du wirklich überdenken, denn gerade Computerspiele sind einer der CoDec Killer.
    da sind selbst die auf DVD Zugelassenen 9,8 mbps manchmal zu wenig


    Dein Script könnte z.B. so aussehen:

  • Gute Vorarbeit geleistet... freut mich! :D

    Aber noch etwas vergessen: Video (aus AviSource) und Audio (aus WAVSource) müssen noch verbunden werden. Ich glaube, im vorgegebenen Beispiel wird das Video mit AviSource geöffnet, dann wieder weggeworfen, dann das Audio geöffnet, und ohne Video weiterverarbeitet. Um beide zu verbinden, muss man sie erst mal einzelnen Clips zuweisen, und dann beide Clips mit der Funktion "AudioDub" zu einem Clip mit Video und Audio verbinden:

    http://www.avisynth.org/AudioDub

    Code
    video = AviSource("G:\fraps\CStrike_25_05_05.avi")
    audio = WAVSource("G:\TotalRecorder\CStrike_25_05_05.wav")
    AudioDub(video,audio)
  • Da ist man mal einen Abend offline um sich einzuarbeiten [Blockierte Grafik: http://www.schnullerfamilie.de/forum/images/smilies/kaffee2.gif] , da bastelt einem wieder scharfi das Script zusammen [Blockierte Grafik: http://www.schnullerfamilie.de/forum/images/smilies/merci.gif].

    Irgendwie hab ich es in letzter Zeit mit den Framerate-Konvertierungen , ich hab scharfi ja schon per PM genervt.

    Ohne mich einschleimen zu wollen , möchte ich einfach nur einmal los werden ,das hier im Forum viele ihre Freizeit opfern um anderen zu helfen.
    Das find ich richtig gut [Blockierte Grafik: http://www.schnullerfamilie.de/forum/images/smilies/thumbsup.gif].

    Natürlich habe ich selbst schon versucht mich schlau zu machen , aber in der Doku finde ich nur das:

    Zitat von Avisynth-Doku

    Auf einen 24 fps progressiven Quellclip 3:2 Pulldown anwenden, was einen 30 fps interlaced Clip ergibt:
    AssumeFrameBased()
    SeparateFields()
    SelectEvery(8,0,1,2,3,2,5,4,7,6,7)
    Weave()

    Ich werd nochmal die Syntax von SelectEvery durchkauen[Blockierte Grafik: http://www.schnullerfamilie.de/forum/images/smilies/suchen.gif].

    Grüße,
    Eastermeyer

    Die Rotation der Erde wurde in den letzten Jahren primär durch sich im Grab umdrehende Musiker angetrieben - Mainstream sei dank.

  • dieses beispiel aus der AVS-doku ist furchtbar schwer verständlich.

    leichter verständlich mag dieses hier sein, welche exakt dieselbe Funxtion hat (Film -> NTSC):

    xxxsource("?.xxx")
    selectevery(2,0,0,0,1,1) #24p auf 60 aufpusten
    assumetff() #ausgabefieldorder festlegen
    separatefields().selectevery(4,0,3).weave() #reinterlacen

    aber dieser NTSC-Fall trifft für Dich jetzt garnicht zu!

  • Schon klar , das Beispiel ist ja für 24p nach 30i

    Ich hab es gestern Abend so gemacht [Blockierte Grafik: http://www.schnullerfamilie.de/forum/images/smilies/umfall.gif]

    Zitat von Müll

    AssumeFPS(24)
    AssumeFrameBased()
    SeparateFields()
    SelectEvery(8,0,1,2,3,2,5,4,7,6,7)
    Weave()
    AssumeFPS(25)

    Ich glaub ich fang langsam an zu verstehen.

    SeparateFields teilt in die einzelnen Halbbilder auf...

    Die Rotation der Erde wurde in den letzten Jahren primär durch sich im Grab umdrehende Musiker angetrieben - Mainstream sei dank.

  • Aber ich glaube, ich versteh's jetzt komplett:

    Jedes Frame wird geteilt in seine Fields. Aus Frame A werden die Fields A1 (Top-Field von Frame A) und A2 (Bottom-Field von Frame A), aus Frame B die Fields B1 (Top-B) und B2 (Bottom-B) ... - Die befinden sich nach "SeparateFields" dann als doppelt so schnelles, halb hohes Video hintereinander, also aus einem Clip mit den Frames A-B-C-D-... wird ein Clip mit den Fields A1-A2-B1-B2-C1-C2-D1-D2-...

    Wie anfangs schon erwähnt, brauchen wir nur ein Field aus dem einen Frame, und ein anderes Field aus dem nächsten, usw.; wir wählen uns also: A1-B2-C1-D2-...

    Das heißt: Aller 4 "Frames" (die ja eigentlich im aktuellen Clip die hintereinander angeordneten Fields sind) wählen wir uns - da wir Top-Field-First-Video haben wollen - jeweils das erste (also das Top-Field des ersten Frames) und das vierte (also das Bottom-Field des zweiten Frames) aus. Und weil der Index von 0 an gezählt wird, sind das für jede Gruppe von 4 "Frames" (Fields) jeweils das mit dem Index 0, und das mit dem Index 3. Also: SelectEvery(4,0,3).

    Hätten wir BFF-Video gewollt, hätten wir statt dessen SelectEvery(4,1,2) verwendet; aber das ist auf DVD ja nicht üblich.

    Ich mach mal noch 'ne Grafik, denke ich - hab grad Lust drauf.

  • Hätten wir BFF-Video gewollt, hätten wir statt dessen SelectEvery(4,1,2) verwendet; aber das ist auf DVD ja nicht üblich.

    STOP!

    hättest Du BFF-Video gewollt, müsste davor nen assumebff stehen (4,0,3).

    assumetff und 4,1,2 geht zwar auch ist aber mehr als unüblich.

    es gilt:
    4,0,3 belässt die vorher festgelegte Fieldorder und 4,1,2 dreht sie um.

  • Ich hab da was in grua`s Signatur gefunden!

    Ist das was für mich?

    Die Rotation der Erde wurde in den letzten Jahren primär durch sich im Grab umdrehende Musiker angetrieben - Mainstream sei dank.

  • @ scharfis_brain:

    Stimmt auch wieder - per "AssumeBFF" würden die Fields in der anderen Reihenfolge separiert werden, und dann stimmt's auch wieder mit der SelectEvery-Auswahl.

    Bild: Siehe ^ Anhang.
    __

    @ Eastermeyer:

    Code
    function ReinterlaceBob(clip a, bool "tff") {
      tff = Default(tff,true)
      a = tff ? a.AssumeTFF() : a.AssumeBFF()
      a = a.ConvertToYUY2()
      SeparateFields(a).SelectEvery(4,0,3).Weave()
    }

    Exakt das. Na, haben wir das Rad eben noch mal erfunden... :redface:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!