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).
Nguồn
2013-07-24 06:10:23
Đố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