65.9K
CodeProject 正在变化。 阅读更多。
Home

Silverlight 4 中捕获音频/视频:关于 CaptureSource 的一个令人惊讶的事实

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.86/5 (7投票s)

2010年6月16日

CPOL
viewsIcon

24428

如何避免在仅捕获音频(或仅捕获视频)时出现性能问题

我在 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 应用程序的性能。
© . All rights reserved.