Silverlight 4 中捕获音频/视频:关于 CaptureSource 的一个令人惊讶的事实
如何避免在仅捕获音频(或仅捕获视频)时出现性能问题
我在 SL4 中创建了一个简单的录音应用程序,但应用程序的性能非常差。 我花了一段时间才找到问题的原因 - 每次应用程序开始录音时,我的摄像头都会被激活。 尽管我的应用程序没有使用视频输入,但摄像头处于活动状态,这降低了应用程序的性能(更不用说由于我的 USB 摄像头非常、非常慢,打开/关闭摄像头需要几秒钟)。 这不是我所期望的,因为我只初始化了“
CaptureSource
”类的“AudioCaptureDevice
”属性。 我的代码如下所示var audioDevice = CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice();
_captureSource = new CaptureSource() { AudioCaptureDevice = audioDevice };
我使用 Red Gate 的 .NET Reflector 对 CaptureSource
构造函数进行反编译,并发现了如下内容public CaptureSource() {
this.VideoCaptureDevice = CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice();
this.AudioCaptureDevice = CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice();
}
注意! 你会期望这样吗? 如果你只想捕获音频,你必须明确说明你不想捕获视频(反之亦然)。 我将我的代码更改为以下内容,并且它工作正常// This CaptureSource will record audio only...
_captureSource = new CaptureSource() { VideoCaptureDevice = null }
在我看来,这是 Silverlight 库设计者犯的一个巨大错误…… 好吧,我们都只是人类。 我希望这篇文章能帮助你提高 SL 应用程序的性能。