Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας εχω φτιαξει ενα σκριπτ στο avisyth και εχω βαλει το logo το προβλημα μου ειναι οτι δεν μπορω να το κανω να εμφανιζετε στα frames που θελω να πω οτι το logo εχει διαφανο background αν παιζει ρολο

Δημοσ.

a1=AVISource("C:\Users\st4vros\Downloads\video.avi", audio=false).AssumeFPS(24000,1001)

a2=ImageReader("C:\Users\user\Desktop\logo.psd")

a3=ImageReader("C:\Users\user\Desktop\logo.psd",pixel_type="RGB32").ShowAlpha(pixel_type="RGB32")

Overlay(a1,a2,mask=a3)

Δημοσ.

Έχω τρεις ενστάσεις:

 

1. Γιατί χρησιμοποιείς τον περίπλοκο τρόπο με το φίλτρο Overlay και τις μάσκες; Γίνεται πιο εύκολα με το φίλτρο Layer!

2. Καλύτερα να εξάγεις την εικόνα σου σε 32μπιτο PNG format, η υποστήριξη PSD από τα image reading φίλτρα του Avisynth είναι λίγο προβληματική (σε εμένα π.χ. μου εμφάνιζε vertically flipped τα λογότυπα)

3. Δε βλέπω πουθενά να περιορίζεις την εμφάνιση του λογοτύπου σε συγκεκριμένα μόνο frames. Έτσι όπως είναι το script σου, το λογότυπο θα εμφανίζεται καθ' όλην τη διάρκεια του τελικού video

 

Βάσει των ενστάσεων, θα δοκίμαζα κάτι σαν το παρακάτω:

 

>
original = AVISource("video.avi", audio = false).AssumeFPS(24000, 1001).ConvertToRGB32
logo = ImageSource("logo.png", pixel_type = "RGB32")    # Σύμφωνα με την τεκμηρίωση του Avisynth, είναι πιο γρήγορο φίλτρο από το ImageReader όταν θέλουμε να φορτώσουμε ένα μόνο image και όχι ένα image sequence
part1 = Trim(original, 0, 99)    # Έστω ότι στα πρώτα 100 frames του video δε θέλουμε λογότυπο 
part2nologo = Trim(original, 100, 149)    # Εδώ ορίζουμε το τμήμα του video που θέλουμε να εμφανίζεται το λογότυπο
part2 = Layer(part2nologo, logo)    # Κι εδώ προσθέτουμε από πάνω του το λογότυπο 
part3 = Trim(original, 200, 0)    # Το υπόλοιπο κομμάτι του video χωρίς το λογότυπο
return part1 + part2 + part3    # Συνθέτουμε τα τρία συνεχόμενα τμήματα σε ένα και το επιστρέφουμε

 

υποθέτοντας για παράδειγμα πως θέλεις το λογότυπο να εμφανίζεται στα frames 100-149 (συνολικά 50 frames) του video. Δες τα σχόλια που έχω βάλει στον κώδικα.

 

Παραθέτω κι ένα συνημμένο ZIP με ένα παράδειγμα βασισμένο στο script που παράθεσα παραπάνω:

 

.

avisynth_logo_example.zip

Δημοσ.

parsifal το ξερω οτι δεν ειχα ορισει τα frames δεν ηξερα πως τα οριζω το συγκεκριμενο φιλτρο το βαζω γτ δεν θελω να εχει background το logo μου θα δοκιμασω και θα σου πω αν εχω καποιο προβλημα

 

Λοιπον δεν εχω κανενα προβλημα δουλεψε αψογα!!Κατι ακομα πως το βαζω στο σημειο της οθονης που θελω;πχ στο κεντρο

Δημοσ.

Για το κεντράρισμα, 2 τρόποι μου έρχονται τώρα στο μυαλό:

 

1. Δες στην τεκμηρίωση του φίλτρου Layer τις παραμέτρους για X και Y offset και χρησιμοποίησέ τες κατάλληλα για να κεντράρεις το λογότυπό σου (τα μαθηματικά είναι απλά, δε νομίζω πως θα έχεις πρόβλημα)

 

2. Σε ένα πρόγραμμα επεξεργασίας εικόνας, φτιάξε μία νέα εικόνα διαστάσεων ίδιων με την ανάλυση του video. Πρόσθεσε ένα layer, ρίξε εκεί πάνω το λογότυπό σου, φέρε το στη θέση ακριβώς που θέλεις και σώσε σε νέο αρχείο. Έτσι, δε θα χρειαστεί να πειραματιστείς με διάφορες τιμές offset στο φίλτρο Layer, καθώς η νέα εικόνα με το λογότυπο θα έρθει και θα «καθήσει» ακριβώς επάνω στο video, στο σημείο που θέλεις

 

 

Με τα κόλπα που έχει το Avisynth, είμαι σίγουρος ότι υπάρχουν και άλλοι 1000 τρόποι για να γίνει αυτό που ζητάς, αλλά αυτοί οι 2 μου φαίνονται αρκετά straightforward. :)

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...