0

I have a question. For capture video I can select a different camera and microphone and everythig is fine but for playback a video I need to set an output audio and I dont'n know how to do that.

My code look's like this:

IFilterGraph2 _previewGraph;
IFilterGraph2 _captureGraph;
IBaseFilter _advancedSystemFormatFileWriter;
IFileSinkFilter _filewriterSink;
ICaptureGraphBuilder2 _captureGraphBuilder;
_captureGraph = (IFilterGraph2)new FilterGraph();
_captureGraphBuilder = (ICaptureGraphBuilder2)new CaptureGraphBuilder2();
var hResult = _captureGraphBuilder.SetFiltergraph(_captureGraph);
Marshal.ThrowExceptionForHR(hResult);
stage++;
CaptureMediaControl = _captureGraph as IMediaControl;
_advancedSystemFormatFileWriter = (IBaseFilter)new WMAsfWriter();
hResult = _captureGraph.AddFilter(_advancedSystemFormatFileWriter, "WM ASF File Writer");
Marshal.ThrowExceptionForHR(hResult);
stage++;
_filewriterSink = _advancedSystemFormatFileWriter as IFileSinkFilter;
hResult = _filewriterSink.SetFileName(captureFilename, null);
Marshal.ThrowExceptionForHR(hResult);
stage++;
hResult = BridgeController.InsertSourceFilter(_previewSinkFilter, _captureGraph, out _captureSourceFilter);
Marshal.ThrowExceptionForHR(hResult);
stage++;
hResult = _captureGraph.AddFilter(_speakerCaptureFilter, "Audio Renderer");
Marshal.ThrowExceptionForHR(hResult);
//connect bridge output to file writer inputs
hResult = _captureGraph.Connect(
DsFindPin.ByDirection(_captureSourceFilter, PinDirection.Output, 0),
DsFindPin.ByName(_advancedSystemFormatFileWriter, "Video Input 01"));
Marshal.ThrowExceptionForHR(hResult);
stage++;
hResult = _captureGraph.Connect(
DsFindPin.ByDirection(_captureSourceFilter, PinDirection.Output, 1),
DsFindPin.ByName(_advancedSystemFormatFileWriter, "Audio Input 01"));
Marshal.ThrowExceptionForHR(hResult); 

Where and how I can put an information about speaker?

Roman R.
  • 68,205
  • 6
  • 94
  • 158

1 Answers1

0

The code snippet is incomplete. The variable that represents audio outpus is speakerCaptureFilter. You don't show its initialization. You can create/initialize audio rendering filter for specific device of your interest and played audio will be routed to the respective device.

Roman R.
  • 68,205
  • 6
  • 94
  • 158