Video και Audio

Subtitle Workshop - Συγχρονισμός υποτίτλων

10/11/2010 12:02 μμ | parsifal από parsifal


Subtitle Workshop - Συγχρονισμός υποτίτλων

 

 

__TOC__

 

 

==Πρόλογος==

Στο παρόν άρθρο θα δούμε μία quick 'n' dirty μέθοδο για να συγχρονίσουμε σωστά ένα αρχείο υποτίτλων με ένα αρχείο video. Quick 'n' dirty σημαίνει πρακτικά ότι προσπαθούμε με τον ελάχιστο δυνατό κόπο να έχουμε σωστή λειτουργία στην πλειοψηφία των περιπτώσεων. Η μέθοδος λειτουργεί στις παρακάτω περιπτώσεις:

  • Το αρχείο video που έχουμε χαρακτηρίζεται από διαφορετικό ρυθμό FPS (Frames per second, ο όρος και η σημασία του θα εξηγηθεί παρακάτω) σε σχέση με το αρχείο video βάσει του οποίου έγινε ο υποτιτλισμός
  • Το αρχείο video που έχουμε παρουσιάζει σταθερή διαφορά χρονισμού σε σχέση με το αρχείο υποτίτλων. Δηλαδή, όσο κυλάει ο χρόνος προς το τέλος του video δε μεταβάλλεται η απόκλιση video και υποτίτλων
  • Συνδυασμός των παραπάνω

 

Υπάρχουν όμως κάποιες περιπτώσεις στις οποίες η μέθοδος δε δίνει σωστό αποτέλεσμα. Για παράδειγμα:

  • Το αρχείο video που έχουμε προέκυψε από TV capture και έχει εμβόλιμα διαφημιστικά trailers σε σχέση με το αρχείο video βάσει του οποίου έγινε ο υποτιτλισμός
  • Παρόμοια περίπτωση με την προηγούμενη, μόνο που τα trailers έχουν αφαιρεθεί με μοντάζ. Αν η αφαίρεση έχει γίνει προσεκτικά, πιθανόν να μην παρατηρήσουμε πρόβλημα. Αν όχι, θα υπάρχει μικρή απόκλιση video και υποτίτλων που θα τείνει να εξαλειφθεί όσο πλησιάζουμε προς το τέλος του video
  • Παρόμοια περίπτωση με την πρώτη, μόνο που αυτήν την φορά ο υποτιτλιστής ήταν αυτός που είχε το αρχείο video με τα εμβόλιμα διαφημιστικά (πολύ σπάνιο)
  • Το αρχείο video που έχουμε είναι από την κανονική εκδοχή μίας ταινίας, ενώ το αρχείο υποτίτλων προορίζεται για μία άλλη εκδοχή, βλ. Extended versions, Director's Cut κλπ
  • Το αντίστροφο της προηγούμενης περίπτωσης

 

Παρατηρούμε ότι τα προβλήματα της μεθόδου δημιουργούνται σε περιπτώσεις που το περιεχόμενο του αρχείου video που έχουμε διαφέρει ριζικά σε σχέση με αυτό του video βάσει του οποίου έγινε υποτιτλισμός. Δηλαδή, όταν υπάρχει έλλειμα ή πλεόνασμα σκηνών (ως σκηνές εδώ εννοούνται γενικά αυτές που ανήκουν είτε στην κανονική ροή του video είτε σε εμβόλιμα διαφημιστικά). Πώς θα ξέρουμε όμως ότι ανήκουμε σε τέτοια περίπτωση εκ των προτέρων; Δυστυχώς, η απάντηση είναι «Δε μπορούμε να ξέρουμε εκ των προτέρων». Δοκιμάζουμε τη μέθοδο και αν το τελικό αποτέλεσμα δεν είναι ικανοποιητικό, μάλλον πέσαμε στην περίπτωση. Η λύση είναι να ακολουθήσουμε μία πιο χρονοβόρα μέθοδο που περιγράφεται στο τέλος του άρθρου, σε σχετικό παράρτημα.

 

 

 

==Απαιτούμενο λογισμικό==

