Salut,
Je découvre complètement le format MXF et j'aimerais coder une méthode permettant d'extraire à partir d'un fichier MXF des images d'un timecode précis. J'ai donc utilisé pour cela la librairie C++ Mxflib. D'après ce que j'ai compris en m'informant un peu sur le format MXF, il s'agit de lire une à une les Body Partitions du fichier MXF, d'accéder à leur Essence Container (Generic Container) qui contient plusieurs Content Packages, et chaque Content Package contient plusieurs items, dont un Picture Item (une image) et un Data Item (contenant entre autre le Timecode de l'image).
Seulement voilà, même en comprenant un peu la théorie, je ne vois pas comment coder cela avec Mxflib et j'ai un peu de mal à comprendre la documentation. En regardant des fichiers fournis avec la librairie (comme mxfdump ou mxfsplit), le bout de code suivant permet en gros d'accéder aux partitions unes à unes :
Code :
- std::string DictName = "dict.xml";
- LoadDictionary(DictName);
- MXFFilePtr TestFile = new MXFFile;
- if (! TestFile->Open(argv[num_options+1], true))
- {
- perror(argv[num_options+1]);
- return 1;
- }
- // Get a RIP (however possible)
- TestFile->GetRIP();
- RIP::iterator it = TestFile->FileRIP.begin();
- while(it != TestFile->FileRIP.end())
- {
- TestFile->Seek((*it).second->ByteOffset);
- PartitionPtr ThisPartition = TestFile->ReadPartition();
- if(ThisPartition)
- {
- // Traiter la partition ...
- ...
|
Mais je ne vois pas comment ensuite lire l'Essence Container, ses Content Packages puis les différents Items (surtout l'image et le timecode en fait).
Si quelqu'un a déjà utilisé la librairie Mxflib, je lui serai reconnaissant de bien vouloir m'aider .