Das ist nicht möglich, es sei denn, Sie einige Einschränkungen auf Ihre Eingabe avi hinzufügen Dateien oder haben Kontrolle über Encoder verwendet, um sie zu erstellen. Um ein Bild zu erhalten, müssen Sie es zuerst entschlüsseln. Dafür benötigen Sie einen geeigneten Codec, der mit Ihrer App installiert oder bereitgestellt wird. Und ich bezweifle, dass es möglich ist, jeden Codec da draußen zu berücksichtigen oder sie alle zu installieren/bereitzustellen. Also nein, Sie können einfach keine AVI-Datei öffnen. Sie können jedoch die beliebtesten (oder in Ihrem Kontext gebräuchlichen) Codecs unterstützen.
Der einfachste Weg, es zu tun ist in der Tat mit einem FFMPEG, da es bereits einige der gängigsten Codecs enthält (wenn es Ihnen nichts ausmacht extra 30 + Mb zu Ihrer App hinzugefügt). Wie Wrapper, ich habe AForge Wrapper in der Vergangenheit und es hat mir wirklich gefallen, weil es so einfach ist, mit zu arbeiten. Hier ist ein Beispiel aus seiner docs:
// 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();
Es gibt auch eine VfW-Wrapper in AForge (die standardmäßig in Windows enthalten ist), wenn Sie es einfach halten möchten, ohne externe Bibliotheken beteiligt sind. Sie werden immer noch VfW-kompatible Codecs benötigen, die tho (einige von ihnen sind standardmäßig in Windows enthalten, die meisten nicht).
Für diejenigen, die eine einfache Bibliothek benötigen, um auf .avi Videos zu arbeiten, habe ich AForge verwendet. Es ist kostenlos und erhöht nicht die Programmgröße. Ich habe die VFW-Bibliothek benutzt, da ich FFMPEG nicht zum Laufen bringen konnte, aber es ist wirklich einfach, die Frames zu extrahieren, vorausgesetzt, die Maschine hat den richtigen Codec für das spezifische .avi-Video. – talkanat