我正在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();
}
}
答案 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的情况下获取音频?