Autor Beitrag
Lazarus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Sa 22.03.08 01:29 
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 :
ausblenden 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...