在Silverlight 4中访问麦克风时,防止网络摄像头灯亮起

时间:2010-07-30 22:50:23

标签: silverlight-4.0 webcam microphone

我正在Silverlight 4中编写一个小型录音机组件。它工作正常,但我注意到当我录制音频时,我的网络摄像头上的指示灯亮起表示相机处于活动状态。

虽然知道我没有对网络摄像头做任何阴险的事情,但我的用户却完全有权利怀疑。是否有可能告诉Silverlight我只对麦克风访问感兴趣而不是激活网络摄像头?

FWIW这是我如何访问麦克风:

private CaptureSource _source = new CaptureSource();
private MemoryAudioSink _sink;  // Inherits from AudioSink. Doesn't do much more 
                                // than store PCM audio stream in memory

private void Record_Click(object sender, RoutedEventArgs e)
{
    if (( CaptureDeviceConfiguration.AllowedDeviceAccess || 
          CaptureDeviceConfiguration.RequestDeviceAccess() ) && 
        _source.State == CaptureState.Stopped)
    {
        _sink = new MemoryAudioSink();
        _sink.CaptureSource = _source;
        _source.Start();
    }
}

3 个答案:

答案 0 :(得分:1)

CaptureSource会频繁获取默认视频输入设备,即使您没有告诉它。虽然您没有使用相机,但Silverlight确实正在访问它。希望MS能够在以后的Silverlight版本中修复这种奇怪的行为。

与此同时,只需将VideoCaptureDevice显式设置为null:

var _audioCaptureSource = new CaptureSource {VideoCaptureDevice = null};

答案 1 :(得分:0)

这取决于网络摄像头驱动程序 - Silverlight无法控制它。

答案 2 :(得分:0)

我猜它与你使用CaptureSource有关。微软的web site claims

  

仅使用Silverlight 4 API   视频场景中的CaptureSource   音频可能不相关。

有没有办法在不创建自己的CaptureSource的情况下获取音频?