KasteL's blog: Προβολή & μετατροπή ταινίας σε 3D με το AviSynth και το VirtualDub
  •  
  • Προβολή & μετατροπή ταινίας σε 3D με το AviSynth και το VirtualDub




    Προβολή ταινίας 2D σε 3D με το AviSynth
     

    Τα προγράμματα που θα χρειαστούμε είναι:

    Για να μετατρέψετε οποιαδήποτε από τις ταινίες μας σε 3D, θα χρησιμοποιήσουμε το AviSynth και τη χρήση των αρχείων script της μορφής «avs».

    Μετά την εγκατάσταση του, μην κάνετε τον κόπο και προσπαθήσετε να το τρέξετε - δεν διαθέτει περιβάλλον χρήστη. Αντ' αυτού, λειτουργεί ως ένα codec, που επιτρέπει στους media players (Windows Media Player, Media Player Classic κ.τ.λ.) την κατανόηση των scripts του AviSynth.

    Όπως ίσως θα έχετε μαντέψει, θα πάμε να χρησιμοποιήσουμε ένα τέτοιο script για να μετατρέψουμε μία ταινία από 2D σε 3D.

    Αντιγράψτε το παρακάτω script και επικολλήστε το σε ένα text αρχείο χρησιμοποιώντας το notepad (σημειωματάριο).


    Script:    

    ## 2D to 3D Realtime Video Conversion Avisynth script v0.3b
    ## Made by Anton Belev at 3D Vision Blog
    ## http://www.3dvision-blog.com
    ## Additionally extended by Martin Haverland at audiomh.de for quality resize
    ## and different output modes including interlaced format for use in non-3d specific players e.g. windows media player.


    ## Open the video file for conversion, change the video file name
    video2d = DirectShowSource("YOUR VIDEO FILE NAME-INCLUDE EXTENSION")

    ## Increase video brightnes on dark videos, good for 3D Vision owners
    # video2d = video2d.Tweak(Bright=10)

    ## Convert to RGB32 to avoid the width restrictions
    video2d = ConvertToRGB32(video2d)


    ## Optional aspect ratio maintaining quality resize for 3d monitor target resolution.
    ## Very cpu intensive, may be for offline use only, e.g. in virtualdubmod.
    ## 2x 3.0ghz cpu may give you a framerate of 16fps while running the whole script in virtualdubmod including xvid compression in HDTV quality saving setting.
    ## Offers great quality in the result video for fullscreen playback in every .avs capable player later.
    ## Also reduces ghosting if the original file resolution is smaller than the target resolution.
    # videoW = width(video2d)
    # videoH = height(video2d)
    ## For 19" Zalman use 1280, for 22" Zalman Trimon it is 1680 etc.
    # hzTargetSize = 1280
    # video2d = Lanczos4Resize(video2d, hzTargetsize, hzTargetsize * videoH / videoW)
    ## Commenting out the above resizing maintains realtime capability!


    ## Get video width/height and set the frame stretch factor
    ## Lower the value 100 to increase frame stretch, may introduce ghosting
    videoW = width(video2d)
    videoH = height(video2d)
    ResW = videoW + (videoW / 100)
    CropW = (ResW - videoW) / 2


    ## Create variables for left and right frame with one frame difference
    ## This is the Plufrich-like simulation that creates illusion of depth from movement
    f1 = video2d
    f2 = DeleteFrame(video2d, 0)


    ## Stretch the right frame to further the depth effect
    f1 = LanczosResize(f1, ResW, videoH)
    f1 = Crop(f1, 0, 0, videoW, videoH)

    ## Stretch the left frame to further the depth effect
    f2 = LanczosResize(f2, ResW, videoH)
    f2 = Crop(f2, CropW, 0, videoW, videoH)


    ## Output the two video frames in a side-by-side / parallel format
    ## Use this as a default for playing back on 3D Vision (Side by Side L/R)
    StackHorizontal(f2, f1)

    ## Output the two video frames in a Above/Below format (like Sony?)
    # StackVertical(f2,f1)


    ## Output the two video frames in a page flipping format for shutter glasses etc.
    ## The Tweak as proposed by eslave is for brighter image, modify the value 30
    # f1 = f1.ConvertToYV12.Tweak(Bright=30)
    # f2 = f2.ConvertToYV12.Tweak(Bright=30)
    # Interleave(f2,f1)


    ## Output the two video frames in anaglyph red-cyan as proposed by eslave
    # MergeRGB(f2.ShowRed, f1.ShowGreen, f1.ShowBlue)

    ## For reversed anaglyph i.e. cyan-red
    # MergeRGB(f1.ShowRed, f2.ShowGreen, f2.ShowBlue)


    ## Output the two video frames in anaglyph yellow-blue as proposed by eslave (untested)
    # f1 = f1.ConvertToYV12(matrix="PC.601").tweak(bright=12.5, sat=1.25, coring=false)
    # f1 = f1.ConvertToRGB32
    # f1 = f1.Levels(0, 1.05, 255, 0, 255, coring=false)
    # MergeRGB(f2.ShowRed, f1.ShowGreen, f1.ShowBlue)

    ## Output the two video frames in anaglyph blue-Yellow as proposed by eslave (untested)
    # f2 = f2.ConvertToYV12(matrix="PC.601").tweak(bright=12.5, sat=1.25, coring=false)
    # f2 = f2.ConvertToRGB32
    # f2 = f2.Levels(0, 1.05, 255, 0, 255, coring=false)
    # MergeRGB(f1.ShowRed, f2.ShowGreen, f2.ShowBlue)


    ## Output two video frames in Interlaced mode
    ## Ueed for Zalman Trimon, Acer Aspire 3D etc.
    # f1 = SeparateFields(f1)
    # f1 = SelectEven(f1)
    # f2 = SeparateFields(f2)
    # f2 = SelectOdd(f2)
    # interleave(f2,f1)
    # AssumeFieldBased()
    # weave()




    Πριν χρησιμοποιήσουμε το script χρειάζεται μια μικρή αλλαγή.

    Κατ' αρχάς, προσθέτουμε το όνομα αρχείου της ταινίας στην αρχή περίπου του script, συγκεκριμένα στη γραμμή:
    video2d = DirectShowSource("YOUR VIDEO FILE NAME-INCLUDE EXTENSION")
    αντικαθιστώντας το "YOUR VIDEO FILE NAME-INCLUDE EXTENSION"
     με το όνομα του αρχείου του βίντεο που θέλουμε  να μετατρέψουμε.

    Παράδειγμα:
    video2d = DirectShowSource("Avatar_Trailer_HD.avi")



     
    Αποθηκεύουμε το script έχοντας κοινή ονομασία με το video και με κατάληξη «.avs» τοποθετώντας το στον ίδιο φάκελο με το video.




    Σε αυτό το σημείο, είστε έτοιμοι για να δείτε την ταινία σας σε 3D.

    Για να γίνει αυτό, απλά ανοίξτε το script με ένα πρόγραμμα αναπαραγωγής πολυμέσων που λειτουργεί με τα AVS scripts (όπως το Windows Media Player, Media Player Classic κ.τ.λ.), κάνοντας δεξί κλικ πάνω του , πάμε «Άνοιγμα με..» και επιλέγοντας το πρόγραμμα αναπαραγωγής της επιλογής μας.

    Υποθέτοντας ότι έχετε κάνει όλα σωστά μέχρι τώρα, θα πρέπει να δείτε την ταινία, με δύο ελαφρώς διαφορετικά πλαίσια να παίζουν δίπλα-δίπλα.

    Αυτό είναι το 3D αρχείο, διαμορφωμένο για να παίξει με την τεχνολογία 3D Vision της Nvidia (side by side).



     
    Αν προτιμάτε ανάγλυφο (κόκκινο / κυανό) 3D, για χρήση με ένα ζευγάρι γυαλιά φίλτρο, θα πρέπει να κάνει μια γρήγορη αλλαγή στο script.

    Προσθέτουμε το σύμβολο  # στην αρχή της γραμμής που λέει
    StackHorizontal (f2, f1)
    κάνοντας το:
    #StackHorizontal (f2, f1)

    στη συνέχεια, αφαιρέστε το σύμβολο # στη γραμμή που λέει
    #MergeRGB (f2.ShowRed, f1.ShowGreen, f1.ShowBlue)
    κάνοντας το:
    MergeRGB (f2.ShowRed, f1.ShowGreen, f1.ShowBlue)

    Και αποθηκεύουμε τις αλλαγές.
     
    Το ίδιο μπορούμε να κάνουμε και για άλλα formats 3D που θα βρούμε μέσα στο script, όπως διπλό παράθυρο σε κάθετη διάταξη, κίτρινο-μπλε κ.τ.λ.
      
    Έτσι, βλέπουμε στο βίντεο μας σε 3D.




    Μετατροπή ταινίας 2D σε 3D με το VirtualDub

    Τώρα είμαστε έτοιμοι, έτσι δεν είναι;
    Όχι ακριβώς.

    Το AviSynth δουλεύει σε πραγματικό χρόνο, συνδυάζοντας καρέ-καρέ μία ταινία με ένα script και να μας δώσει σαν αποτέλεσμα βάσει των παραπάνω δύο παράθυρα δίπλα-δίπλα προβάλλοντας το μέσω του πρόγραμμα αναπαραγωγής πολυμέσων της επιλογής μας από το PC μας.

    Αν όμως θέλουμε να δούμε την ταινία αυτή σε οποιονδήποτε άλλο υπολογιστή;
    Θα πρέπει να εγκαταστήσετε το AviSynth πρώτα και να ακολουθήσετε εκ νέου τα παραπάνω και στο επόμενο PC.
    Αντ 'αυτού, θα σας δείξω τώρα πως μπορούμε  να αποθηκεύσουμε μόνιμα τα 3D βίντεο στο σκληρό μας δίσκο.
    Για να αποθηκεύσετε την ταινία, θα χρειαστείτε ένα πρόγραμμα που ονομάζεται VirtualDub.
    Το VirtualDub είναι ένα ελαφρύ, ανοικτού κώδικα πρόγραμμα επεξεργασίας βίντεο που είναι ιδιαίτερα καλό στο να κάνει γρήγορα re-encoding (και όχι μόνο).

    Κατεβάζουμε το VirtualDub.


    Το επόμενο βήμα της διαδικασίας είναι να κατεβάσουμε τον codec XviD.

    Αφού τον κατεβάσετε εγκαταστήστε τον.

    Ρυθμίστε το VirtualDub να χρησιμοποιεί τον codec XviD  κάνοντας κλικ Video-> Compression ...


     
    και στη συνέχεια επιλέγοντας Xvid MPEG-4 Codec
    πατάμε OK.



     
    Ανοίξτε το αρχείο AVS της ταινίας στο VirtualDub πηγαίνοντας “File > Open video file…”






    Αφού ανοίξει επιλέξτε “File > Save as avi… για να σώσουμε το τελικό αρχείο της 3D ταινίας μας.

    δώστε στο αρχείο σας ένα όνομα, πατήστε Save
    και περιμένετε να ολοκληρωθεί η διαδικασία του re-encoding




    …και είστε έτοιμοι.




    Καλή επιτυχία!

    11 σχόλια:

    1. Καλησπερα...
      Μετα απο την διαδικασια,ακολουθοντας τις οδηγιες που αναφερονται και με τα συγκεκριμενα προγραμματα κατεβασμενα και εγκατεστημενα φτανω στο σημειο:
      ”Ανοίξτε το αρχείο AVS της ταινίας στο VirtualDub πηγαίνοντας “File > Open video file…”
      οπου εμφανιζεται παραθυρο που αναφερει οτι το
      ”DirectShow Source” δεν μπορει να βρει το Video
      και Audio του αρχειου,για να παμε στην διαδικασια του σωσιματος,ωστε να ολοκληρωθει
      η εργασια.
      Παρακαλω μου δινεται οδηγιες για να ξεπερασω αυτο το εμποδιο...
      Ευχαριστω...

      ΑπάντησηΔιαγραφή
    2. Σας στελνω και εικονα για σαφήνεια και λεπτομερειες...
      Ευχαριστω...

      http://tinypic.com/r/j5lfo1/5

      ΑπάντησηΔιαγραφή
    3. Το ιδιο ακριβως προβλημα εχω και εγω αν ειναι ευκολο μια βοηθεια

      ΑπάντησηΔιαγραφή
    4. Παιδιά δε μου έχει τύχει τέτοιου είδους πρόβλημα. Πάντως αν κάνετε μια αναζήτηση στο google, θα δείτε αρκετές αναφορές και λύσεις στο πρόβλημά σας.

      ΑπάντησηΔιαγραφή
    5. k mena to idio kastel kati den les swsta mallon...sto arxeio txt pou apothikeuoume to script to emfanizei san .txt kai as to vazoume san .avs me apotelesma na min to dexete...iparxei allos tropos???

      ΑπάντησηΔιαγραφή
      Απαντήσεις
      1. Τη συγκεκριμένη διαδικασία την έχω κάνω δεκάδες φορές.
        Η μόνη ασυμβατότητα που μπορεί να παρουσιαστεί είναι να μη μπορεί να δεχθεί το VirtualDub κάποιο format ήχου και να βγάζει κάποιο μήνυμα λάθους, που και σε αυτή την περίπτωση πάντα υπάρχει κάποια λύση.
        Εγώ τα λέω σωστά, εσείς μάλλον δεν τα διαβάζεται όπως θα πρέπει.
        Και προφανώς δεν γνωρίζεται και τα αυτονόητα.
        Όταν ένα format αρχείου δεν είναι καταχωρημένο να ανοίγει με κάποιο πρόγραμμα, αυτό δεν πάει να πει πως δεν ανοίγει κιόλας. Στην περίπτωση που δεν υπάρχει στα presets του προγράμματος η κατάληξη ενός format κάποιου αρχείου από την επιλογή "File>Open video files" επιλέγουμε από την αναδυόμενη λίστα των καταλήξεων ("File of types") την επιλογή "All types (".")"
        Επίσης πριν χρησιμοποιήσετε το VirtualDub, θα πρέπει να έχετε εγκατεστημένο το AviSynth και τον codec XviD.

        Διαγραφή
    6. και αυτο που λες το εχω κανει...οπα μισο για να καταλαβεις σε μενα τουλαχιστον να με βοηθησεις τι φταιει..αποθηκευω στο σκριπτ στο notepad και μετα το ονομα βαζω .avs ok ως εδω..παω στο βιρτουαλ το βρησκω παταω add και μου πεταει οτι το ...ταδε αρχειο με το ονομα της ταινιας και καταληξη .avs.txt δεν υποστηριζεται απο το βιρτουαλ.δηλαδη το παιρναει ακομα σαν τεχτ αρχειο!γιατι???δεν εχει αλλες επιλογες στο αποθηκευση ως..μονο το .txt και εχω βαλει προγραμματα που θελει και τα 3

      ΑπάντησηΔιαγραφή
      Απαντήσεις
      1. Και μετά μου λέτε ότι διαβάζετε αυτά που γράφω...
        Αφού τα διαβάζετε και δεν τα καταλαβαίνετε, θα μπορούσατε να βλέπατε ποιο προσεκτικά τις εικόνες!!!
        Τί γράφω στον οδηγό;;;
        "Αποθηκεύουμε το script έχοντας κοινή ονομασία με το video και με κατάληξη «.avs» τοποθετώντας το στον ίδιο φάκελο με το video.".
        ΜΕ ΚΑΤΑΛΗΞΗ ".avs", δηλαδή αν η ταινία μας ονομάζετε "movie.avi", το script θα πρέπει να ονομάζετε "movie.avs" και όχι "movie.avs.txt".

        Διαγραφή
    7. ναι βρε ετσι το γραφω "movie.avs" και το εμφανιζει μονο του ετσι "movie.avs.txt" αυτο προσπαθω να σου πω τοση ωρα..μαλλον λογο του σημειωματαριου.

      ΑπάντησηΔιαγραφή
      Απαντήσεις
      1. Μην αλλάζεις την κατάληξη μέσω του σημειωματάριου.
        Σώσε το αρχείο ως txt και μετά (αφού κλείσεις το σημειωματάριο) κάνε rename (μετονομασία) το αρχείο αλλάζοντας την κατάληξη από ".txt" σε ".avs"

        Διαγραφή
      2. πωωω τωρα ειδα οτι ειναι αρχειο .mkv η ταινια πφφφ σορρυ για τη ταλαιπωρια

        Διαγραφή

    ΣΧΟΛΙΑ