Untertitel mal asynchron und mal nicht

  • So, auf ein neues.

    Also ich encode ein video mit variabler framrate.

    ich mache das per mp4box, cmd, perl/strawebrry in dem ich die timecodedatei nach dem encode mit ins video haue.

    Ansich geht das ja nur folgendes:

    Ich setze 3 ass dateien beim encoden ins video.
    2x karoke timing mit einem fx im opening und im ending.
    Und einmal der hauptuntertitel mit dem dialog was geredet wird.

    Nun passiert folgendes was ich einfach nicht hinbekomme.
    Nach dem encoden und das imporitieren der timecodedatei ist der hauptuntertitel 100% synchron.
    Das opening war nicht synchron aber dafür das ending. Nach mherfachen versuchen, mehr als 10 mal encoden nachtimen usw., war dann das opening synchron aber dafür das ending nimmer. ers läuft anfangs synchron aber nach ein paar sekunden wird er a-synchron und fängt an vor dem gesang weg zulaufen. das war beim opening auch.

    nun steig ich da nimmer durch und hab schon n schädel von dem vielen encoden ~_~

    hoffe das da jemand was weiss (selur anschaut :P).

    Schon nervig geworden, der final scheitert nur an dieses kleinben problem und ich komm nicht drauf <_<

    PS: ich exportiere den sub, also ich stelle ein das der untertitel auch eine variable framrate hat wie das video hat.

  • Zitat

    hoffe das da jemand was weiss (selur anschaut :P).


    Was mir in den Sinn kommt:
    vfr + Untertitel -> Beileid, da müsste man die Timings der Untertitel anpassen,...
    Soweit ich mich entsinne kann man so etwas mit Aegisub fixen, hab ich aber Jahre schon nicht mehr gemacht. (gibt also eventuell mittlerweile auch noch andere Subtitle Editoren die vfr unterstützen,.. vielleicht 'Subtitle Workshop')

    Cu Selur

  • aegisub nutze ich seid 2 jahren ;)
    mit der passe ich die framrate an beim exportieren, müsste ich schauen ob ich ne spezielle funktion übersehen hab beim arbeiten des subs. weiss nur das mit exportieren.

  • Das Problem an deiner Videoquelle ist wohl gerade, dass sie keine gleichmäßige Framerate hat (VFR = Variable Frame-Rate). Ein "Anpassen der Framerate" wäre also gerade das, was hier nicht klappt, weil sie nicht für die gesamte Dauer gleichmäßig ist.

  • Ich bin mir nicht sicher, ob ich Deinen Post zu 100% verstanden habe: Du willst alle 3 Untertitel fest einbrennen, richtig?

    Achte nochmal auf die Reihenfolge der Arbeitsschritte:
    1. Öffne das Quellvideo in Aegisub, dabei muß entweder
    a) das Quellvideo bereits die Timecodes enthalten (z.B. eine Matroska-Datei)
    b) Du die Timecodes manuell über den Punkt "Video">"Öffne Timecode-Datei" nachladen
    2. Time nun alle Deine Untertitel und speichere sie
    Stelle während keines Schrittes irgendwelche Frameraten oder ähnlich in Aegisub ein (wie LigH schon sagte)
    3. Brenne die Untertitel mit AviSynth ein, dazu brauchste Du eine vfr-fähige vsfilter- oder assrender-Version. Die Timecode-datei gibt's Du mittels des Paramenters "vfr" ein. (z.B.: "textsub("unterntitel.ass",vfr="timecodes.txt")" oder "assrender("untertitel.ass",vfr="timecodes.txt")
    4. Enkodiere das AviSynth-Skript
    5. Muxe Video und Audio und gib dem Muxer dabei die Timecodes für das Video.

    Das Ganze läßt sich noch etwas abwandeln, aber ist zumindest eine mögliche Lösung.

  • Also mit der methode von sneaker2 hab ich es versucht.

    Problem ist nur wenn ich

    TextSub("C:\Subs\ZKCed7.ass",vfr="C:\Subs\zettai7time2.txt")

    eintrage kackt megui ab.

    Mein originalscript sieht normal so aus:


    Ansich hat es ja funktioniert, der Hauptuntertitel läuft synchron.
    Das opening nun auch, davor lief aber das opening a-synch und das ending snych nun ist es grad anderstrum und ka wie ich das gemacht hab. die methode war immer die selbe, hab in 2 tagen das 20 mal neu encodet, sub op und ed nachgetimet usw.

  • Öffnest Du denn die Quelldatei mit Timecodes?
    Wo man durcheinanderkommen kann, ist sicherlich die Export-Funktion von Aegisub. Bei jedem Export mit Frameratenanpassung werden alle Timings verändert. Deshalb würde ich die Methode mit dem vfr-Parameter bevorzugen und in Aegisub nur "Datei">"Speichere Untertitel unter..." wählen.

    Was passiert, wenn Du das Script in einem Player öffnest? (MPC, VirtualDub, etc.)
    Hat die timecode-Datei das richtige Format? Also z.b:

    Code
    timecode format v2
    0
    42
    83

    Versuch ansonsten mal eine andere vsfilter-binary, z.B. von xvidvideo.ru. Oder assrender. (Letzteres muß mit "loadcplugin()" geladen werden)

  • Hast du vllt noch nen anderen link für die assrender.dll? die alssen sich alle nicht entpacken. winrar sagt fehlerhafte operation und 7zip sagt mir das die kompressionsmethode nicht unterstützt wird. wird bei allen versionen angezeigt

    edit: timcode datei ist format v2

  • Ah sorry, hab das c übersehen <_<
    danke selur ^^
    k werds mal encoden.
    was mir noch nicht klar ist
    5. Muxe Video und Audio und gib dem Muxer dabei die Timecodes für das Video.

    meinst du nach dem muxen per cmd/mp4box/perl ... rein muxen oder hat da megui ne funktion die ich nicht gesehen hab? ^^

  • hab nun den ton gemuxxt und mit cmd per mp4box die timecode datei reingehauen und nachmal den ton gemuxxt da der ja nicht mit genommen wird. nun ist alles komplett a-synch. nach dem muxen ohne timecode rein hauen auch a-synch.

    mkvmerge macht doch nur mkv? ich brauch aber ne mp4 ^^

  • Zitat

    mkvmerge macht doch nur mkv? ich brauch aber ne mp4 ^^


    dann mp4box :)

    Zitat

    hab nun den ton gemuxxt und mit cmd per mp4box die timecode datei reingehauen und nachmal den ton gemuxxt da der ja nicht mit genommen wird.


    Falls Du die Timecode nicht nach nhml konvertiert hast, musst Du NHTMlTransform oder ein vergleichbares Tool verwenden. :)
    (also erst audio&Video mutliplexen mit mp4box, dann mit NHML die Timecodes hinzufügen)

    Cu Selur

  • in der .bat Datei steht:

    Code
    java -cp . -Xmx512m NHMLTransform %*


    wenn die java.exe des Java Runtime Enviroments nicht im PATH bei Dir leigt musst Du java durch einen absoluten Pfad ersetzen:
    z.B.:

    Code
    "C:\Program Files (x86)\Java\jre6\bin\java.exe" -cp . -Xmx512m NHMLTransform %*

    Cu Selur

  • Nebenbei: wenn man den Videostream reencoded, kann man auch die TimeCodes an x264 übergeben und dem sagen, dass es einen cfr Stream erzeugen soll.



    Nein, kann man nicht. Wenn man --tcfile-in verwendet, ist das Ergebnis eine vfr-Datei. (Solange der Ausgabecontainer es unterstützt)

    5. Muxe Video und Audio und gib dem Muxer dabei die Timecodes für das Video.

    meinst du nach dem muxen per cmd/mp4box/perl

    Vielleicht habe ich Dich mißverstanden: Soll Deine Zieldatei eine variable oder eine konstante Framerate haben? Meine Anleitung ist für ein Ergebnis mit variabler Framerate.

    Für eine konstante Framerate mußt Du nur "FFVideoSource("vfr-quelle.mp4", fpsnum=24000, fpsden=1001)" im Skript verwenden. Die vfr-Parameter kannst Du dann einfach weglassen. Auch bei dieser Variante "Datei">"Untertitel speichern unter..." wählen - NICHT die Exportfunktion.

    Ansonsten meinte ich mit Punkt 5 genau das, was Selur Dir mit NHMLTransform erklärt hat.

    Es gibt noch eine alternative Möglichkeit mit dieser gepatchten x264-Version, die bereits eine fertige mp4-Datei mit Ton und vfr erzeugt, ohne daß man noch mit NHMLTransform nacharbeiten muß.
    Die Kommandozeile sollte dann folgendermaßen aussehen:
    x264 --tcfile-in "timecodes.txt" --audiofile "ton.aac" --acodec copy -o "Zieldatei.mp4" "Quellvideo.avs"
    (Presets, Tunings, CRF etc. nach Geschmack)

Jetzt mitmachen!

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