Video/Audio asynchron -> Fehler beim Script?

  • Ich möchte ein Video (Länge ca. 3 Minuten) in eine mpeg-2-Datei konvertieren. Dazu habe ich folgendes Script geschrieben:

    Code
    DirectShowSource("Datei.mpg")
    AssumeFPS(25.000, true) [color=gray]-> laut Fit2Disk
    [/color]ResampleAudio(48000)
    CropBottom(4)
    Trim(360,5898)
    BicubicResize(352,272,1/3,1/3,9,0,334,236) [color=gray]-> laut Fit2Disk
    [/color]AddBorders(0,8,0,8) [color=gray]-> laut Fit2Disk
    [/color]ConvertToYV12() [color=gray]-> für QuEnc bzw.[/color] ConvertToRGB24() [color=gray]-> für TMPG[/color]


    Diese avs-Datei habe ich erst mit dem QuEnc in eine m2v-Datei umgewandelt. Dann habe ich mit VirtualDubMod eine wav-Datei erstellt die ich mit BeSweet (toolame.exe) in eine mp2-Datei umgewandelt habe und anschließend mit bbMPEG (mpeg-2 gewählt) sowie TMPG-Mulitiplexer zusammengefügt habe. Das Ergebnis war eine am Ende um ca. 1 Sekunde asynchrone mpeg-Datei.

    Das gleiche passierte als ich die avs-Datei in den TMPGEnc geladen habe also muss der Grund beim Script liegen.

    Ein kluger Mann widerspricht keiner Frau ... er wartet bis sie es selbst tut.

  • Das Ausgangsvideo hatte 29.970. Die m2v hatte dann 25.000 (wie ich's im Script geschrieben habe). Wie ich die Framerate einer mp2 abfrage weiß ich nicht, aber ich habe ja die wav-Datei aus dem oben geschriebenen Script erstellt und bei der Umwandlung in mp2 in BeSweet nichts verändert.

    Ein kluger Mann widerspricht keiner Frau ... er wartet bis sie es selbst tut.

  • Zitat von seeigel

    dann solltest du auch die geschwindigkeit des Tons ändern (dem Video anpassen) - mit besweet - Besweetgui unten rechts
    http://forum.gleitz.info/showthread.php?t=9723
    einstellungen einfach probieren

    Tja, ich dachte eben das hat sich schon erledigt, da ich im Script bereits die Framerate auf 25 geändert hatte und die wav-Datei ja auch diesem Script erstellt wurde.

    Warum trotzdem der TMPG ein asynchrones Video liefert ist mir nicht ganz klar (den habe ich auch mit dem Script wie oben gefüttert).

    Ein kluger Mann widerspricht keiner Frau ... er wartet bis sie es selbst tut.

  • Zitat von seeigel

    du hast im Script die Videoframerate geändert - die dazu gehörende Audio"framerate" hast du vermutlich nicht geändert


    Hab mal ins AviSynth-Handbuch geguckt, dort hab ich AssumeSampleRate() gefunden. In dem Beispiel dazu wird ein Clip mit 25fps und 44100Hz mit
    AssumeSampleRate(22050)
    AssumeFPS(12.5)
    auf die halbe Geschwindigkeit verringert und trotzdem bleibt Ton und Bild synchron. Hier wurde Samplingrate und Framerate um den gleichen Prozentsatz (in dem Fall 50%) verringert.

    Wenn ich nun die Framerate von 29.970fps auf 25fps ändere, müsste ich, dem Beispiel oben folgend die Samplingrate auch um diesen Prozentsatz verringern, was irgendwas um die 36500Hz sind und das wiederum entspricht ja nicht mehr der Spezifikation, egal ob ich das Ergebnis als VCD, SVCD oder DVD brennen will.

    Denkfehler??????? Wahrscheinlich.

    Ein kluger Mann widerspricht keiner Frau ... er wartet bis sie es selbst tut.

  • OK, ich laß' mal kurz die getrennte Verarbeitung von Audio und Video außen vor. Ich hab hier irgendwie ein Verständnisproblem. Laut AviSynth-Handbuch müsste wenn ich AssumeFPS(25.000, true) setze, die Framerate auf 25fps geändert werden und Ton und Video bleiben synchron. Beim Ausführen des Scripts stimmt das auch. Dann habe ich das Script im TMPG geladen und der brachte mir ein asynchrones Video. Wie gesagt, alles mit BeSweet lasse mal kurz außen vor. Beim TMPG habe ich als Output eine Framerate von 25fps eingestellt (wie in der Input-AVS), die Sampling frequency habe ich ebenfalls (wie voreingestellt) bei 44100 gelassen (wie beim Ausgangsvideo). Ich verstehe einfach nicht, warum der TMPG alles wieder asynchron macht, obwohl das ja im avs-Script gestimmt hat.

    Ein kluger Mann widerspricht keiner Frau ... er wartet bis sie es selbst tut.

  • ich würde statt AssumeFPS den Befehl ConvertFPS verwenden:

    AssumeFPS ändert die Anzahl d. Frames nicht, daher wird das Video anschl. schneller bzw. langsamer abgespielt. Wenn du den Ton aber original lässt, wirds natürlich asynchron.

    Mit ConvertFPS werden Frames hinzugefügt (sozusagen interpoliert), so dass die Länge des Videos gleich bleibt. Dann passt auch der Originalton dazu und du brauchst in Besweet usw. keine Frameänderung vorzunehmen.

    cu, grua

  • zunächst mal - ich verstehe auch nicht so viel davon
    nur wenn du die FPS vom Video an 25 angleichst solltest du das selbe auch beim Audio tun
    ob du da die Fps in besweet von 29.97 auf 25 oder von 23.97 auf 25 verändern musst weis ich nicht - einfach probieren

    das bedeutet das du den Ton in Besweet schneller bzw. langsamer machen musst damit der Ton hinterher noch syncron ist
    es sei denn du würdesteden Ton gleich mit umwandeln aber wo ist dann das sync_audio = true


    Edit: hast du einen bestimmten Grund weshalb du von NTSC zu Pal wechselst - wenn nicht hättest du keine Probleme mit asyncron

  • Ich habe sowohl AssumeFPS(25.000, true) und ConvertFPS(25.000) in ein Script geschrieben und den TMPG damit gefüttert und beide mal wurde wieder Ton asynchron, wieder um die berühmte Sekunden am Ende - aber wieder nur beim Ausgabevideo, wenn ich das Script ansehe, ist alles synchron. Aber auch wenn ich alles als AVI-Datei in VirtualDub (nur mal zum Test) speichere ist alles asynchron. In den Programmen selber habe ich nichts geändert (Framerate oder so).

    @ Seeigel

    Leider muss ich das Video auf 25fps bringen, da das Video nur eines von vielen sein wird, das auf die Disk kommt und der Großteil bereits 25fps hat.

    EDIT:
    Hab jetzt mal folgendes versucht:
    1. Laden der mpeg-Datei in VirtualDubMod und speichern als unkomprimierte AVI-Datei ohne irgendwelche Eigenschaften zu ändern (kein schneiden, kein FPS ändern, nichts) => synchron

    2. Folgendes Script in VirtualDubMod geladen:

    Code
    DirectShowSource("datei.mpg")
    Trim(310,5898)


    In VDubMod wieder nichts verändert, im Script wie man sieht auch nichts. Ergebnis => asynchron

    Jetzt bin ich total ratlos.

    Ein kluger Mann widerspricht keiner Frau ... er wartet bis sie es selbst tut.

Jetzt mitmachen!

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