Salut;

Je vous demande de l'aide concernant les Windows Media Foundation, si vous le voulez bien.

J'ai réussi à créer un fichier MPEG-4 contenant une vidéo encodée en H264, mais n'ai, à ce jour, jamais réussi à inclure de l'audio dans ce fichier!
En effet, j'ai tenté par 2 moyens d'y parvenir, mais sans succès.
- J'ai utilisé, dans un premier temps, un SinkWriter que j'ai configuré pour travailler à la fois en vidéo et en audio, dont le MediaSink était intégré (ainsi que les encodeurs H264 pour la vidéo et AAC pour l'audio) = utilisation de la fonction "MFCreateSinkWriterFromURL(...)".
Au final, j'ai obtenu soit un fichier vidéo (H264), de type MPEG-4, lisible sous Windows Media Player ou n'importe quel autre player, ou soit un fichier audio (AAC), de type MPEG-4 (c'est à dire avec une extension .mp4 ou .m4a), également audible avec un player. Soit l'un, soit l'autre, car avec le SinkWriter, je n'arrive pas à le configurer de telle sorte qu'il comprenne que j'utilise 2 flux différents en entrée pour obtenir en sortie un entrelacement de ces 2 flux...
- Deuxième cas, j'utilise la chaîne SinkWriter plus MediaSink (et non plus un MediaSink intégré au SinkWriter). Tout d'abord, configuration du MediaSink (définition de ses types d'entrée audio et vidéo) en utilisant "MFCreateMPEG4MediaSink(...)". Jusque là, aucun problème, je vérifie bien que le MediaSink comprend ce que je lui demande et c'est le cas. Puis, je crée deux SinkWriter différents, un pour la vidéo et un autre pour gérer l'audio. Le SinkWriter vidéo fait son boulot, puisqu'il prend des images décompressées en entrée pour les sortir en H264 et les transmet au MediaSink qui écrit dans le fichier de sortie. Puis, lorsque j'utilise le SinkWriter audio, impossible d'avoir des données audio traitées! Le SinkWriter bloque sur l'instruction "BeginWriting", en me renvoyant un code erreur 0xc00d36da (MF_E_MULTIPLE_SUBSCRIBERS), qui signifie qu'un composant est déjà en attente d'événements du générateur d'événements... Là, je dois dire que je suis un peu 'limité' pour comprendre ce qui pose problème! J'utilise justement un deuxième SinkWriter, spécialement pour gérer l'audio, et ne pas avoir de problèmes de gestion de deux flux différents au sein d'un même SinkWriter.
Enfin, étant donné qu'avec cette manip, le SinkWriter audio ne fait pas son boulot, mon fichier de sortie ne contient que de la vidéo, qui est lisible. Toutefois, lorsque je me renseigne sur le type de fichier et ce qu'il contient, avec un petit logiciel adapté pour cela, je vois que le conteneur utilisé est bien de type MPEG-4, que la vidéo est encodée H264 (avec les paramètres que j'ai spécifié, résolution, bitrate...), et que l'audio est encodée AAC (il le sait, alors que je n'ai même pas réussi à écrire de données audio dans le fichier pourtant!).

Voilà, donc après maintes essais infructueux, je m'en remets à vous pour résoudre ce problème...

En espérant que vous puissiez m'aider! Toute aide est vraiment la bienvenue!
Merci d'avance.


Cordialement.