Computer >> Máy Tính >  >> Phần mềm >> Phần mềm

Tạo video chuyển động chậm trong VirtualDub + AviSynth

Được rồi. Cách đây vài tuần, chúng ta đã học được cách sử dụng bộ lọc VirtualDub để thay đổi kích thước video. Ngoài nhu cầu thẩm mỹ thuần túy và có thể là mong muốn làm cho phương tiện đầu ra của bạn nhỏ hơn, việc thay đổi kích thước video có vẻ không quan trọng lắm. Nhưng điều gì sẽ xảy ra nếu bạn có một nhu cầu rất đặc biệt, chẳng hạn như tạo các video chuyển động chậm theo thời gian ngắn và phần mềm chỉ thực hiện điều đó yêu cầu các định dạng và kích thước nhất định?

Đừng lo lắng, chúng tôi đã vượt qua trở ngại đó trong hướng dẫn trước. Và hôm nay, tôi sẽ hướng dẫn các bạn cách tạo video chuyển động chậm. Có VirtualDub. Và chúng ta sẽ làm quen với một chương trình đẹp trai khác tên là AviSynth. Chương trình này là một tiện ích mạnh mẽ cho hậu kỳ video. Nó không có giao diện người dùng, điều đó có nghĩa là bạn sẽ phải ổn định với dòng lệnh và tập lệnh. Ồ, nghe có vẻ đáng sợ, nhưng đừng lo, tôi sẽ làm cho nó đơn giản.

AviSynth, cài đặt, chuẩn bị, cấu hình

Trước khi bắt đầu sử dụng VirtualDub, chúng tôi cần định cấu hình AviSynth. Tải về và cài đặt, khá đơn giản. Nhưng chúng tôi cũng cần một plugin bổ sung có tên là mvtools không có sẵn trong gói cơ bản. Khi điều này được thực hiện, bạn đã sẵn sàng sử dụng AviSynth.

Sử dụng AviSynth

Không có giao diện người dùng (GUI), không có cách dễ dàng hoặc ưa thích để hoàn thành công việc. Tuy nhiên, bạn không cần phải sợ dòng lệnh. Mở trình soạn thảo văn bản và bắt đầu viết lệnh - hoặc tìm các tập lệnh có sẵn trên Web và sao chép chúng. Tôi KHÔNG phải là chuyên gia, nhưng tôi có thể đọc mã và tìm kiếm trên Google theo cách của mình.

Tôi đã tìm thấy kịch bản quay chậm ở Nerds Central và điều chỉnh nó cho phù hợp với mục đích sử dụng của mình. Tác giả giải thích chi tiết những gì tập lệnh làm, vì vậy có rất ít điểm để xem qua các lệnh và giải thích từng lệnh một. Chỉ cần nhớ rằng AviSynth là ngôn ngữ lập trình thực tế có cú pháp riêng. Nếu bạn biết một, bạn biết tất cả.

Đây là công việc của tôi, về cơ bản giống với ví dụ trên:

LoadPlugin("Đường dẫn đến mvtools.dll")
source=AVISource("Đường dẫn đến source.avi",false)
oSource=nguồn
nguồn=ConvertToYV12(nguồn)
nguồn=Giả sửFPS(nguồn,25)
backward_vec=source.MVanalyse(isb=true,truemotion=true,pel=2,idx=1)
forward_vec=source.MVanalyse(isb=false,truemotion=true,pel=2,idx=1)
cropped=source.crop(4,4,-4,-4) # bằng một nửa kích thước khối 8
backward_vec2=cropped.MVanalyse(isb=true,truemotion=true,pel=2,idx=2)
forward_vec2=cropped.MVanalyse(isb=false,truemotion=true,pel=2,idx=2)
fSource=source.MVFlowFps2(backward_vec,forward_vec,
backward_vec2,forward_vec2,num=250,idx=1,idx2=2)
fSource=Giả sửFPS(fSource,25)
trả lại fSource

Tuy nhiên, một vài gợi ý cần bạn chú ý:

Bạn sẽ cần trỏ chính xác đến tệp mvtools.dll và tệp nguồn của mình. Thứ hai, có hướng dẫn chuyển đổi nguồn sang định dạng YV12. Bạn có thể chỉnh sửa dòng này nếu tệp của bạn đã ở định dạng phù hợp - hoặc sử dụng VirtualDub.

nguồn=ConvertToYV12(nguồn)

Làm sao bạn biết thứ YV12 này là gì? Hoặc tại sao bạn cần nó? Câu trả lời là bạn không cần thực sự cần đến nó, nhưng nó rất tốt cho việc xử lý video. Theo thuật ngữ táo bạo sẽ gây ấn tượng với bạn, YV12 là định dạng phẳng, nghĩa là đối với mỗi hình ảnh, dữ liệu độ sáng cho tất cả các pixel được lưu trữ liên tục, tiếp theo là dữ liệu sắc độ, lý tưởng cho các kỹ thuật xử lý hình ảnh. Bây giờ, hãy quên câu cuối cùng này.

Dù sao đi nữa, để biết thêm thông tin về định dạng nào hỗ trợ YV12, AviSynth FAQ là bạn của bạn. Nói chung, MPEG-4 với XviD sẽ hoạt động tốt.

