Sound mit DirectShow



  • hiho,
    ich spiele hiermit eine .mp3 Datei ab:

    // DirectSound
    	IGraphBuilder *GraphBuilder;
    	IMediaControl *Control;
    	IMediaEvent *Event;
    	IMediaSeeking *Seek;
    	if(FAILED(CoInitialize(NULL)))
    	{
    		MessageBox(0, TEXT("CoInitialize failed!"), AppName.c_str(), MB_ICONERROR);
    		return false;
    	}
    
        CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IGraphBuilder, (void **)&GraphBuilder);
        GraphBuilder->QueryInterface(IID_IMediaControl, (void **)&Control); // Get the IMediaControl Interface
        GraphBuilder->QueryInterface(IID_IMediaSeeking, (void **)&Seek); // Get the IMediaSeeking Interface
        GraphBuilder->QueryInterface(IID_IMediaEventEx, (void **)&Event); // Get the IMediaEventEx Interface
    	if(FAILED(GraphBuilder->RenderFile(TEXT("fightsound.mp3"), NULL)))
    	{
    		MessageBox(0, TEXT("RenderFile failed!"), AppName.c_str(), MB_ICONERROR);
    		return false;
    	}
    
    	if(FAILED(Control->Run()))
    	{
    
    		MessageBox(0, TEXT("MediaControl::Run failed!"), AppName.c_str(), MB_ICONERROR);
    		return false;
    	}
    

    Das klappt auch super. Ich möchte aber noch mehr MP3 Dateien mit DirectShow abspielen, und wenn ich RenderFile nochmal aufrufe, kommt die neue Datei zum alten Graph dazu und es werden beide Mp3s zugleich abgespielt. Wie kann ich den Graph löschen, bevor ich eine neue MP3 Datei hinzufüge, damit nur die neue abgespielt wird? 😕



  • Mach doch einfach einen ganz neuen Graphen...



  • retreat keep microblogging time


Log in to reply