Matroska-Video wie in VirtualDub bearbeiten - womit?

  • Mit virtualdub kann man keine Matroska Files verarbeiten, was sehr sehr schade ist. VirtualdubMod kann es so ein wenig, allerdings werden meine Dateien nicht akzeptiert. Es ist außerdem alt und wird offensichtlich nicht mehr weiter Entwickelt :(

    Avidemux2 braucht auch eine ganze weile bis ein HD mkv Datei eingelesen wurde. Es kommt es mit bframes in h264 steams nicht so richtig zurecht.

    Welche Tools gibt es also, mit dem man unproblematisch alle Dinge tun kann, die man mit VirtualDub und AVIs auch tun kann?

    EDIT: Avidemux2 kann man zumindest dafür gebrauchen hinten was abzuscheiden. Es funktioniert allerdings erst richtig, nachdem rebuild Frames durchgelaufen ist. Kann es sein, das mkv's aus x264 nicht so dolle sind?
    Wenn man vorn was abschneidet, dann wird es asynchron (AC3 ton)

    2 Mal editiert, zuletzt von 3ds (29. Oktober 2008 um 17:10)

  • Bisher noch keine anderen, zumindest wissen wir hier noch nichts davon.

    Je komplexer ein Videoformat, umso schwieriger ist nachträgliche Bearbeitung sowieso. Deshalb sollte man rechtzeitig vorher wissen, was man wirklich haben will, bevor man anfängt, seine ach so wertvollen Originale mit extremst rechenintensiver Kompression zu sichern.

  • Über AviSynth und den DirectShow-Filter kannst Du Matroskadateien in VirtualDub einlesen und praktisch wie ein AVI bearbeiten, allerdings nur als AVI wieder speichern. Mußt Du also danach wieder in MKV "ummuxen".

    --- clip.avs ---
    DirectShowSource("dateipfad\filename.mkv")
    --- clip.avs ---

    Das als Beispiel dafür, wie die Datei aussehen könnte. Vorraussetzung ist natürlich, daß auf Deinem PC Matroskadateien generell über DirectShow geöffnet werden können.

    P.S.: Ich habe ffdshow installiert. Damit läßt sich dann über AviSynth und DirectShow so gut wie alles in VDub öffnen.

    Gruß,
    Silvermoon

    Einmal editiert, zuletzt von Silvermoon (29. Oktober 2008 um 20:04)

  • Das ist nicht wirklich korrekt...

    AviSynth decodiert immer. Was du per DirectShowSource über AviSynth liest, bekommst du als unkomprimiertes Video (und Audio) geliefert, und musst zum Schluss alles neu encodieren (was natürlich meist Qualität und sehr viel Zeit kostet). Wenn das allerdings nicht stört, dann spricht nichts dagegen, mit VirtualDubMod oder MeGUI auch wieder eine Matroska-Datei zu erzeugen.

    Dieses Verfahren über AviSynth eigenet sich definitiv nicht dafür, Matroska-Dateien weitgehend verlustlos zu bearbeiten, und das enthaltene Material dabei in seiner ursprünglichen Encodierung zu erhalten - z.B. "nur zu schneiden".
    __

    Darüber hinaus eignet sich AVC-Video generell nicht dafür, nachträglich noch bearbeitet zu werden. Verlustfrei könnte man es nur an IDR-Frames schneiden (die u.U. mehrere hundert Frames, also einige Sekunden, auseinander liegen können). Alle anderen Frames im Video haben teilweise mehrere Verweise auf den Inhalt anderer Bilder. Würde man den wegschneiden, könnte alles, was davon abhängig ist, nicht mehr decodiert werden.

    Allerdings muss eine Matroska-Datei ja nicht unbedingt AVC-Video beinhalten. Also kann man nicht unbedingt dem Kontainer die Schuld geben. Außerdem existiert das Matroska-Format auch noch nicht seit mehr als 15 Jahren, wie bei AVI (das gibt es seit "Video for Windows", etwa mit Windows Version 3.1 - somit bereits weit vor 1995).

  • Mh, mag sein. Wenn ich Matroskadateien in VDub öffne, encodiere ich sie grundsätzlich neu, sodaß mir bislang egal war, wie die Daten dort ankommen - Hauptsache, sie lassen sich weiterverarbeiten. Jedenfalls konnte ich so immer meine üblichen Bearbeitungen vornehmen.

    Gruß,
    Silvermoon

  • Mit virtualdub kann man keine Matroska Files verarbeiten, was sehr sehr schade ist. VirtualdubMod kann es so ein wenig, allerdings werden meine Dateien nicht akzeptiert. Es ist außerdem alt und wird offensichtlich nicht mehr weiter Entwickelt :(

    Avidemux2 braucht auch eine ganze weile bis ein HD mkv Datei eingelesen wurde. Es kommt es mit bframes in h264 steams nicht so richtig zurecht.

    Welche Tools gibt es also, mit dem man unproblematisch alle Dinge tun kann, die man mit VirtualDub und AVIs auch tun kann?

    EDIT: Avidemux2 kann man zumindest dafür gebrauchen hinten was abzuscheiden. Es funktioniert allerdings erst richtig, nachdem rebuild Frames durchgelaufen ist. Kann es sein, das mkv's aus x264 nicht so dolle sind?
    Wenn man vorn was abschneidet, dann wird es asynchron (AC3 ton)

    Genau vor diesem problem stand ich auch, als ich mkv für mich entdeckt hatte. allerdings habe ich für mich auch eine perfekte lösung gefunden.

    mkv's lassen sich wirklich nur sehr schwer oder gar nicht bearbeiten (zumindestens nicht mit grafischer oberfäche wie in VD)

    jedoch: wenn das mkv-file einen videostream enthält welches genügend keyframes gesetzt hat ist das schneiden von solchen mkv's kein problem.

    mit mkvmerge GUI, unter "Global" kann man Splitting after timecodes auswählen. dann einfach die zeiten eintragen und muxen. wenn bloß vorne und hinten was abgeschnittern werden soll ist es ja recht simple.

    hubble

  • Also wie ich schon geschrieben hab, Avidemux2 kann mkv verabreiten, will aber erst noch ein aufwändiges rebuild frames machen.

    Nun Frage ich mich ob man bei mkvmerge evtl. eine andere Einstellung bei "Cues" machen sollte. In der Hilfe steht:

    Zitat

    Cues: The cues are for Matroska what the index is for AVI files. They contain links to the key frames. Usually this option should be left on the value 'default'. mkvmerge will automatically chose the best method for any given track type. A full explanation of tracks can be found in mkvmerge's documentation.

    In der mkvmerge Dokumentation steht es etwas versteckt:

    Zitat

    --cues <TID:none|iframes|all> Controls for which tracks cue (index) entries are created for the given track (see section TRACK IDS). none inhibits the creation of cue entries. For iframes only blocks with no backward or forward references ( = I frames in video tracks) are put into the cue sheet. all causes mkvmerge to create cue entries for all blocks which will make the file very big.
    The default is iframes for video tracks and none for all others. See also option --no-cues which inhibits the creation of cue entries regardless of the --cues options used.

    Einstellen kann man ja:

    • default
    • only for I frames
    • for all frames
    • none

    Default steht also für "only for I frames". Avidemux2 mach dennoch ein rebuild, warum?

    Ich teste da jetzt mal...

    EDIT: Im Avidemux2 Forum habe ich nur diesen einen Eintrag über mkv gefunden: http://avidemux.org/admForum/viewtopic.php?id=3155 Demnach ist die Unterstützung nur rudimentär :( Allerdings ist der Forumseintrag auch von 2007. In den NEWS sind hin und wieder einträge über verbesserte mkv Unterstützung: http://avidemux.sourceforge.net/news.html

    Ich frage mich gerade auch, ob OGM vielleicht eine bessere Alternative zu mkv ist. Was meint ihr? Wobei es IMHO auch nicht viele ORM Tools gibt, oder?

    EDIT2: Noch eine ganz andere Alternative, wäre es m2ts Files mit tsMuxeR zu erstellen, siehe:
    http://www.bitburners.com/articles/conve…g-tsmuxer/4015/
    Wobei m2ts nicht gerade ein Freies Format ist, was? Nach dem Wikipedia Artikel gibt es auch noch unterschiedliche "Unterformate" einmal von Sony und einmal von Panasonic. Spricht nicht gerade für dieses Format ;)

    2 Mal editiert, zuletzt von 3ds (30. Oktober 2008 um 09:55)

  • So, hab mal ein Test gemacht. Egal ob Cues mit "only for I frames" oder "for all frames" gemuxt wurden, Avidemux2 will erstens diese Bframe index zeugs immer machen (Die Frage nach dem import). Zweitens funktioniert das spulen in avidemux2 immer erst dann, wenn man unter "Tools/rebuild I & B frames" zusätzlich ausgeführt hat, egal welche cues Einstellung.
    Das rebuilding ist wohl nur eine Temporäre Sache für die aktuelle Sitzung. Es wird nicht in einer neu erstellten mkv "gespeichert".

    Für den Test hab ich die ersten 1456 Frames von BigBuckBunny neu encodiert mit folgenden Einstellungen:

    Code
    cabac=1 / ref=4 / deblock=1:-1:-1 / analyse=0x3:0x113 / me=hex / subme=7 / psy_rd=1.0:0.0 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / chroma_qp_offset=-2 / threads=6 / nr=750 / decimate=1 / mbaff=0 / bframes=3 / b_pyramid=0 / b_adapt=2 / b_bias=0 / direct=3 / wpredb=1 / keyint=250 / keyint_min=25 / scenecut=40(pre) / rc=crf / crf=17.5 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / vbv_maxrate=50000 / vbv_bufsize=50000 / ip_ratio=1.40 / pb_ratio=1.30 / aq=1:1.00


    x264 Version "x264 core 65 r999 cc51047"

    Nach dem Encoden habe ich mit mkvmerge nur die Video spur nochmal gemuxt.
    Die Dateigrößen sehen so aus:
    x264 Datei - 73.242 KB
    mkvmerge cues 'none' - 73.246 KB
    mkvmerge cues 'default' - 73.247 KB
    mkvmerge cues 'only I frames' - 73.247 KB
    mkvmerge cues 'all frames' - 73.270 KB
    avidemux2 - 73.231 KB

    Weil die avidemux2 Dateigröße die kleinste ist, steckt darin bestimmt kein Index.

    EDIT: Mal getestet bei einer 7.41GB großen Datei. Die Differenz zwischen "nur I-Frame" und "alle Frames" ist 451KBytes. Also nicht die Welt.

    Einmal editiert, zuletzt von 3ds (30. Oktober 2008 um 11:55)

  • deine mühen sind ja ganz schön und gut. nur leider sehe ich nicht wozu das führen soll und warum, um biegen und brechen du etwas versuchen willst was noch nicht richtig funktioniert, oder besser gesagt nicht unbedingt nötig ist.

    hilfreich wäre es wenn wir wüssten was ganz genau du mit einem video vor hast?
    (klar du hast geschrieben du willst es in Avidemux laden und schneiden oder das selbe für VD). aber ich bin mir sicher das das was du vorhast sicherlich ganz einfach zu realisieren ist. (anfang und ende wegschneiden ??)

    hubble

  • Ja, am liebesten Anfang und Ende wegschneiden. Jedoch muß man ja erstmal die Stelle finden, bei der man Schneiden kann. Das geht natürlich am einfachsten in avidemux2.

    Wobei Anfang schneiden mit h264+AC3 ist keine gute Idee.

  • Ja, am liebesten Anfang und Ende wegschneiden. Jedoch muß man ja erstmal die Stelle finden, bei der man Schneiden kann. Das geht natürlich am einfachsten in avidemux2.

    Wobei Anfang schneiden mit h264+AC3 ist keine gute Idee.

    ok. das ist doch schon mal was.
    ich vermute das große problem wird sein das dein videomaterial (AVC) nicht mit vielen keyframes versehen ist.

    aber dennoch. wenn du im mediaplayer dir den film anschaust weist du doch wo du ungefähr schneiden willst.

    und in mkvmergeGUI gibst du dann die zeit (in richtiger Form) einfach mal ein. mkvmerge schneidet dann automatisch beim nächstmöglichen keyframe.

    als beispiel 00:03:20.000

    es ist auch kein problem h264+AC3 mit mkvmerge zu schneiden.
    synchron bleibt es auf jedenfall auch

    hubble

    PS:

    ich habe hier Serien wo ich immer den Zwischenspann rausschneide und daher encode ich das video mit keyframes max=5 min=1
    dann kann man das entstandene x264.mp4 wunderbar in Avidemux einladen und die keyframes direkt ansteuern.

  • gibt vieleicht ne andere möglichkeit....zumindest mache ich es immer so mkv mit mkv2vob in vob wandeln.Du brauchst die mkv nicht mal neuencodieren.Bei Configuration im Fenster Videotranscoding einfach never angeben.So wird die mkv einfach in ein vob Container gemuxxt.Je nach Rechner 5-15 min.Danach mit dem Programm Chopper XP die Vob laden und man kann darin problemlos herumschnippeln wie man will.

  • Klingt wie 'ne Herzoperation mit Machete. :rolleyes: Entsprechend "blutig" wird dann das Ergebnis vielleicht aussehen.

    Nicht alles, was "möglich" ist, ist auch "sinnvoll" oder "richtig". Vor allem, wenn man nur über Kontainer redet und der Inhalt einem egal ist. Wer nach dieser Methode vorgeht, darf sich über defektes Video an der Schnittstelle nicht wundern.

    Versuche doch erst mal zu verstehen, was P- und B-Frames sind. Und warum Aussagen wie "die Hälfte" oder "zwei weniger" nutzlos sind ohne zu wissen "wovon".

  • Ich habe nur versucht zu helfen.Und gebe hier nur einen Anstoss wie man es machen könnte ;)
    Natürlich ist es kein Allheilmittel aber soweit ich es verstanden habe wollte er etwas auf die schnelle finden.

Jetzt mitmachen!

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