代码之家  ›  专栏  ›  技术社区  ›  roufamatic RichardJohnn

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

  •  0
  • roufamatic RichardJohnn  · 技术社区  · 15 年前

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

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

    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 回复  |  直到 15 年前
        1
  •  1
  •   ctsears    14 年前

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

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

    var _audioCaptureSource = new CaptureSource {VideoCaptureDevice = null};
    
        2
  •  0
  •   AdamC    15 年前

    这将取决于网络摄像头驱动程序-Silverlight对此没有控制权。

        3
  •  0
  •   interfect    15 年前

    我猜这和你使用 CaptureSource . 微软的 web site claims 那就是:

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

    有没有办法不创建自己的捕获源就获得音频?