Bạn có thể sử dụng FFMPEG như một quá trình riêng biệt (cách đơn giản nhất) và để cho nó giải mã IDR đầu tiên cho bạn. Ở đây bạn có một FFMPEG lớp đó có phương pháp GetThumbnail(), để nó bạn vượt qua địa chỉ của file video, địa chỉ của hình ảnh JPEG được thực hiện, và độ phân giải mà bạn muốn hình ảnh là:
using System.Diagnostics;
using System.Threading;
public class FFMPEG
{
Process ffmpeg;
public void exec(string input, string output, string parametri)
{
ffmpeg = new Process();
ffmpeg.StartInfo.Arguments = " -i " + input+ (parametri != null? " "+parametri:"")+" "+output;
ffmpeg.StartInfo.FileName = "utils/ffmpeg.exe";
ffmpeg.StartInfo.UseShellExecute = false;
ffmpeg.StartInfo.RedirectStandardOutput = true;
ffmpeg.StartInfo.RedirectStandardError = true;
ffmpeg.StartInfo.CreateNoWindow = true;
ffmpeg.Start();
ffmpeg.WaitForExit();
ffmpeg.Close();
}
public void GetThumbnail(string video, string jpg, string velicina)
{
if (velicina == null) velicina = "640x480";
exec(video, jpg, "-s "+velicina);
}
}
Sử dụng như này:
FFMPEG f = new FFMPEG();
f.GetThumbnail("videos/myvid.wmv", "images/thumb.jpg", "1200x223");
Để làm việc này, bạn phải có ffmpeg.exe trong thư mục/utils hoặc thay đổi mã để tìm ffmpeg.exe.
Có nhiều cách khác để sử dụng FFMPEG trong .NET, như trình bao bọc .NET, bạn có thể google cho chúng. Về cơ bản họ cũng làm điều tương tự ở đây, chỉ tốt hơn. Vì vậy, nếu FFMPEG hoàn thành công việc của bạn, tôi khuyên bạn nên sử dụng .NET wrapper.
Khung đầu tiên của bất kỳ video nào thường có màu đen. Bạn sẽ làm tốt hơn để kiểm tra một vài khung hình và chọn một khung lớn nhất (kích thước byte). Điều này, tin hay không, là một xấp xỉ tốt với 'một trong những thú vị nhất' đặc biệt là trong bất kỳ tình huống mờ dần từ đen. –