使用Silverlight捕获音频

时间:2011-03-30 17:03:15

标签: c# silverlight audio capture audio-recording

我有一些AudioSink分配给某些CaptureSource

CaptureSource captureSource = new CaptureSource() {
    VideoCaptureDevice = null,
    AudioCaptureDevice = CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice()
};
SampleAudioSink audioSink = new SampleAudioSink() {
    CaptureSource = captureSource
};
captureSource.Start();

AudioSink实现只是记录被调用函数以查看它是否正常工作。但是,OnSamples方法在37个样本后停止调用。

  • OnCaptureStarted
  • OnFormatChange
  • OnSamples(1)
  • OnSamples(2)
  • OnSamples(3)
  • [...]
  • OnSamples(35)
  • OnSamples(36)
  • OnSamples(37)
永远不会打电话给{p> OnCaptureStopped; CaptureSource应该不断调用此函数。 CaptureSource也不会调用CaptureFailed事件。

什么可能产生这种奇怪的行为,我可以采取什么措施来修复它?

我已将完整的源代码上传到Pastebin

1 个答案:

答案 0 :(得分:2)

问题是垃圾收集器在18秒后删除了AudioSink ...
AudioSink添加为类成员解决了这个问题。

[...]
TextBox log;
SampleAudioSink audioSink; // to prevent garbage collector from collection
private void Application_Startup (object sender, StartupEventArgs e) {
    [...]
}
[...]