Θα χρειαστούμε τα παρακάτω ελεύθερα διατιθέμενα προγράμματα:

 

  • Subtitle Workshop
  • Αν θέλουμε να έχουμε πλήρη λειτουργικότητα προεπισκόπησης του αρχείου video στο Subtitle Workshop ενόσω δουλεύουμε με τους υποτίτλους, θα πρέπει να υπάρχουν στο σύστημά μας εγκατεστημένοι όλοι οι απαραίτητοι DirectShow codecs που χρειάζονται για την απρόσκοπτη αναπαραγωγή των video και audio streams που περιέχονται στο αρχείο video. Για να το εξασφαλίσετε, μπορείτε να εφαρμόσετε τα όσα περιγράφονται στο άρθρο Video playback σε περιβάλλον Windows

 

[TEMPLATE]Insomnia Wiki templates - Greek paths warning[/TEMPLATE]

 

 

 

==Περί ρυθμού αναπαραγωγής FPS (Frames per second)==

Τα αρχεία ψηφιακού video, όπως συμβαίνει και με το κλασσικό film, είναι πρακτικά μία αλληλουχία από στατικές εικόνες (frames), το κάθε ένα εκ των οποίων διαφέρει λίγο από το αμέσως προηγούμενο και το αμέσως επόμενό του. Όταν τα frames προβάλλονται διαδοχικά με συγκεκριμένη ταχύτητα εναλλαγής, στον ανθρώπινο εγκέφαλο δημιουργείται η ψευδαίσθηση της κινούμενης εικόνας. Η minimum ταχύτητα εναλλαγής που απαιτείται για τη δημιουργία εντύπωσης ομαλής κίνησης χωρίς σπασίματα θεωρείται ότι είναι τα 24 frames ανά δευτερόλεπτο ή 24fps.

 

Τα διαφορετικά συστήματα εκπομπής τηλεοπτικού σήματος, κινηματογράφησης (με αναλογικά ή ψηφιακά μέσα) ή προβολής σε ψηφιακές καταναλωτικές συσκευές που χρησιμοποιούνται ανά τον κόσμο προσδιορίζουν και διαφορετική ταχύτητα εναλλαγής frames ή αλλιώς ρυθμό FPS. Για παράδειγμα, η κινηματογράφηση γίνεται με ρυθμό δειγματοληψίας 24fps. Στο τηλεοπτικό σύστημα PAL καθώς και στα Video DVD περιοχής (region) 2 χρησιμοποιείται ρυθμός 25 fps. Στο τηλεοπτικό σύστημα NTSC έχουμε περίπου 30fps (για την ακρίβεια 29.97). Στα Video DVD περιοχής 1 χρησιμοποιείται ρυθμός 23.976fps κ.ο.κ.

 

Ας δούμε τώρα ένα υποθετικό παράδειγμα που εξηγεί τί σχέση έχουν τα παραπάνω με τους υποτίτλους και το συγχρονισμό τους: Έστω αρχείο video Α (μία ταινία π.χ.) διαρκείας 01hrs30min (90 λεπτά) και ρυθμού αναπαραγωγής 25fps. Το video δηλαδή απαρτίζεται από 90min X 60sec/min X 25fps = 135000 frames. Έστω πάλι ότι η πρώτη ατάκα ακούγεται σε χρόνο 00hrs02min00sec.000, δηλαδή στο frame υπ' αριθμόν 2min X 60sec/min X 25fps = 3000. Αντίστοιχα, έστω ότι η τελευταία ατάκα ακούγεται σε χρόνο 01hrs25min00sec.000, δηλαδή στο frame υπ' αριθμόν 85min X 60sec/min X 25fps = 127500. Μαζί με το αρχείο Α υποθέτουμε λοιπόν ότι έχουμε και ένα αρχείο υποτίτλων, το οποίο είναι άψογα συγχρονισμένο με την ταινία. Έστω τώρα ότι έχουμε σε έναν άλλον κατάλογο του σκληρού μας δίσκου την ίδια ταινία, αλλά σε αρχείο video B, με ρυθμό 23.976fps. Αυτό σημαίνει ότι το video θα έχει πάλι συνολικά 1350000 frames, όμως η διάρκειά του δε θα είναι ίδια με του Α, αλλά λίγο μεγαλύτερη. Για την ακρίβεια, 135000frames / 23.976fps = 5630.630sec = 01hrs33min50sec.630.

 

