Wie kann man ein VFR-Video (mkv) schneiden und recodieren?

  • Hallo,
    ich habe zur zeit einige videos die mit VFR encodet sind. bei den videos möchte ich gern in der mitte etwas rausschneiden und danach encoden.
    Aber wie mache ich das mit der timecode datei?

    hab bisher nicht so viel mit VFR gearbeitet und hab daher wenig erfahrung. bisher hab ich die TC datei mit mkvExtractGUI extrahiert und nach dem encoden wieder reingemuxxt. Aber schneiden hab ich nie gemacht.

    is das möglich?
    Als tool verwende ich momentan staxrip welches wohl noch nichts von timecode dateien oder VFR gehört hat. Hoffendlich kann mir einer helfen :)

  • :hm: "Deutsche Fragesätze bilden aber wie" :nein:
    __

    Geschnitten wird bei der Recodierung "logisch" durch die Funktionen Trim() und {Un}AlignedSplice() im AviSynth-Skript, das den Encoder mit dem Video versorgt. Leider würde beim Schneiden nicht berücksichtigt, dass die VFR-Timecodedatei eigentlich auch mit geschitten werden müsste. Das müsste dann wohl zusätzlich mit dem Texteditor passieren (sofern die VFR-Timecodedatei überhaupt eine Textdatei ist, ich hab so was noch nie benötigt...).

  • Ja, das sind reine Textdateien, welche man in der Tat mit der beschriebenen Methode bearbeiten könnte. Je nach Timecode-Format könnte es allerdings zu umständlich sein, um es nur mit der Hand zu bearbeiten. Erfordert natürlich auch etwas an Verständnis des Problems.

    Wenn es nicht unbedingt VFR sein muß, bietet sich auch das Umwandeln zu CFR an.
    Habe es selbst nicht getestet, aber SolveigMM Video Splitter soll ganz brauchbar sein, was man so liest.

    Wenn man nur an Keyframes schneiden möchte, kann man auch mit mkvmerge selbst schneiden. Dazu einfach im GUI im "Global"-Reiter die entsprechenden Zeiten setzen.

  • Hi, das einfachste wäre doch das Video anhand der Timecodes zu decodieren, zu schneiden und das CFR neu zu encoden. Danach brauchst du 'eh keine Timecode Datei mehr.
    Eigentlich müßte FFDshow + Co das VFR Material richtig decodieren (auch ohne TC). Ich wüßte keine Möglichkeit wie ich avisynth mit Timecodes füttern könnte ...

  • AviSynth arbeitet immer mit konstanter Framerate. Deshalb speichert man ja auch die Anzeigedauer pro Frame in einer zusätzlichen Datei, konvertiert das Video, als hätten alle Frames die gleiche Dauer, und passt in der Kopie dann wieder die Anzeigedauern aller Frames an.

    Das Decodieren mit DirectShow-Decodern wäre keine Hilfe, da AviSynth hier entweder die Anzeigedauern ignoriert oder (convertfps=true) eventuell Geruckel erzeugt:

    Zitat

    When setting it to true, it turns variable framerate video (vfr) into constant framerate video (cfr) by duplicating or skipping frames. This is useful when you want to open vfr video (for example mkv, rmvb, mp4, asf or wmv with hybrid video) in AviSynth. It is most useful when the fps parameter is set to the least common multiple of the component vfr rates, e.g. 120 or 119.880.


    Bedeutet: VFR-Videos haben nicht tatsächlich eine "variable Framerate" insofern, dass jedes Frame "seine eigene Framerate" hat, sondern insofern, dass das gesamte Video eine sehr hohe Framerate hat und jedes Frame seinen Faktor hat, wie oft es vervielfacht und dadurch länger angezeigt wird (man erinnere sich an das "kleinste gemeinsame Vielfache").

  • Ist so pauschal nicht korrekt. Bei Matroska hat tatsächliches jedes Bild seinen eigenen Zeitstempel (Als timecodes_v2-Datei eine Zeile/ein Zeitstempel pro Bild). Einige Capture-Programme nehmen beispielsweise so "frei" auf.

  • ... nur wie hilft uns das jetzt weiter ?
    Ok, nehmen wir an das Ganze ist in .mkv eingepackt (sagte der Threadersteller ja auch). Dann müßte der Matroska Splitter doch die "richtige" Framerate liefern.
    Ist die dann tatsächlich variabel und kann avisynth dann (convertfps=true) daraus ein CFR Vid daraus machen ?
    Und wie schaut's bei anderen Containern aus ? Ich kenne da eigentlich nur .flv was VFR kann/verwendet vielleicht noch .rm ...

  • Wie schon gesagt: Aus herkömmlicher Sicht (Videoqualität, Zuverlässigkeit) optimal wäre es, Videos in AviSynth mit nativen AviSynth-Source-Funktionen zu öffnen. Diese würden sich aber nicht um VFR kümmern, die lesen nur den Videostream. Wer da also schneiden muss, der müsste dann auch die Timecode-Liste mit schneiden und korrigieren.

    Wer per DirectShowSource(fps=#, convertfps=true) das Video lädt, muss damit rechnen, dass sich in seinem Video die Frames auf den vorgegebenen Framerate-Takt vervielfachen oder verlorengehen, im Ergebnis also eventuell ein Ruckeln entsteht. Das wird aber auch nicht viel schlimmer sein als das Ruckeln, das ebenso durch die feste Bildwiederholfrequenz des Monitors entsteht, auf dem man sich ein VFR-Video anschaut.

  • Wenn Du von "ffdshow" und "Matroska Splitter" redest, redest Du von DirectShow, welches tatsächlich VFR unterstützt. Und ja, mit "convertfps=true" kann es von der DirectShowSource()-Funktion zu CFR gewandelt werden. MP4 unterstützt ebenfalls VFR. Ich glaube bei wmv gab es auch VFR, kenne mich da aber nicht so genau aus.

    /edit:
    Lighs Beitrag kam dazwischen.

  • ich habs jetzt erst mit keyframe schneiden versucht, nur leider passt es nicht ganz.
    am ende habe ich dann das video in eine CFR encodet.

    vielleicht wird ja mal ein tool erstellt welches das schneiden schnell und einfach annimmt.

Jetzt mitmachen!

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