leftermann Δημοσ. 2 Οκτωβρίου 2007 Δημοσ. 2 Οκτωβρίου 2007 καλησπέρα. Παλεύω εδώ και ώρα να χωρίσω σε κομμάτια ένα μεγάλο αρχείο avi (είναι video clip στη σειρά, και θέλω να τα χωρίσω). Το audio stream είναι σε variable bitrate, οπότε κατέφυγα στο nandub (τα virtualdub και virtualdubmod μου έκαναν τον συγχρονισμό μαντάρα). Όμως το nandub τα έχει μπερδέψει με τον εαυτό του... Κόβει από όπου θέλει αυτό, και όχι από εκεί που του λέω. Βάζω audio και video σε direct stream copy, μαρκάρω την αρχή και το τέλος του τμήματος που θέλω να σώσω, αλλά το νέο avi ξεκινάει 5 ή και παραπάνω sec νωρίτερα από εκεί που όρισα. Έχει κανένας καμία ιδέα τι κάνω λάθος;
parsifal Δημοσ. 2 Οκτωβρίου 2007 Δημοσ. 2 Οκτωβρίου 2007 Το έχω γράψει σε πάρα πολλά posts, το VirtualDubMod κάνει μία χαρά τη δουλειά αρκεί στο διάλογο που σου πετάει για "rewrite MP3 header κλπ" να απαντήσεις Νο. Το Nandub έχει codebase αρκετά παλιότερο από του VDM και πρέπει να αποφεύγεται, είναι deprecated εντελώς. Όπως ακριβώς αν θες να κάνεις capture σε avi από μία συσκευή, δε θα το κάνεις με το VDM αλλά με το τελευταίο stable VirtualDub που έχει εξελιχθεί σαν κώδικας πολύ περισσότερο σε αυτόν τον τομέα. Τώρα για το πρόβλημα που λες, μάλλον συμβαίνει επειδή δεν κανονίζεις ώστε το πρώτο frame του τμήματος που κόβεις να είναι Keyframe...
leftermann Δημοσ. 3 Οκτωβρίου 2007 Μέλος Δημοσ. 3 Οκτωβρίου 2007 parsifal μου συγνώμη, αλλά στην αναζήτηση που έκανα για variable bitrate κλπ, δεν βρήκα κανένα από αυτά τα ποστ σου. Ίσως δεν έψαξα καλά, sorry. Κάπου κάποιος πρότεινε το nandub για avi με vbr audio, γι αυτό και το δοκίμασα. Αντιθέτως, η λύση βρέθηκε στο παραπάνω ποστ σου. Σ' ευχαριστώ για ακόμα μια φορά. Δεν το ήξερα αυτό για το keyframe. Για να είμαι ειλικρινής, δεν ξέρω καν τι είναι keyframe, τεσ'πά...
parsifal Δημοσ. 3 Οκτωβρίου 2007 Δημοσ. 3 Οκτωβρίου 2007 Θα προσπαθήσω να το εξηγήσω χωρίς να το παρακάνω στην πάρλα: Στα πρότυπα συμπίεσης video που ο αλγόριθμος ομαδοποιεί τα frames για καλύτερο αποτέλεσμα (π.χ. MPEG-1/2/4), κάθε ομάδα frames που προκύπτει έχει απαραίτητα ως πρώτο, ένα μοναδικό frame (keyframe) που λειτουργεί ως σημείο αναφοράς για το επόμενο, το οποίο με τη σειρά του για το επόμενο κ.ο.κ. μέχρι να φτάσουμε ξανά σε νέο GOP (group of pictures), δηλαδή στο αμέσως επόμενο keyframe. Αυτό σημαίνει ότι όταν κόβεις video που έχουν συμπιεστεί με MPEG-τάδε, πρέπει το τμήμα να αρχίζει από keyframe. Τα ενδιάμεσα frames μπορεί να είναι 2 τύπων: P-frames ή B-frames. Στα πρώτα, η λογική της εξάρτησης λειτουργεί κατά τη φορά του βέλους του χρόνου. Δηλαδή, κάθε P-frame αποτελεί αναφορά για το επόμενό του. Στα B-frames συμβαίνει το εξής οξύμωρον. Για να αποκωδικοποιηθούν πλήρως, εξαρτώνται τόσο από το προηγούμενο P-frame, όσο και από το επόμενο (B: Bidirectional, δικατευθυντικό). Γι' αυτό αν το video που κόβεις χρησιμοποιεί B-frames, πρέπει το τμήμα να τελειώνει σε P-frame και όχι σε B. Στο VirtualDub(Mod) η status bar του προγράμματος δείχνει αντίστοιχα μέσα σε αγκύλες σε τί είδους frame βρίσκεσαι (π.χ. [K] για keyframe)...
leftermann Δημοσ. 3 Οκτωβρίου 2007 Μέλος Δημοσ. 3 Οκτωβρίου 2007 (άργησα να ποστάρω, είχα καμιά 200 κάμψεις να πάρω...) Απλό, λιτό και κατανοητό... Thanx. Αν το κατάλαβα καλά, το τμήμα που κόβω πρέπει οπωσδήποτε να αρχίζει με k, ενώ μπορεί να τελειώνει σε k ή σε p, αλλά όχι σε b.
parsifal Δημοσ. 3 Οκτωβρίου 2007 Δημοσ. 3 Οκτωβρίου 2007 Ναι, έτσι ακριβώς. Δες και τί συνέβη έτσι όπως πήγες να το κόψεις εσύ (από http://www.virtualdub.org/docs_processing.html): Q: I tried to cut out some frames in direct stream copy mode, and VirtualDub put them back in!? A: You deleted a frame, but didn't delete the non-keyframes after it. A keyframe is a frame that can be decoded on its own; a non-keyframe, or delta frame, is a difference from the previous frame and cannot be decoded if the frame before it is missing. VirtualDub always plays it safe and makes sure that all frames that you don't delete are decodable. This means that any non-keyframe that you include will force inclusion of any frames before it, back to and including the previous keyframe.
leftermann Δημοσ. 3 Οκτωβρίου 2007 Μέλος Δημοσ. 3 Οκτωβρίου 2007 πάντως βλέπω πως η απόσταση ανάμεσα σε δύο k παίζει από 3-4 frames, μέχρι 150+ frames. Ολίγον μπελάς αυτό, δεν μπορώ να κόψω εκεί που θέλω, αλλά ως και 2-3 sec παραπέρα...
parsifal Δημοσ. 3 Οκτωβρίου 2007 Δημοσ. 3 Οκτωβρίου 2007 Στις παραμέτρους των γνωστών codecs συμπίεσης, μπορείς συνήθως να ορίσεις και το maximum keyframe interval, δηλαδή πόσα το πολύ non-keyframes θα μεσολαβούν μεταξύ δύο keyframes. Αυτό δεν είναι περιοριστικό για το πόσο θα είναι το ελάχιστο τέτοιο νούμερο, εκεί ο codec έχει το ελεύθερο, βάσει ανάλυσης της πηγής, να βάζει και πιο συχνά keyframes (π.χ. όταν ανιχνεύει νέο πλάνο σε μία ταινία). Όταν έχεις μία αργή σκηνή σε σταθερό πλάνο, εκεί συνήθως το κάθε GOP θα εξαντλεί τα περιθώρια του keyframe interval. Το πλεονέκτημα του να ορίζεις μεγάλο keyframe interval είναι ότι έχεις συνολικά λιγότερα τέτοια σε μία ταινία, άρα περισσότερα bits που μπορούν να κατανεμηθούν σε δύσκολες σκηνές (τα keyframes, επειδή πρέπει να είναι πλήρως αποκωδικοποιήσιμα από μόνα τους πιάνουν περισσότερα KBytes από τα άλλα frames). Το μειονέκτημα είναι ότι μειώνεται πολύ η ακρίβεια που έχεις στο editing. Γι' αυτό π.χ. πολλοί «βρίζουν» τις νέες βιντεοκάμερες με MPEG-2 και MPEG-4 και προτιμούν ακόμη τις MiniDV. Στα DV αρχεία, όλα τα frames είναι keyframes και έχεις μεγάλη ακρίβεια στο κόψιμο-ράψιμο. (1/25 sec σε PAL)...
leftermann Δημοσ. 3 Οκτωβρίου 2007 Μέλος Δημοσ. 3 Οκτωβρίου 2007 τα συγκεκριμένα avi τα έκανα capture από vhs (πάλι με δικές σου οδηγίες, και με πολύ καλά αποτελέσματα) με virtualdub και mjpeg (picvideo ή ffdshow). Ρίχνοντας μια γρήγορη ματιά δεν είδα κάποια δυνατότητα τέτοιας ρύθμισης. Θα το ψάξω καλύτερα στο επόμενο capture που θα κάνω (τώρα με αποσπά και το champions league ). Thanx και πάλι για την κουβεντούλα. Είναι γνώση από πολύ ψάξιμο, διάβασμα και γκουγλάρισμα συμπυκνωμένη σε λίγα πόστ...
parsifal Δημοσ. 3 Οκτωβρίου 2007 Δημοσ. 3 Οκτωβρίου 2007 Είσαι σίγουρος ότι έγιναν με MJPEG; Γιατί και σε MJPEG όλα τα frames είναι keyframes και μπορείς να κόψεις όπου θέλεις. Για ανέβασε όταν μπορείς ένα screenshot από VirtualDubMod --> File --> File Information...
leftermann Δημοσ. 3 Οκτωβρίου 2007 Μέλος Δημοσ. 3 Οκτωβρίου 2007 γράψε λάθος. Έγιναν capture με mjpeg, αλλά μετά τα πέρασα ένα χέρι με το ultra video converter. Ιδού το screenshot:
parsifal Δημοσ. 3 Οκτωβρίου 2007 Δημοσ. 3 Οκτωβρίου 2007 Προφανώς το Ultra Video Converter (δεν το έχω υπ' όψιν μου) χρησιμοποίησε DivX codec με έτοιμα settings, χωρίς να σου δίνει πλήρη έλεγχο παραμετροποίησης του codec. Το maximum keyframe interval πάντως υπήρχε σίγουρα σε DivX 5, μπορεί να πέρασαν μερικά χρόνια από τότε που τον χρησιμοποιήσα τελευταία φορά (πριν στραφώ αποκλειστικά σε XviD), αλλά το θυμάμαι με σιγουριά. Ένας από τους λόγους που αποφεύγω γενικά πολύ ετοιματζίδικες εφαρμογές και κάνω πολλά πράγματα χειροκίνητα. Well, η εξεταστική μου τελείωσε. Καιρός για κάνα νέο HOWTO, ίσως "Aποδοτικό video capture, post processing και μετατροπή σε διάφορα formats" να είναι καλό θέμα!
leftermann Δημοσ. 3 Οκτωβρίου 2007 Μέλος Δημοσ. 3 Οκτωβρίου 2007 είναι καλό να έχεις πλήρη έλεγχο, αρκεί να μπορείς να... τον ελέγξεις!!! Αν δεν είσαι και πολύ γνώστης (όπως εγώ), τα ετοιματζίδικα είναι αρκετά χρήσιμα. Όντως το ultra δεν δίνει καμία δυνατότητα, παρά μόνο μια κλίμακα ποιότητας σε στυλ "9-μέγιστη, 8-πολύ καλή, 7-αρκετά καλή" κλπ. Τώρα που μαθαίνω σιγά σιγά, μπορώ να αρχίσω να πειραματίζομαι περισσότερο. Το κακό είναι ο λίγος χρόνος, και αυτού του είδους ο πειραματισμός θέλει πολύυυυυ ώρα με την cpu στα κόκκινα... Βλέπεις, δουλειά, παιδιά, σκυλιά (όχι, σκυλιά δεν έχω)... Αυτή η ιδέα για howto δε'ναι κακή, δε'ναι κακή...
pusher Δημοσ. 29 Μαρτίου 2008 Δημοσ. 29 Μαρτίου 2008 Υπάρχει τρόπος τελικά να κόψει κανείς όπου θέλει με το VirtualDub; Και κάτι off topic... Υπάρχει plugin για το άνοιγμα WMV που να κάνει για το VirtualDub 1.7.8;
parsifal Δημοσ. 29 Μαρτίου 2008 Δημοσ. 29 Μαρτίου 2008 Σου έδωσα το link προς αυτό το thread, όχι για να ποστάρεις εδώ την απορία, αλλά για να διαβάσεις γιατί δε γίνεται unconditionally αυτό που ζητάς. Εξαρτάται από τον codec που έχει χρησιμοποιηθεί στο AVI, το keyframe interval κ.ά. Ας μην επαναλαμβάνομαι, διάβασε τα προηγούμενα posts...
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.