Bonjour,
Depuis quelque temps je tente de réaliser un graph de filtres avec la librairie de Directshowlib (2005) malheureusement cela ne donne rien car en faite je voudrais pouvoir jouer des fichiers mp3 et les envoyer sur une carte son que je choisirai dans une ComboBox alors ma question c'est comment faire ?
Voci mon code test pour lire mon fichier mp3 sur la sortie de mon casque audio (cela ne bug pas mais rien n'est joué). Quelqu'un pourrait-il m'aider svp ?
//Variables globales
IGraphBuilder graphBuilder;
IMediaControl mediaControl;
void MainFormLoad(object sender, EventArgs e)
{
graphBuilder = (IGraphBuilder)new FilterGraph();
IBaseFilter sourceFilter = null;
graphBuilder.AddSourceFilter(@"C:\monfichier.mp3", "source", out sourceFilter);
//Je passe le guid du filtre MPEG-I Stream Splitter
Type demultli = Type.GetTypeFromCLSID(new Guid("336475D0-942A-11CE-A870-00AA002FEAB5"));
IBaseFilter multltiplexage = (IBaseFilter)Activator.CreateInstance(demultli);
//Je passe le guid du filtre MPEG Layer-3 Decoder
Type decodeur = Type.GetTypeFromCLSID(new Guid("38BE3000-DBF4-11D0-860E-00A024CFEF6D"));
IBaseFilter decod = (IBaseFilter)Activator.CreateInstance(decodeur);
//Je passe le guid du filtre de mon casque audio Logitech USB Headset
Type clef = Type.GetTypeFromCLSID(new Guid("E30629D1-27E5-11CE-875D-00608CB78066"));
IBaseFilter casque = (IBaseFilter)Activator.CreateInstance(clef);
//J'ajoute les filtres au graphe manager
graphBuilder.AddFilter(multltiplexage, "mon multi");
graphBuilder.AddFilter(decod,"mon decod");
graphBuilder.AddFilter(casque, "mon casque");
//Variables Pin
IPin sourceOut = null;
IPin demultiIn = null;
IPin demultiOut = null;
IPin decodIn = null;
IPin decodOut = null;
IPin casqueIn = null;
sourceFilter.FindPin("Output", out sourceOut);
multltiplexage.FindPin("In", out demultiIn);
multltiplexage.FindPin("Output", out demultiOut);
decod.FindPin("In", out decodIn);
decod.FindPin("Output", out decodOut);
casque.FindPin("In", out casqueIn);
//Je connecte les filtres via les pins
graphBuilder.Connect(sourceOut, demultiIn);
graphBuilder.Connect(demultiOut,decodIn);
graphBuilder.Connect(decodOut, casqueIn);
graphBuilder.Connect(sourceOut, decodIn);
graphBuilder.Connect(decodOut, casqueIn);
mediaControl = (IMediaControl)graphBuilder;
//Execution du mp3
mediaControl.Run();
}
D'avance je remercie celui ou celle qui pourra m'éclairer car en fait je fais tout cela pour mon travail de fin d'études.