[DIV=border-width: none; margin:0 auto; width:60%; text-align:center; background-color:gold]

Στην πραγματικότητα, το ίδιο ακριβώς συμβαίνει και με τις ταινίες DVD περιοχής 1 και 2. Οι Ευρωπαίοι παρακολουθούμε τις ταινίες ελαφρώς σε fast forward σε σχέση π.χ. με τους Αμερικανούς, οι οποίοι βλέπουν τις ταινίες σε πιο πιστή αναπαράσταση του πραγματικού υλικού που κινηματογραφήθηκε.

 

[/DIV]

 

 

 

Για να δούμε τώρα τί συμβαίνει αν προσπαθήσουμε να προβάλλουμε το video B, χρησιμοποιώντας το αρχείο υποτίτλων που προοριζόταν για το video A. Στην εκδοχή Β της ταινίας, η πρώτη ατάκα θα ακούγεται πάλι στο frame υπ' αριθμόν 3000, αλλά σε χρόνο 3000frames / 23.976fps = 125.125sec = 00hrs02min05sec.125. Ήδη βλέπουμε ότι υπάρχει καθυστέρηση 5 δευτερολέπτων του video Β σε σχέση με τον πρώτο υπότιτλο (ο οποίος θα προβληθεί 5 δευτερόλεπτα πιο νωρίς από ο,τι θα έπρεπε). Αντίστοιχα, η τελευταία ατάκα θα ακούγεται πάλι στο frame υπ' αριθμόν 127500, αλλά πλέον σε χρόνο 127500frames / 23.976fps = 5317.817sec = 01hrs28min37sec.817. Δηλαδή, ο υπότιτλος που αντιστοιχεί σε αυτήν την ατάκα θα έχει προβληθεί 3 λεπτά και σχεδόν 38 δευτερόλεπτα πιο νωρίς από ο,τι θα έπρεπε. Βλέπουμε λοιπόν ότι αν χρησιμοποιήσουμε αρχείο υποτίτλων που προορίζεται για την ίδια ταινία αλλά σε εκδοχή με διαφορετικό ρυθμό FPS από ότι η δική μας, θα παρατηρήσουμε απόκλιση στον χρονισμό των υποτίτλων που θα γίνεται ολοένα και μεγαλύτερη όσο πλησιάζουμε προς το τέλος της ταινίας.

 

Θα μπορούσαμε να επέμβουμε στο αρχείο υποτίτλων και να διορθώσουμε τους χρονισμούς όλων των υποτίτλων. Χρειάζονται μόνο απλές αριθμητικές πράξεις, κοντά στη λογική που περιγράφηκε αμέσως πιο πάνω. Το πρόβλημα είναι όμως ότι θα χρειαζόταν υπερβολικά πολύς χρόνος (οι περισσότερες ταινίες έχουν ατάκες που εύκολα φτάνουν και ξεπερνούν την χιλιάδα) και το σημαντικότερο, δεν ξέρουμε πάντα το ρυθμό αναπαραγωγής βάσει του οποίου έγινε ο υποτιτλισμός, ώστε να εφαρμόσουμε τους κατάλληλους υπολογισμούς. Ευτυχώς, υπάρχει το πρόγραμμα Subtitle Workshop που μπορεί να αυτοματοποιήσει όλη την απαιτούμενη διαδικασία, φτάνει να του δώσουμε ορισμένες παραμέτρους. Η ελάχιστη απαίτηση είναι να προσδιορίσουμε τουλάχιστον 2 σημεία συγχρονισμού: το αρχικό και το τελικό σημείο μεταξύ των οποίων θα γίνει η επεξεργασία. Όπως θα δούμε, υπάρχει η δυνατότητα να ορίσουμε και περισσότερα σημεία συγχρονισμού (Synchronisation points), κάτι που θα εκμεταλλευτούμε για τις «δύσκολες περιπτώσεις» που αναφέρθηκαν στον πρόλογο και καλύπτονται στο σχετικό παράρτημα.

 

 

 

==Ενέργειες στο Subtitle Workshop==

1. Εκκινούμε το Subtitle Workshop και με CTRL+O ανοίγουμε το αρχείο υποτίτλων

 

