Untertitel speedUp/slowDown bei den einzelnen Formaten,...

  • Denke momentan daran ein kleines CommandLine Tool zu schreiben, was die Zeitmarken in von Untertitelstreams anpasst, damit sie bei einem SpeedUp/Slowdown des Quellmaterials noch synchron sind.
    (noch keine Zeile Code geschrieben, ist momentan nur eine Überlegung)

    Hier was ich mir bis dato überlegt habe:

    .idx/.sub Untertitel:
    Dem Aufbau der .idx Datei nach zu urteilen:

    Code
    # Vob/Cell ID: 1, 1 (PTS: 0)timestamp: 00:00:14:400, filepos: 000000000timestamp: 00:00:17:440, filepos: 000001000timestamp: 00:00:19:280, filepos: 000002000timestamp: 00:00:21:120, filepos: 000002800timestamp: 00:00:23:600, filepos: 000003800

    sollte es reichen einfach den Wert hinter 'timestamp' auszulesen, in ms umzuwandeln mit dem Skalierungsfaktor zu skalieren und den alten durch den neuen Wert (wieder als hh:mm:ss:zzz) zu ersetzen.

    ttxt Untertitel:
    Dem Aufbau der Datei nach zu urteilen:

    Code
    <TextSample sampleTime="00:00:00.000" xml:space="preserve"></TextSample><TextSample sampleTime="00:00:14.680" xml:space="preserve">At the left we can see...</TextSample><TextSample sampleTime="00:00:17.513" xml:space="preserve"></TextSample><TextSample sampleTime="00:00:17.720" xml:space="preserve">At the right we can see the...</TextSample><TextSample sampleTime="00:00:19.560" xml:space="preserve">...the head-snarlers</TextSample><TextSample sampleTime="00:00:21.400" xml:space="preserve">Everything is safe.Perfectly safe.</TextSample>

    sollte es reichen einfach den Wert hinter 'sampleTime' auszulesen, in ms umzuwandeln mit dem Skalierungsfaktor zu skalieren und den alten durch den neuen Wert (wieder als hh:mm:ss:zzz) zu ersetzen.

    srt Untertitel:
    Dem Aufbau der Datei nach zu urteilen:

    Code
    100:00:14,680 --> 00:00:17,513At the left we can see...200:00:17,720 --> 00:00:19,560At the right we can see the...300:00:19,560 --> 00:00:21,400...the head-snarlers400:00:21,400 --> 00:00:23,675Everything is safe.Perfectly safe.

    sollte es reichen einfach die Zeiten in den Zeilen nach der Untertitelnummer auszulesen, umzuwandeln, zu skalieren und eine neue Zeile zu schreiben.

    .ass Untertitel:
    Dem Aufbau der .ass Datei nach zu urteilen:

    Code
    Dialogue: 0,0:00:15.04,0:00:18.04,Default,,0000,0000,0000,,Auf der linken Seite sehen wir...
    Dialogue: 0,0:00:18.75,0:00:20.33,Default,,0000,0000,0000,,Auf der rechten Seite sehen wir die...
    Dialogue: 0,0:00:20.41,0:00:21.91,Default,,0000,0000,0000,,...die Enthaupter.
    Dialogue: 0,0:00:22.00,0:00:24.62,Default,,0000,0000,0000,,Alles ist sicher.|Vollkommen sicher.

    sollte es reichen den zweiten und dritten der CSV Werte auszulesen, umzuwandln, zu skallieren und auszutauschen.

    Würde mich freuen, wenn der ein oder andere der sich mit Untertitel besser auskennt etwas schreiben könnte:
    1. Habe ich etwas übersehen? Gibt es z.B. bei .ass noch andere Werte 'Dialogue' mit denen eine Zeile anfängt bei der man die Zeiten anpassen sollte? Gibt es irgendwelche Sonderfälle die man kennen und beachten sollte?
    2. Gibt es andere Untertitelformate die man beschleunigen/ausbremsen will, zu denen es Informationen im Netz gibt?
    3. Gibt es eventuell schon ein kleines Tool, was Untertitel per CommandLine beschleunigen/verlangsamen kann und ich kenne es nur nicht?

    Cu Selur

  • Hallo Selur

    Das ist ja klasse!


    Ein Fehler der bei Aegisub auftritt ist wenn nach der Zeitstamp Zeile (in SRT-Datei) ein Leerzeile folgt, dann kann Aegisub die SRT-Datei nicht öffen und wirft ein Fehler aus.

    Fehlermeldung:"Prase error on entry2 at line 4 (expecting line number).Possible malformed file"

    Auch Subrip v1.50b hat Probleme mit Leerzeilen und Codierung.
    Subrip v1.50b kann nur ANSI und UNICODE bei UTF-8 kommt eine Fehlermeldung"Warning unrecognized Format".


    z.B:

    1
    00:00:14,680 --> 00:00:17,513
    <Leerzeile>
    At the left we can see...

    2
    00:00:17,720 --> 00:00:19,560
    At the right we can see the...

    3
    00:00:19,560 --> 00:00:21,400
    ...the head-snarlers

    4
    00:00:21,400 --> 00:00:23,675
    <Leerzeile>
    Everything is safe.
    Perfectly safe.


    Noch was ist wichtig beim umwandeln, wenn z.B.: die Untertitel von einer anderen Quelle stammt, kommt es vor das die Studio-Trailer zwischen 2 bis 5 Sekunden eine fixe Zeitdifferenz haben.
    Das Tool sollte also auch noch eine Möglichkeit bieten die Untertitel nach der 25fps <--> 23.976fps Wandlung mit einer fixen Zeitdifferenz zu versehen.

    Zu den anderen Fragen kann ich nichts sagen.

    MfG
    *lale*

  • Bei Vobsubs steht auch einiges im Header der Subs, evtl. musst du da auch was nachbessern. Guck dir doch mal den Quellcode von VobSub Shuffle an. Reicht eigentlich nicht die Funktionalität von subresync?


    MultiMakeMKV: MakeMKV Batchverarbeitung (Win)
    MultiShrink
    : DVD Shrink Batchverarbeitung
    Offizieller Übersetzer von DVD Shrink deutsch

  • Chetwood: Werde die Tage mal auf subresync gucken, dachte das hätte nur eine GUI und keinen CommandLine Mode, wenn ich das Tool schreibe wird es ein CommandLine Tool und crossplattform.
    @Lale: Das mit der fixen Zeitdifferenz ist mir jetzt noch nicht so wirklich klar. Wenn die Zeitdifferenz vor dem Skalieren fix ist sollte sie doch auch nach dem Skalieren fix sein und wenn sie vor dem Skalieren nicht fix ist, darf sie doch nicht plötzlich nach dem Skalieren fix sein,..

    Cu Selur

  • Vielleicht hab ich mich falsch ausgedrückt.

    Was ich meine ist das du noch eine positiv\negativ Zeitwert bedenken solltes.
    Also eine simple verzögern\vorziehen Funktion.

    Bei asynchronen Untertitel gibt es ja auch den einfachen Zeitversatz, der nichts mit der unterschiedlichen Bildfrequenz zutun hat.

  • CLI und crossplatform? Immer her damit. Sag Bescheid, wenn du Betatester brauchst. Übrigens in IDX files gibt es auch eine Delay,

    # For correcting non-progressive desync. (in millisecs or hh:mm:ss:ms)
    # Note: Not effective in DirectVobSub, use "delay: ... " instead.
    time offset: 0

    was aber von den meisten Standalones ignoriert wird.


    MultiMakeMKV: MakeMKV Batchverarbeitung (Win)
    MultiShrink
    : DVD Shrink Batchverarbeitung
    Offizieller Übersetzer von DVD Shrink deutsch

  • Hier mal die erste Testversion:
    http://bayfiles.com/file/SMJ/29WFF…er_20110830.zip (source/win32/win64 noch keine Linux und Mac builds, da ich zu müde bin, kann ich aber nachreichen, falls jemand unter Linux oder Mac testen will)
    nur mal schnell mit einem .srt file getestet bis dato. ;)
    1. Modifiziere nicht die .sub Datei bei idx/sub files, da ich bis dato noch keinen Hinweis darauf gefunden habe, dass dies nötig ist.
    2. 'delay' und 'time offset' Werte werden aus den idx Dateien entfernt und als Delay eingerechnet

    Cu Selur

    Ps.: falls der Download bei BayFile zu langsam ist kann ich es auch wo anders hosten,.. (werde wenn es etwas getestet ist sicher auch auf meinen eigenen Server packen)

  • Wenn du in Subresync das erste item um das Delay änderst, werden automatisch alle folgenden items angepasst. Doof ist, dass dabei nur dieser Stream angerührt und auf default gesetzt wird. Sind mehrere Streams vorhanden, müssen die auch noch manuell angepasst werden. Je nachdem, was du so mit dem Tool machen willst, könnte es nötig sein, die sub-Datei auch zu manipulieren. Hier ein wenig Info über das Format der DVDs, VobSub sind dem ziemlich ähnlich:

    http://sam.zoy.org/writings/dvd/subtitles/

    Mehr Info finden sich in den MPEG ISO13818-1 pdfs.


    MultiMakeMKV: MakeMKV Batchverarbeitung (Win)
    MultiShrink
    : DVD Shrink Batchverarbeitung
    Offizieller Übersetzer von DVD Shrink deutsch

  • Denke ich lasse das .sub anpassen erst mal raus. ;)
    Das Anpassen wie Du es beschrieben hast hab ich auch entdeckt, aber das macht bei mir nur einen konstanten Versatz,..
    Wenn ich z.B. Times habe:
    2
    4
    8
    und will mit dem Faktor 2 stretchen also
    4
    8
    16
    so würde subresync die Zeiten nur um 2 verschieben, also nach
    4
    6
    10
    --> gibt's da noch nen Trick ?

    Cu Selur

  • Ich hatte mal ein Programm geschrieben, das typische Veränderungen für Normwandlungen berechnet. Völlig freie Faktoren kann es aber auch nicht.

    Letztlich müsste man die Zeiten auf Millisekunden umrechnen, dann die Berechnungen durchführen (das kann sogar Excel), und dann wieder auf Frames mit Rundung konvertieren, falls das Zielformat Frames statt Millisekunden verwendet.

  • Denke ich lasse das .sub anpassen erst mal raus. ;)


    Wenn du's dir anders überlegst und Python kannst, schau echt mal in den Quellcode von VobSub Shuffle, da solltest du einige Info über's sub-Format rausziehen können.

    --> gibt's da noch nen Trick ?


    Nicht, dass ich wüsste. Wär zudem cool, wenn dein Tool auch mal eben die FPS eines Subs angeben könnte.


    MultiMakeMKV: MakeMKV Batchverarbeitung (Win)
    MultiShrink
    : DVD Shrink Batchverarbeitung
    Offizieller Übersetzer von DVD Shrink deutsch

  • Die Aussage alleine hilft mir nur gar nicht,... Sehe nicht wie man die fps aus einer srt Untertitelspur raten könnte,..
    Nenne mir doch mal bitte ein Tool, welches eine .srt Untertitelspur entgegen nimmt und dann sagen kann welche Framerate der Film hatte zu dem sie gehörte.

    Cu Selur

  • Zitat

    Trotzdem ist das nur Heuristik, und die lässt sich leicht täuschen.


    Yup, bei vielfachen der Framerate würde sie z.B. scheitern und bei krummen Frame raten wird es unschön, da man nicht sicher weiß ob bei der Erstellung auf oder abgerundet wurde,...

    Cu Selur

Jetzt mitmachen!

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