ahkiem32 Quản trị viên
Tổng số bài gửi : 1891 Points : 5671 Reputation : 1 Join date : 05/09/2009 Age : 33 Đến từ : BiÌ€nh DÆ°Æ¡ng
| Tiêu đề: Cách chuyển đổi phim 2D thành 3D dễ dàng Thông báo lỗi 5/4/2010, 6:04 am | |
| Các bộ phim 3D đang thu hút khá nhiều người hâm mộ trên toàn thế giới nhưng số lượng phim còn chưa nhiều. Vì vậy, bài viết sẽ cung cấp cho độc giả yêu thích phim 3D.. Đơn giản người dùng chỉ cần một đoạn scrip dưới đây, tải và cài đặt ứng dụng AviSynth. Chuyển đổi 2D thành 3D bằng AviSynth ## 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("Avatar_Trailer_HD.avi") ## 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() | Để chuyển các bộ phim 2D thành 3D, người dùng tải chương trình có tên gọi AviSynth về và cài đặt trên máy tính. Tuy nhiên, chương trình này không có giao diện người dùng mà thay vào đó, chúng chỉ có chức năng như một bộ Codec để cho phép các ứng dụng như Windows Media Player hiểu được các tập lệnh (script) của AviSynth (dưới dạng các tệp tin AVS). Chỉ cần sử dụng cùng một script AVS trên đây để chuyển các tệp tin 2D thành 3D. Các bước thực hiện gồm: - Chép đoạn script đó và dán vào trong Notepad. - Đổi tên tệp tin ở ngay đầu đoạn script “Avatar_Trailer_HD.avi” thành tên tệp tin video mà người dùng đang muốn chuyển sang 3D. - Lưu lại theo dạng tên tệp tin mở rộng.AVS trong cùng thư mục chứa tệp tin video. Như vậy là công việc chuyển đổi đã hoàn thành và chỉ còn cách để thưởng thức bộ phim 3D đó mà thôi. Đơn giản, người dùng mở một chương trình nghe nhạc đọc được các script AVS (như Windows Media Player) và mở tệp tin .AVS đã được tạo ở bước trên. Giả sử bạn làm đúng như các bước trên, bạn sẽ nhìn thấy phiên bản video cực rộng với hai khung hình hơi khác nhau đang chạy cạnh nhau để tạo hiệu ứng 3D. Các tệp tin 3D này được định dạng để hoạt động cùng với công nghệ 3D Vision của Nvidia. Nếu bạn thích 3D nổi màu (đỏ/lục lam) để sử dụng với cặp kính lọc, người dùng cần chỉnh sửa nhanh đoạn script. Bằng cách thêm # vào đầu dòng StackHorizontal(f2, f1), rồi bỏ # ở dòng # MergeRGB(f2.ShowRed, f1.ShowGreen, f1.ShowBlue). Tuy nhiên, chương trình AviSynth hoạt động theo thời gian thực. Chúng tổng hợp từ tệp tin .Avi gốc và script, xếp khung hình để trình trình nghe nhạc xử lý các khung hình đó. Nhưng điều khó khăn cho người dùng là nếu muốn xem bộ phim 3D đó ở các máy tính khác thì lại phải cài đặt AviSynth và thực hiện các thao tác như trên. Để loại bỏ phiền phức đó, đơn giản người dùng chỉ cần lưu vĩnh viễn video 3D này trên ổ cứng nhờ chương trình VirtualDub. Lưu video 3D bằng VirtualDub Để lưu các bộ phim 3D, người dùng truy cập vào trang VirtualDub, tải và giải nén chương trình này trên máy tính. VirtualDub là một trình biên tập video nguồn mở có dung lượng nhẹ và đặc biệt tốt khi mã hóa lại các video rất nhanh. Bước tiếp theo của quá trình, người dùng phải đảm bảo rằng VirtualDub có các công cụ cần thiết để tạo một bản sao chất lượng cao của bộ phim 3D đó. Cụ thể, chúng cần các bộ Codec-một dành cho hình ảnh video và một dành cho âm thanh, chẳng hạn như các bộ Codec Xvid MP4 và LAME MP3. Nếu trên máy tính chưa có sẵn các bộ Codec này, người dùng nên tải về (Codec Xvid và LAME) và cài đặt. Khi tải về cả hai, cần chạy trình cài đặt để đăng ký các Codec này với hệ điều hành Windows. Thiết lập VirtualDub để sử dụng Xvid bằng cách, kích Video -> Compression và chọn Xvid MPEG-4 Codec. Thiết lập âm thanh bằng cách, kích vào Audio -> Full, chờ chút chương trình xử lý, rồi kích vào Audio -> Compression và chọn MPEG Layer 3. Cuối cùng mở tệp tin .AVS của video 3D đó và kích File -> Save as AVI và gõ tên muốn lưu. Như vậy, chúng ta đã tạo ra một bộ phim 3D để mở bất cứ lúc nào mà không phải thực hiện các thao tác ở trên cũng như không cần cài đặt chương trình AviSynth nữa. | |
|