c# - 使用 Silverlight 捕获音频

标签 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)

OnCaptureStopped 从未被调用; CaptureSource 应该连续调用这个函数。 CaptureSource 也不调用 CaptureFailed 事件。

什么会产生这种奇怪的行为,我可以采取什么措施来解决它?

我已将产生问题的完整源代码上传至Pastebin

最佳答案

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

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

关于c# - 使用 Silverlight 捕获音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5489575/

相关文章:

c# - 如何从可执行文件中确定应用程序子系统

c# - 使用 REST API 在 Azure 中创建表

c# - 如何在 Silverlight 中设置 FrameworkElement 的 Parent 属性?

wpf - UIElement.ClipToBounds 在 WPF 中,但不在 Silverlight 中。如何在 Silverlight 中模拟?

Silverlight 5 - 如何在 XAML 中使用普通 CLR 对象作为 CommandParameter?

c# - 带均衡器的声音

javascript - 使用 Javascript 在 iPhone 网络应用程序中播放声音?

c# - 按值获取字典键

audio - Spotify 使用什么音频格式以及他们如何将文件传输到移动设备?

c# - 创建专门的集合时更喜欢继承还是包含?