Nếu bạn hiểu sai điều này vì một lý do nào đó, bạn sẽ gặp lỗi này khi cố tải tập lệnh trong VirtualDub - còn về cách bạn thực hiện điều đó chính xác như thế nào, chúng ta sẽ sớm biết:

Tiếp theo, Giả sử FPS cho nguồn. Đặt tốc độ khung hình phù hợp cũng giúp tạo ra đầu ra tốt nhất mà không cần đoán. Điều này sẽ giúp bạn tạo ra video đầu ra như mong đợi mà không cần phải thực hiện nhiều bước điều chỉnh tăng giảm tốc độ khung hình.

Cắt xén

Đây là một khó khăn. Nếu bạn tình cờ có một tệp video có chiều rộng không chia hết cho bốn, bạn sẽ gặp lỗi từ VirtualDub trong khi cố tải tập lệnh, phàn nàn về vấn đề số học này:

Bạn có thể quyết định loại bỏ dòng tham số đã cắt trong tập lệnh của mình, điều này có thể hoạt động, nhưng hãy đảm bảo logic của tập lệnh của bạn được thay đổi, để bạn không kết thúc với bất kỳ biến không xác định nào:

Nhưng tốt hơn hết, hãy thay đổi kích thước video của bạn trong VirtualDub, sử dụng bộ lọc thay đổi kích thước! Đó chính xác là những gì chúng ta đã học được lần trước! Bây giờ bạn biết tại sao chúng tôi làm điều đó.

Thông số MVFlowFPS2 sẽ xác định video bị làm chậm của bạn sẽ có bao nhiêu khung hình, tuy nhiên, tốc độ làm chậm thực tế phụ thuộc vào tốc độ khung hình đầu ra. Thật vậy, cuối cùng, hãy chú ý đến AssumeFPS đầu ra, vì điều này cuối cùng sẽ xác định tốc độ nhanh hay chậm của video, bao gồm cả thời lượng và kích thước của video. Bạn có thể chơi với tham số này bao nhiêu tùy thích để xem điều gì mang lại kết quả tốt nhất.

fSource=Giả sửFPS(fSource,25)

Tải tập lệnh trong VirtualDub

Thật vậy, không có lỗi nào hiển thị ở trên sẽ hiển thị cho đến khi bạn lưu tệp văn bản của mình dưới dạng tập lệnh có phần mở rộng .avs và mở tệp đó trong VirtualDub, giống như cách bạn mở bất kỳ tệp nào khác. Nếu bạn không mắc lỗi nào, video sẽ tải, với một hệ số khung hình nhất định được chèn vào. Ví dụ trên cung cấp cho bạn hệ số x10, nhưng bạn có thể làm việc với bất kỳ số FPS nào để thay đổi nó, chẳng hạn như x2, x5, v.v..

Kết quả cuối cùng

Những đoạn cắt cuối cùng trong công việc của tôi với AviSynth hiện có trên Youtube. Liên kết một và hai. Vì vậy, hãy nhảy qua và kiểm tra chất lượng công việc của tôi. Bạn cũng có thể quan tâm đến bộ sưu tập thiết kế nội thất có các video này.

Bạn sẽ nhận thấy có một số vệt mờ ở các cạnh của video do nội suy giữa các khung hình. Bản ghi ban đầu là tập hợp các khung hình của một camera, được lấy mẫu lại thành 25 khung hình mỗi giây, sau đó bị chậm lại mười lần. Vì vậy, bạn có phần mềm lấp đầy khoảng trống. 250 lần giữa các khung hình, đây không phải là một việc đơn giản. Bạn sẽ nhận được kết quả tốt hơn nhiều với các video chuyển động vốn đã có một số vết mờ và điều này được mong đợi trong những trường hợp này.

Nhưng tôi đoán đó là một công việc tốt. Và bạn biết làm thế nào để làm điều đó, bây giờ.

Kết luận

Vậy là xong, một hướng dẫn đa phương tiện khác đã được cắt và thái hạt lựu. Đến bây giờ, bạn là một đầu bếp video. Lưu ý nghiêm túc, VirtualDub là một công cụ rất mạnh và có khả năng mở rộng cao để làm việc với các tệp phương tiện, bao gồm tất cả các loại bộ lọc. Kết hợp với AviSynth, bạn có thể sử dụng Ma trận ấn tượng hoặc nếu bạn thích John Woo hơn, các hiệu ứng trong video tự làm của bạn, đánh bại hàng xóm và đồng nghiệp của bạn.

AviSynth không phải là tiện ích đơn giản nhất vì nó thiếu GUI, nhưng nó hoạt động tốt. Chỉ cần nhớ cách tiếp cận lớp cơ bản. Sử dụng VirtualDub để thay đổi và sửa lỗi ở cấp độ đầu tiên cũng như xử lý và chuyển mã bổ sung. Tiếp theo, sử dụng các bộ lọc có sẵn để đạt được các hiệu ứng bổ sung. Cuối cùng, hãy sử dụng các mô-đun của bên thứ ba cho những bước hoàn thiện cuối cùng. Vâng, đó sẽ là tất cả. Chúc vui vẻ.

Chúc mừng.