Was möchten Sie erreichen?
Ist das eine Frage, wie Video-Containertypen strukturiert sind?
Siehe zum Beispiel: http://www.daubnet.com/formats/AVI.html
Das ist eine Beschreibung, wie AVI-Dateien strukturiert sind. Google kann Ihnen bei der Suche nach anderen Containerdateiformaten helfen.
Wenn Sie ein Video aufnehmen, besteht es normalerweise aus einzelnen Frames, denken Sie an einzelne Bitmap-Dateien in einem Verzeichnis.
Um nur 1 Datei eines Videos zu haben, wird dieser Datenstrom von Frames in einen Container gestellt, der eine Überschrift hat, die den Inhalt und ein bestimmtes Layout beschreibt, in dem die Frames sequenziell in der Datei gespeichert werden.
Einfaches Beispiel für meinen eigenen Behälter:
{
struct header
{
unsigned int frametype;
unsigned int framesize;
};
byte* readFrame(header* pHdr, int frameNum)
{
byte* pFirstFrame = ((byte*) pHdr) + sizeof(header);
return pFristFrame + frameNum * pHdr->framesize;
}
}
Es gibt mehrere anderen Containertypen. AVI ist nur einer dieser Containertypen. Um zu den einzelnen Frames zu gelangen, müssen Sie den Header in der Datei interpretieren und dann basierend auf diesen Informationen die Position des Frames berechnen, den Sie analysieren möchten.
Ich habe Ihnen einen Link zur Definition des AVI-Dateiformats gepostet. Es gibt andere Orte, an denen Sie Informationen über die Dateiformate mpeg/mkv/ogm erhalten können.
Sie benötigen diese Informationen, damit Ihr Programm funktioniert.
Nebenbei, komprimierte Formate sichern nicht alle einzelnen Frames unabhängig. Sie sichern einen individuellen Rahmen und dann mehrere Zwischenrahmen, die nur die Information enthalten, wie sich der aktuelle Rahmen von dem letzten vollständigen Rahmen unterscheidet. Sie können also bei jeder Bildnummer keine vollständigen Bilder extrahieren.