2013-07-24 30 views
11

Tôi đang cố gắng viết mã C# để trích xuất từng khung của tệp .avi và lưu nó vào thư mục được cung cấp. Bạn có biết bất kỳ thư viện phù hợp nào để sử dụng cho mục đích đó không?Trích xuất khung của tệp .avi

Lưu ý: Bản phát hành cuối cùng phải hoạt động trên tất cả các hệ thống bất kể codec đã cài đặt hoặc kiến ​​trúc hệ thống. Nó không được yêu cầu sự hiện diện của một chương trình khác (như MATLAB) trên máy.

Xin cảm ơn trước. Tunç

Trả lời

12

này là không thể, trừ khi bạn thêm một số hạn chế để avi đầu vào của bạn tệp hoặc có quyền kiểm soát bộ mã hóa được sử dụng để tạo chúng. Để có được một hình ảnh, bạn sẽ phải giải mã nó trước tiên, và cho rằng bạn sẽ cần một codec thích hợp được cài đặt hoặc triển khai với ứng dụng của bạn. Và tôi nghi ngờ nó có thể tài khoản cho mỗi codec ra có hoặc cài đặt/triển khai tất cả. Vì vậy, không, bạn sẽ không thể mở chỉ bất kỳ tệp avi avi nào. Tuy nhiên, bạn có thể hỗ trợ các codec phổ biến nhất (hoặc phổ biến trong ngữ cảnh của bạn).

Cách dễ nhất để thực hiện điều này thực sự là sử dụng FFMPEG, vì bản alredy của nó bao gồm một số codec phổ biến nhất (nếu bạn không nhớ thêm 30 + Mb vào ứng dụng của mình). Đối với các trình bao bọc, tôi đã sử dụng trình bao bọc AForge trong quá khứ và thực sự thích nó, vì nó hoạt động như thế nào. Dưới đây là một ví dụ từ tài liệu của nó:

// create instance of video reader 
VideoFileReader reader = new VideoFileReader(); 
// open video file 
reader.Open("test.avi"); 
// read 100 video frames out of it 
for (int i = 0; i < 100; i++) 
{ 
    Bitmap videoFrame = reader.ReadVideoFrame(); 

    videoFrame.Save(i + ".bmp") 

    // dispose the frame when it is no longer required 
    videoFrame.Dispose(); 
} 
reader.Close(); 

Ngoài ra còn có một wrapper trong AForge VfW phiền (được bao gồm trong Windows theo mặc định), nếu bạn muốn giữ nó đơn giản mà không liên quan đến thư viện bên ngoài. Bạn vẫn sẽ cần codec cài đặt tương thích VfW tho (một số trong số chúng được bao gồm trong Windows theo mặc định, hầu hết là không).

+1

Đối với những người yêu cầu thư viện đơn giản để làm việc trên video .avi, tôi đã sử dụng AForge. Nó là miễn phí và nó không làm tăng kích thước chương trình nhiều. Tôi đã sử dụng thư viện VFW vì tôi đã không thể có được FFMPEG để làm việc, nhưng nó thực sự là dễ dàng để trích xuất các khung hình miễn là máy có codec thích hợp cho video .avi cụ thể. – talkanat