2. Σκρολάρουμε στον τελευταίο υπότιτλο. Αν δεν είναι ατάκα που ακούγεται στην ταινία, τον επιλέγουμε και σβήνουμε με Del. Επαναλαμβάνουμε όσες φορές χρειαστεί, μέχρι να μείνει ως τελευταίος υπότιτλος η τελευταία ατάκα που ακούγεται στο video.

 

010.png

 

 

3. Με CTRL-P ανοίγουμε το αντίστοιχο video. Αν το ζητούμενο αρχείο έχει κατάληξη που δεν υποστηρίζεται αυτόματα από το Subtitle Workshop όπως .rm, στο πεδίο File name δίνουμε * (αστερίσκος) και Enter. Τώρα λογικά θα μπορούμε να επιλέξουμε το video. Επίσης, αν υπάρχει εγκατεστημένος codec όπως ffdshow ή VobSub, φροντίζουμε να απενεργοποιήσουμε προσωρινά την προβολή υποτίτλων που παρέχει (συνήθως εμφανίζουν ένα εικονιδιάκι στο system tray, μπορούμε να το κάνουμε από εκεί) για να μη βλέπουμε στον χώρο προεπισκόπησης του Subtitle Workshop διπλούς υποτίτλους που ίσως μας μπερδέψουν.

 

020.png

 

 

4. Μετακινούμε το slider σε σημείο του video λίγο πριν ακουστεί η πρώτη ατάκα. Πατάμε CTRL+SPACE ώστε να αρχίσει η αναπαραγωγή και καραδοκούμε. Μόλις ακούσουμε την πρώτη συλλαβή, αμέσως πατάμε ξανά CTRL+SPACE για να παγώσουμε το video. Αν παγώσει αρκετά πιο πριν ή μετά, επαναλαμβάνουμε μέχρι να πετύχουμε το σωστό χρόνο. Όταν μείνουμε ευχαριστημένοι από το σημείο, πατάμε CTRL+1. Έτσι, ορίζεται αυτόματα ως πρώτο σημείο συγχρονισμού το συγκεκριμένο σημείο του video.

 

030.png

 

 

5. Επαναλαμβάνουμε το βήμα 4 για την τελευταία ατάκα, μόνο που τώρα πατάμε CTRL+2. Έτσι, ορίζεται το δεύτερο και τελικό σημείο συγχρονισμού και το Subtitle Workshop εμφανίζει ένα κουτί διαλόγου για επιβεβαίωση. Π.χ. για το υποθετικό παράδειγμα που μελετήσαμε στην προηγούμενη παράγραφο, θα ήταν κάπως έτσι:

 

040.png

 

Με κλικ στο Yes, το πρόγραμμα βάσει των δύο σημείων συγχρονισμού που ορίσαμε, θα υπολογίσει και θα αναθέσει νέους χρονισμούς στους υποτίτλους του αρχείου που φορτώσαμε. Ο υπολογισμός δεν είναι υπολογιστικά απαιτητικός και ολοκληρώνεται σε αμελητέο χρονικό διάστημα

 

 

6. Πατάμε CTRL+S για να σώσουμε το αρχείο υποτίτλων ή SHIFT+CTRL+S για να σώσουμε ως νέο αρχείο με άλλο όνομα και κλείνουμε το Subtitle Workshop

 

 

Αν όλα πήγαν καλά και ίσχυαν οι προϋποθέσεις που αναφέρθηκαν στον πρόλογο, θα έχουμε ένα αρχείο υποτίτλων καλά συγχρονισμένο με την ταινία μας.

 

 

 

==Παραρτήματα==

===«Δύσκολες περιπτώσεις»===

TODO

 

 

===Παρατηρήσεις===

Εκτός από την ενσωματωμένη βοήθεια που παρέχει σε μορφή HTML το πρόγραμμα, μπορείτε να επισκεφτείτε και το forum της URUSoft.

 

 

===Ιστορικό αλλαγών===

  • 20081025 - Αλλαγές στον TOC, αφαίρεση "Acknowledgements", προσθήκη «Ιστορικού αλλαγών», προσθήκη Wiki standard notice στο τέλος του άρθρου, hosting εικόνων στον Insomnia server (parsifal)
  • 20080523 - Αρχική έκδοση (parsifal)