w4tt4n4b3 Δημοσ. 25 Απριλίου 2009 Δημοσ. 25 Απριλίου 2009 Κάνω capture σε uncompressed avi με την κάρτα μου και το παραγόμενο αρχείο-βίντεο πάσχει από οπτικο-ακουστικό αποσυγχρονισμό ο οποίος είναι προοδευτικά αυξανόμενος. Δηλαδή στην αρχή δεν υπάρχει αποσυγχρονισμός αλλά στο τέλος π.χ. μετά από 2-3 ώρες καταλήγει και πάνω από δευτερόλεπτο η αναντιστοιχία μεταξύ εικόνας και ήχου. Μιλάμε πάντα για το raw αρχείο πριν γίνει το encoding. Το θέμα είναι ότι δεν πρόκειται για έναν αποσυγχρονισμό που είναι σταθερός ώστε να δώσω μια τιμή κατά το encoding ανάλογη και να διορθωθεί. Υπάρχει κάποια λύση για να επιτευχθεί συγχρονισμός; Το έριξα στο VirtualDub και επέλεξα stream copy και για την εικόνα και για τον ήχο έχοντας επιλεγμένο το Sync to audio από το Options. To θέμα είναι ότι θέλω να βρω μια λύση ώστε να μη εμφανίζεται καν το πρόβλημα ή αν δε γίνεται αυτό να βρεθεί κάποιος τρόπος ώστε ο αποσυγχρονισμός να διορθώνεται σε λίγα λεπτά και όχι να χρειάζεται ώρες για ένα αρχείο διάρκειας 2-3 ωρών. Αν έχει κάποιος κάποια λύση ή ιδέα, θα ήθελα να τη διαβάσω. Ευχαριστώ.
parsifal Δημοσ. 25 Απριλίου 2009 Δημοσ. 25 Απριλίου 2009 Η επιλογή Options > Sync to audio επηρεάζει μόνο τη δυνατότητα playback που δίνει το VirtualDub, όπως αναγράφεται και στη status bar του όταν ο δείκτης του ποντικιού είναι πάνω από την επιλογή: Αυτό που ζητάς είναι η επιλογή Video > Frame Rate... > Change so video and audio durations match. Όμως μπορεί να οδηγήσει σε non-standard frame rates, κατά τι μειωμένα ή αυξημένα σε σχέση με το αρχικό. Αν μιλάμε για τόσο μικρή απόκλιση όπως 1 sec σε εγγραφή συνολικής διάρκειας 2 και 3 ωρών, τότε θα έχεις διαφορές του στυλ π.χ. 24.99987 αντί για 25 fps. Μερικά προγράμματα θα γκρινιάξουν αν φορτώσεις τέτοιο AVI, άλλα πάλι δεν έχουν πρόβλημα. Κάνε μία δοκιμή με τα συγκεκριμένα προγράμματα που χρησιμοποιείς, δεν έχεις να χάσεις τίποτα εφόσον κρατήσεις και το αρχικό υλικό αντί να το σβήσεις.
w4tt4n4b3 Δημοσ. 25 Απριλίου 2009 Μέλος Δημοσ. 25 Απριλίου 2009 Η επιλογή Options > Sync to audio επηρεάζει μόνο τη δυνατότητα playback που δίνει το VirtualDub, όπως αναγράφεται και στη status bar του όταν ο δείκτης του ποντικιού είναι πάνω από την επιλογή: [ATTACH]17500[/ATTACH] Αυτό που ζητάς είναι η επιλογή Video > Frame Rate... > Change so video and audio durations match. Όμως μπορεί να οδηγήσει σε non-standard frame rates, κατά τι μειωμένα ή αυξημένα σε σχέση με το αρχικό. Αν μιλάμε για τόσο μικρή απόκλιση όπως 1 sec σε εγγραφή συνολικής διάρκειας 2 και 3 ωρών, τότε θα έχεις διαφορές του στυλ π.χ. 24.99987 αντί για 25 fps. Μερικά προγράμματα θα γκρινιάξουν αν φορτώσεις τέτοιο AVI, άλλα πάλι δεν έχουν πρόβλημα. Κάνε μία δοκιμή με τα συγκεκριμένα προγράμματα που χρησιμοποιείς, δεν έχεις να χάσεις τίποτα εφόσον κρατήσεις και το αρχικό υλικό αντί να το σβήσεις. To change so video and audio duration match το κάνεις πριν μπεις στο capture mode, γιατί τότε όταν πας στο video δεν υπάρχει επιλογή Frame Rate. Στο capture mode έχει επιλογή στο Capture->Timing-> Sync audio to video by resampling audio to a faster or slower rate... Αυτό επιλέγω εκεί... Μετά όταν πάω να κάνω encoding με το staxrip, megui ή avidemux να ρυθμίζω το frame rate με κάποια συγκεκριμένη τιμή ή να μην κάνω τίποτα;
parsifal Δημοσ. 25 Απριλίου 2009 Δημοσ. 25 Απριλίου 2009 To change so video and audio duration match το κάνεις πριν μπεις στο capture mode, γιατί τότε όταν πας στο video δεν υπάρχει επιλογή Frame Rate. Όχι, ανοίγοντας εκ των υστέρων το captured AVI. Εγώ το βλέπω κανονικά σε VirtualDub 1.8.8: Στο capture mode έχει επιλογή στο Capture->Timing-> Sync audio to video by resampling audio to a faster or slower rate...Αυτό επιλέγω εκεί... Η αποτελεσματικότητα των αλγορίθμων resync που χρησιμοποιούν τα διάφορα προγράμματα κατά τη σύλληψη εξαρτάται από αρκετούς παράγοντες: σχεδιαστικές επιλογές στο hardware της συσκευής σύλληψης, στην υλοποίησή του, στους drivers της συσκευής κ.ά. Σε μερικές συσκευές πετυχαίνεις καλύτερο αποτέλεσμα αν π.χ. χρησιμοποιείς ως master stream αυτό του ήχου. Δεν υπάρχει γενικός κανόνας, χρειάζεται δυστυχώς trial 'n' error για να βρεις τις βέλτιστες ρυθμίσεις. Μετά όταν πάω να κάνω encoding με το staxrip, megui ή avidemux να ρυθμίζω το frame rate με κάποια συγκεκριμένη τιμή ή να μην κάνω τίποτα; Αν δεν «γκρινιάξει» η εφαρμογή, να το αφήσεις ως έχει. Τέλος, υπάρχει και μία ακόμη προσέγγιση: Κάνεις demux το audio stream σε ξεχωριστό αρχείο (ακριβώς για τέτοιες δουλειές προτείνεται να κάνεις capture σε PCM audio αντί για compressed μορφές), το φορτώνεις σε ένα πρόγραμμα επεξεργασίας ήχου και κάνεις stretch (θετικό ή αρνητικό) όσο χρειάζεται για να αποκτήσει διάρκεια ακριβώς ίδια με του video stream. Στο δωρεάν Audacity π.χ. η λειτουργία αυτή βρίσκεται στο μενού Effect > Pitch and Tempo > Change Tempo... Στη συνέχεια, το επαναπολυπλέκεις στο AVI, αντικαθιστώντας το παλιό audio stream.
w4tt4n4b3 Δημοσ. 25 Απριλίου 2009 Μέλος Δημοσ. 25 Απριλίου 2009 Και σε μένα το βγάζει όταν βγω από το capture mode... Παντοτε σε PCM γίνεται το audio capture ασυμπίεστο και το εχω και σε .wav μορφή. Αυτό το wav το πετάω το audacity και το κάνω stretch όσο και το βίντεο, έτσι; Πάντως προσπαθώ να βρω μια λύση που να μην έχω το desync στο αρχικό βίντεο. Η ρύθμιση στο frame rate γίνεται πριν γινει το capture ώστε όταν γίνει να μην υπάρχει το desync έτσι;
parsifal Δημοσ. 25 Απριλίου 2009 Δημοσ. 25 Απριλίου 2009 Και σε μένα το βγάζει όταν βγω από το capture mode...... Η ρύθμιση στο frame rate γίνεται πριν γινει το capture ώστε όταν γίνει να μην υπάρχει το desync έτσι; Η ρύθμιση δεν επηρεάζει τη σύλληψη, εκεί κάνεις παιχνίδι μόνο με τις δυνατότητες resync/resample που δίνει το VirtualDub. Την εφαρμόζεις μετά το capture, ανοίγοντας το AVI που θα προκύψει. Αυτό το wav το πετάω το audacity και το κάνω stretch όσο και το βίντεο, έτσι; Έτσι ακριβώς. Το Audacity μάλιστα σε διευκολύνει, αφού δεν χρειάζεται να υπολογίσεις scale factor σε ποσοστό %. Μπορείς να εισάγεις απευθείας την τελική διάρκεια που θες να έχει ο ήχος σε δευτερόλεπτα: Εδώ βάζεις τη διάρκεια που έχει το video stream και την οποία μπορείς να πάρεις από το VirtualDub, στο μενού File > File Information... : Πάντως προσπαθώ να βρω μια λύση που να μην έχω το desync στο αρχικό βίντεο. Δε νομίζω πως γίνεται με τη συσκευή σύλληψης που χρησιμοποιείς. Υπάρχουν συσκευές με onboard hardware encoder όπου το A/V syncing γίνεται εσωτερικά και η εφαρμογή που τις συνοδεύει απλά γράφει στο δίσκο του PC το αρχείο όπως έρχεται από τη συσκευή. Στην περίπτωσή σου, έχεις το A/V syncing να αφήνεται στο PC και το software σύλληψης. Θα παίξεις με τις επιλογές που σου δίνει το software. Όπως έγραψα και πιο πάνω: Trial 'n' error...
w4tt4n4b3 Δημοσ. 25 Απριλίου 2009 Μέλος Δημοσ. 25 Απριλίου 2009 Η ρύθμιση δεν επηρεάζει τη σύλληψη, εκεί κάνεις παιχνίδι μόνο με τις δυνατότητες resync/resample που δίνει το VirtualDub. Την εφαρμόζεις μετά το capture, ανοίγοντας το AVI που θα προκύψει. Έτσι ακριβώς. Το Audacity μάλιστα σε διευκολύνει, αφού δεν χρειάζεται να υπολογίσεις scale factor σε ποσοστό %. Μπορείς να εισάγεις απευθείας την τελική διάρκεια που θες να έχει ο ήχος σε δευτερόλεπτα: [ATTACH]17506[/ATTACH] Εδώ βάζεις τη διάρκεια που έχει το video stream και την οποία μπορείς να πάρεις από το VirtualDub, στο μενού File > File Information... : [ATTACH]17507[/ATTACH] Δε νομίζω πως γίνεται με τη συσκευή σύλληψης που χρησιμοποιείς. Υπάρχουν συσκευές με onboard hardware encoder όπου το A/V syncing γίνεται εσωτερικά και η εφαρμογή που τις συνοδεύει απλά γράφει στο δίσκο του PC το αρχείο όπως έρχεται από τη συσκευή. Στην περίπτωσή σου, έχεις το A/V syncing να αφήνεται στο PC και το software σύλληψης. Θα παίξεις με τις επιλογές που σου δίνει το software. Όπως έγραψα και πιο πάνω: Trial 'n' error... Έχω και mpeg2 hardware encoder με την κάρτα, αλλά το αποτέλεσμα είναι πολύ χαμηλό από άποψη ποιότητας εικόνας... ---------- Το μήνυμα προστέθηκε στις 16:45 ---------- Έβαλα το ασυμπίεστο .avi στο VD 1.8. και στο file information μου δίνει την ίδια διάρκεια για audio και video. Έκανα extract σε wav το audio και μου το βγάζει πάλι ίδια διάρκεια με το video. Πώς θα κάνω stretch τη στιγμή που και τα δύο εμφανίζονται να έχουν ακριβώς την ίδια διάρκεια; Το έβαλα να παίξει στο virtual dub και ο ήχος τώρα προηγείται της εικόνας...
parsifal Δημοσ. 25 Απριλίου 2009 Δημοσ. 25 Απριλίου 2009 Μάλιστα. Είχες dropped frames κατά τη σύλληψη, έτσι δεν είναι; Τελικά δεν τους γλυτώνεις τους έξτρα υπολογισμούς. Προσπάθησε με έναν video player - είτε από τις ρυθμίσεις του ίδιου του player είτε του codec, π.χ. MPC/MPC-HC και ffdshow-tryouts αντίστοιχα έχουν τέτοια δυνατότητα - να βρεις τη μέγιστη απόκλιση σε msec μεταξύ A/V streams στο AVI (κάνεις shift με ορισμένα βήματα το audio ή το video stream μέχρι αυτά να εμφανίζονται συγχρονισμένα κατά το playback προς το τέλος του αρχείου και σημειώνεις την απόκλιση που δίνει ικανοποιητικό αποτέλεσμα). Αυτήν την τιμή την προσθέτεις ή την αφαιρείς ανάλογα στη συνολική διάρκεια που θέλεις να επιτύχεις και τέλος κάνεις stretch του audio stream σε χρόνο ίσο με το τελικό αποτέλεσμα.
w4tt4n4b3 Δημοσ. 25 Απριλίου 2009 Μέλος Δημοσ. 25 Απριλίου 2009 Στο τελευταίο capture που έκανα επέλεξα στα timing sync audio to video by resampling etc. Ειχα επιλεξει αρχικα και το match video audio. Είχα 207 inserted frames 0 dropped. Τι υπολογισμό να κάνω αφού η αναντιστοιχία δεν είναι σταθερή. Δηλαδή δεν υπάρχει μια σταθερή τιμή από την αρχή... Εκτός αν εννοείς να υπολογίσω την συνεχώς αυξανόμενη τιμή. Σε λίγο θα ανοίξω βιβλίο μαθηματικών... Και εκτός από όλα τα άλλα τόσο το megui όσο και το staχrip παθαίνουν crash με το που φτιάχνεται το avs αρχείο και τα λοιπά συνοδευτικά...
parsifal Δημοσ. 25 Απριλίου 2009 Δημοσ. 25 Απριλίου 2009 Δεν χρειάζεται βιβλίο μαθηματικών, είναι πιο εύκολο απ' όσο νομίζεις. Κάνε ακριβώς αυτά που σου έγραψα. Παράδειγμα: Το AVI σου έχει διάρκεια 2 ώρες. Το ανοίγεις για αναπαραγωγή π.χ. με τον MPC ή τον MPC-HC και (έχοντας ενεργοποιημένο τον ενσωματωμένο audio switcher) από View > Options... > Audio Switcher και πειραματιζόμενος με διάφορες τιμές στο πεδίο Audio time shift (ms) βρίσκεις ότι προς το τέλος της αναπαραγωγής του αρχείου (π.χ. στο σημείο 1hr59min15sec όπου υπάρχει η τελευταία σκηνή με ομιλόν πρόσωπο και μπορείς να βγάλεις τέτοιο συμπέρασμα από το ικανοποιητικό ή μη lip-syncing) χρειάζεται μετατόπιση του audio stream κατά +1080msec ώστε να έχεις ικανοποιητικό συγχρονισμό. Αυτό σημαίνει πως αν γίνει stretch του audio stream σε χρόνο 2hr0min1.08sec, τότε θα έχεις ικανοποιητική αντιστάθμιση στο φαινόμενο του drifting A/V desync. Για την ακρίβεια, δεν υπάρχει drifting A/V desync στην προκειμένη περίπτωση αφού το φαινόμενο οφείλεται στα frames που έκανε insert το VirtualDub για να κρατήσει σταθερή τη συνολική διάρκεια video και audio stream και όχι σε απόκλιση στο ρυθμό δειγματοληψίας του κάθε stream. Αν παρ' όλα αυτά θεωρήσουμε πως αυτά τα έξτρα frames περίπου ισοκατανεμήθηκαν σε όλη τη διάρκεια του video, τότε θα πρέπει το τελικό αποτέλεσμα του audio stretching να είναι ικανοποιητικό.
w4tt4n4b3 Δημοσ. 25 Απριλίου 2009 Μέλος Δημοσ. 25 Απριλίου 2009 Σε αυτό που προτείνεις υπάρχει ένα πρόβλημα. Το uncompressed avi γίνεται μόνο να παίξει. Όταν προχωράω στο τέλος τον κέρσορα κολλάει... Αδύνατο να γίνει υπολογισμός έτσι. Επίσης έκανα εχτές stream copy με το Virtual dub επιλέγοντας στο frame rate video audio match αλλά δεν υπήρξε κάποια βελτίωση. Το παραχθέν αρχείο είχε πάλι αναντιστοιχία μεταξύ εικόνας και ήχου. ---------- Το μήνυμα προστέθηκε στις 17:48 ---------- Mπορείς να μου πεις στο audacity πώς μπορείς να κάνεις stretch το audio file; Δε βρίσκω πουθενά τέτοια επιλογη.
parsifal Δημοσ. 25 Απριλίου 2009 Δημοσ. 25 Απριλίου 2009 Σε αυτό που προτείνεις υπάρχει ένα πρόβλημα. Το uncompressed avi γίνεται μόνο να παίξει. Όταν προχωράω στο τέλος τον κέρσορα κολλάει...Αδύνατο να γίνει υπολογισμός έτσι. Για δοκίμασε και με VLC. Επίσης έκανα εχτές stream copy με το Virtual dub επιλέγοντας στο frame rate video audio match αλλά δεν υπήρξε κάποια βελτίωση. Το παραχθέν αρχείο είχε πάλι αναντιστοιχία μεταξύ εικόνας και ήχου. Λογικό, αφού βάσει των ρυθμίσεων που έκανες στο capture, προέκυψαν audio και video streams με ίδια διάρκεια (αν και desync-ed). Αυτό το βλέπεις και στο σχετικό dialog box: Αν οι δύο σημειωμένες τιμές είναι ίδιες, δεν έχει κανένα νόημα η συγκεκριμένη ρύθμιση. Mπορείς να μου πεις στο audacity πώς μπορείς να κάνεις stretch το audio file;Δε βρίσκω πουθενά τέτοια επιλογη. Το έγραψα πιο πάνω: Στο δωρεάν Audacity π.χ. η λειτουργία αυτή βρίσκεται στο μενού Effect > Pitch and Tempo > Change Tempo... Σε Audacity version 1.3.6 το βλέπω κανονικά.
w4tt4n4b3 Δημοσ. 25 Απριλίου 2009 Μέλος Δημοσ. 25 Απριλίου 2009 Και με vlc το ίδιο. Έριξα το αρχείο στο media info με advanced επιλογή και μου έβγαλε για το video διάρκεια 02:25:05.140 ενώ για το audio 2h 25mn 4s 988ms μιλάμε δλδ για διαφορά 152 χιλιοστά του δευτερολέπτου. Θα προσπαθήσω να κάνω stretch το audio να γίνει ακριβώς ίδιο με το video. Δε βρίσκω όμως επιλογή στο audacity για αυτό... ---------- Το μήνυμα προστέθηκε στις 17:56 ---------- Εγώ έχω το 1.2.6 και στα effects δεν μπορώ να επιλέξω τίποτα... Θα κατεβάσω το 1.3.6.
parsifal Δημοσ. 25 Απριλίου 2009 Δημοσ. 25 Απριλίου 2009 Διαφορά 152 msec δεν είναι εύκολα αντιληπτή και σίγουρα δε δημιουργεί την εντύπωση ότι προς το τέλος του αρχείου υπάρχει desync πάνω από δευτερόλεπτο, όπως έγραψες στο αρχικό post. Το desyncing οφείλεται στα inserted frames και φοβάμαι πως αν κάνεις stretch τον ήχο ώστε να έχει απλά ίδια διάρκεια με το video stream, δε θα έχεις ικανοποιητικό αποτέλεσμα. Η εύρεση της απόκλισης στα τελευταία κομμάτια του AVI είναι μονόδρομος. Εκτός αν πειραματιστείς με διάφορες τιμές stretching στο Audacity...
w4tt4n4b3 Δημοσ. 25 Απριλίου 2009 Μέλος Δημοσ. 25 Απριλίου 2009 Μάλλον δεν έβγαζε τις επιλογές επειδή είχα επιλέξει open file. Τώρα πάτησα import και το έκανε... Changing tempo... Το έβαλα από τα 2.25.04.188 στο 1.26.05.140... να δούμε τι θα γίνει... ---------- Το μήνυμα προστέθηκε στις 18:05 ---------- Να σε ρωτήσω όμως; Γιατί το VD έβαλε frames;
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.