Hallo,
ich würde gerne mit einem SampleGrabber (DirectShow) alles mithören, was aus meinen Lautsprechern kommt, also entsprechend NUR Audio.
Es gibt mehrere gleichzeitig gespielte "Channels". Ein Channel sieht (Schematisch) so aus :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| procedure TForm1.btnRenderFileClick(Sender: TObject); var pGraph: IGraphBuilder; pControl: IMediaControl; pEvent: IMediaEvent; evCode: Integer; strPath: string; wstrFileName: PWideChar; begin CoInitialize(nil); GetMem(wstrFileName, MAX_PATH); try CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC_SERVER,IID_IGraphBuilder,pGraph); pGraph.QueryInterface(IID_IMediaControl,pControl); pGraph.QueryInterface(IID_IMediaEvent,pEvent); strPath := FilenameEdit1.Text; MultiByteToWideChar(CP_ACP, 0, PChar(strPath), -1, wstrFileName, MAX_PATH); if Succeeded(pGraph.RenderFile(wstrFileName,nil)) then begin if Succeeded(pControl.Run) then begin pEvent.WaitForCompletion(INFINITE,evCode); end; end; finally CoUninitialize(); FreeMem(wstrFileName, MAX_PATH) end; end; |
Ich denke ich müsste etwa das von oben nehmen, mit einem Nullrenderer und einem SampleGrabber...
Aber ich habe irgendwie keine Idee, wie das gehen soll... Die MS-Samples nützen mir auch nur bedingt etwas, da ich mit C++ auf Kriegsfuss stehe
Ich hoffe jemand kann mir da einen Rat geben ... Danke...