Audio- und Videozergögerung in Matroska

  • Hallo,

    da bei mir der Speicherplatz langsam knapp wird, das Mainboard meines HTPCs aber Probleme mit Platten von mehr als 2TB hat und ich derzeit keine Lust auf neue Hardware habe, muss ich ein paar bisher ohne Komprimierung gespeicherten Videos eindampfen. Erstellt wurden die alle mal mit MakeMKV, Quellen waren TS-Streams (HDTV). Mediainfo maqcht mir hier Angaben zu einer Videoverzögerung im Videostream, aber auch zu einer Videoverzögerung im Audiostream (das unterstrichene ist kein Tippfehler). Ich glaube auch schon Audioverzögerung im Audiostream gesehen zu haben. Hier gab es ein paar Sync-Probleme. Ich hab die Audiospuren mit MKVExtract demuxt, das Video per lwlibavvideosource() geladen und durch x264 gechickt. Die Audiospur wurde dann von AC3 in AAC per QAAC (in Megui) gewandelt. Dann das ganze per MKVMergeGUI gemuxt. Im VLC und im XBMC war das ganze etwas asynchron, die im aktuellen angezeigte Videoverzögerung im Audiostream von 250ms kommt in etwa hin. Lade ich aber das Video inkl. Audiostream (lwlibavaudiosource) und spiele die AVS im MPC-HC (mit ffdshow als Decoder) ab ist alles synchron.

    Ich dachte nun, dass beim muxen einer MKV das setzen eines Delays immer unwiderruflich ist, so dass man später nicht mehr Delays manuell auslesen muss. Ist wohl falsch. Weiß einer was es mit der Videoverzögerung im Audiostream auf sich hat? Eigentlich setzt man Delay doch im Audio- oder UT-Stream, nicht im Video?

    _________________________

    Zitat

    Zieht ein Bienenschwarm aus, so wird er herrenlos, wenn nicht der Eigentümer ihn unverzüglich verfolgt oder wenn der Eigentümer die Verfolgung aufgibt.


    § 961 BGB [Eigentumsverlust bei Bienenschwärmen]

    :D

  • Falls nur zwei Stream beachtet werden gilt: negativer Delay bei einen Stream ist das Gleiche wie ein positiver Delay beim anderen Stream.
    Wo welche Delays gesetzt werden hängt davon ab:
    a. was unterstützt der Kontainer (mp4 z.B. erlaubt nur positive Delays)
    b. was wählt der User (wenn der Kontainer jeden Stream einen eigenen Delay geben kann, kann man da rumspielen wie man will)
    c. was unterstützen die Decoder/Splitter nicht alle Player unterstützen positive und negative Delays in allen Streams.

    Nebenbei sei angemerkt, dass beim Remuxen von HDTV Content auch gerne mal vfr Material entsteht um Fehler in Stream bzw. dem seinen Headern zu kompensieren.
    Wenn man es mit vfr Material zu tun hat, sollte man nie vergessen die Timestream(s) mit zu beachten.

    Cu Selur

  • (mp4 z.B. erlaubt nur positive Delays)


    Nein, sowohl negative als auch positive Delays sind möglich.

    Ich dachte nun, dass beim muxen einer MKV das setzen eines Delays immer unwiderruflich ist, so dass man später nicht mehr Delays manuell auslesen muss. Ist wohl falsch. Weiß einer was es mit der Videoverzögerung im Audiostream auf sich hat? Eigentlich setzt man Delay doch im Audio- oder UT-Stream, nicht im Video?


    Die Delayinformationen jeder Spur (egal ob Video, Audio oder Untertitel) sind im Matroska-Container hinterlegt. Beim Demuxen werden die Spuren wieder in ihre Rohformate geschrieben, welchen entsprechende Speichermöglichkeiten fürs Delay fehlen. (absehen von den Untertitel-Formaten)

  • eac3to scheint aber beim demuxen die Delays zu berücksichtigen?

    _________________________

    Zitat

    Zieht ein Bienenschwarm aus, so wird er herrenlos, wenn nicht der Eigentümer ihn unverzüglich verfolgt oder wenn der Eigentümer die Verfolgung aufgibt.


    § 961 BGB [Eigentumsverlust bei Bienenschwärmen]

    :D

  • Wenn die Videospur als Basis angenommen wird (was oft der Fall ist, da Audiospuren meist eine geringere Komplexität und feinere "Granularität" haben, also leichter hinreichend exakt zu schneiden sind), gibt es für die Audiospur folgende Möglichkeiten, ein synchrones Ergebnis auszugeben (was also beim erneuten Multiplexen nicht verschoben werden muss, um Synchronität wiederherzustellen):

    • Synchroner Start (der erste Audioblock hat den gleichen Zeitstempel wie das erste Videoframe): optimal.
    • Negativer Delay (es existieren bereits Audioblöcke zeitlich vor dem ersten Videoframe): Beim Demultiplexen könnten so viele Audioblöcke weggelassen werden, bis der Audioblock mit der geringsten Timecode-Differenz zum ersten Videoframe zur Ausgabe kommt
    • Positiver Delay (es existieren bereits mehrere Videoframes, bevor der erste Audioblock kommt): Beim Demultiplexen müsste die Tonspur mit bekannten Audioblöcken gleicher Kanalkonfiguration (und evtl. Bitrate bei CBR-Audio) aufgefüllt werden, um die Verschiebung mit stillem Material zu ersetzen


    Wird die Tonspur dagegen ohne Korrektur einer Verschiebung demultiplext, wird alternativ meist im Dateinamen ein Hinweis hinterlassen, welche Verschiebung beim erneuten Multiplexen zu wählen sei.

    Was nun eac3to unter welchen Voraussetzungen kann, habe ich leider keinen Überblick; der Ausgleich einer positiven Verschiebung der Audiospur zur video-Basis durch Auffüllen mit Stille ist aber insofern aufwändig, dass dafür Ersatz-Audio-Blöcke in bekannten Formaten vorliegen müssen...

  • Hab hier eine Best-of-Disk und wollte einzelne Titel des gleichen Themas zusammenmuxen. Hab dazu erst mit MakeMKV die einzelnen Titel als MKV erstellen lassen und dann in AVC und AAC umrechnen lassen. Erst danach habe ich die einzelnen Titel mit MKVMerge zusammengemuxt, so dass ein langes Video entsteht. Bei allen Titeln zeigt mir mediainfo im Audiostream eine Videoverzögerung an. Ich bin jetzt unsicher wie ich das MKVMerge beim neu muxen der Einzeltitel mittelen müsste. In MKVMerge an ich für alle Spuren Delays setzen. Wenn jetzt im Audiostream eine negative Videoverzögerung steht - was wird dann letztlich zu früh gespielt? Ich würde das so intepretieren, dass bei einer Videoverzögerung von -24 die Audiospur 24ms zu spät beginnt.

    Merkwürdig an dem ganzen ist auch, dass wenn ich bei der zusammengemuxten Datei zu einem Kapitel springe (ich habe per MKVChap je Titel ein Kapitel erstellen lassen) sind die Titel synchron. Lasse ich das durchlaufen hab ich irgendwann mal eine Asynchronität drin.

    _________________________

    Zitat

    Zieht ein Bienenschwarm aus, so wird er herrenlos, wenn nicht der Eigentümer ihn unverzüglich verfolgt oder wenn der Eigentümer die Verfolgung aufgibt.


    § 961 BGB [Eigentumsverlust bei Bienenschwärmen]

    :D

  • MediaInfo zeigt bei den Tonspuren "Delay relative to video" an, d.h. die Differenz vom Start des ersten Videobildes zum Start des ersten Audiosamples. Wenn dort "-24ms" steht, heißt dies, daß die Tonspur 24ms vor der Videospur beginnt.

    Was ist denn überhaupt das Ziel der Übung? Wenn Du die mkv-Dateien per mkvmerge aneinanderhängst, sollte mkvmerge das alles von selbst synchron halten. An den Schnittstellen kommt es dabei zu kleinen Sprüngen, vermutlich kann Dein Videoplayer damit nicht gut umgehen. Das Problem ist für die Player nicht ganz trivial, da Timecodes in mkv fast immer einem gewissen Jitter unterliegen bzw. teilweise fehlerhaft gemuxt sind. Kleine Unterschiede werden deshalb manchmal absichtlich "verschluckt", was ggf. durch Seeken behoben werden kann. Nutzt Du LAV Filters oder etwas anderes?

  • Die Wiedergabe erfolgt unter Linux mit Kodi.

    Zitat

    Was ist denn überhaupt das Ziel der Übung?

    Was wohl? Das ganze synchron zu halten. :lol:

    _________________________

    Zitat

    Zieht ein Bienenschwarm aus, so wird er herrenlos, wenn nicht der Eigentümer ihn unverzüglich verfolgt oder wenn der Eigentümer die Verfolgung aufgibt.


    § 961 BGB [Eigentumsverlust bei Bienenschwärmen]

    :D

  • Wenn Dein Player damit nicht klarkommt, mußt Du schlimmstenfalls erneut encodieren - zumindest den Ton. Vielleicht kann man auch etwas frickeln, je nachdem wie viel Du bereit bist an Arbeit reinzustecken und wie groß die Timecode-Lücken sind. Ziel wäre dann, die Timecodelücken aufzufüllen bzw. überstehenden Ton rauszuschneiden. Darum bei solchen Aktionen immer bereits in AviSynth o.ä. zusammenfügen, damit man hinterher alles aus einem Guß hat.

  • Zitat

    MediaInfo zeigt bei den Tonspuren "Delay relative to video" an, d.h. die Differenz vom Start des ersten Videobildes zum Start des ersten Audiosamples. Wenn dort "-24ms" steht, heißt dies, daß die Tonspur 24ms vor der Videospur beginnt.

    Ich hol das Thema nochmal hoch, da ich jetzt ein Video habe mit "Delay relative to video" von 31ms. Das heißt, dass die Tonspur 31ms nach der Videospur beginnt., das heißt eine Audioverzögerung. Richtig? Möchte ich das ganze mit AviSynth korrigieren wäre delayaudio(0.31) zu wählen und wenn nur neu gemuxt werden soll in MKVMergeGUI bei Audioverzögerung 31ms.

    Ich frag das deswegen, weil bei einem so geringen Delay man nicht unbedingt gleich eine Stelle findet bei der man den Delay auch merkt. Das passiert häufig erst bei ansehen, bei passenden Szenen.

    _________________________

    Zitat

    Zieht ein Bienenschwarm aus, so wird er herrenlos, wenn nicht der Eigentümer ihn unverzüglich verfolgt oder wenn der Eigentümer die Verfolgung aufgibt.


    § 961 BGB [Eigentumsverlust bei Bienenschwärmen]

    :D

  • Ich hol das Thema nochmal hoch, da ich jetzt ein Video habe mit "Delay relative to video" von 31ms. Das heißt, dass die Tonspur 31ms nach der Videospur beginnt., das heißt eine Audioverzögerung. Richtig?


    Korrekt.

    Möchte ich das ganze mit AviSynth korrigieren wäre delayaudio(0.31) zu wählen


    Kommt drauf an. Kann sein, daß der Sourcefilter das bereits automatisch macht, wenn Du direkt aus z.B. mkv oder mp4 list. Müßte bei L-Smash und ffms2 der Fall sein. (Wenn Du also sowohl Video als auch Ton über einen dieser Filter lädst.)

    wenn nur neu gemuxt werden soll in MKVMergeGUI bei Audioverzögerung 31ms.


    Kommt drauf an. Wenn Du direkt von mkv liest, macht mkvmerge das eigentlich automatisch. Bei mp4 auch, da gibt es aber teilweise Fallstricke. Ich glaube aber nur bei negativen Delays in mp4 und dann nur bei bestimmten Varianten. Bin mir da auf Anhieb nicht ganz sicher.

Jetzt mitmachen!

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