用C#捕捉电视卡的声音

时间:2011-09-01 12:00:11

标签: c# wpf directx

我编写了一个WPF应用程序,它通过C#代码从电视卡中捕获显示和声音。我可以从电视卡上看到显示器,但我无法从电视卡中获得任何声音。顺便说一句,我在Visual Studio 2010中使用.NET framework 3.5。我的问题是如何从电视卡中获取声音?

最后,我通过使用DirectX的DirectSound库尝试了类似下面的任何内容。但是,我遇到了以下错误。

  1. 最佳重载方法匹配 'Microsoft.DirectX.DirectSound.Device.SetCooperativeLevel(System.Windows.Forms.Control, Microsoft.DirectX.DirectSound.CooperativeLevel)'有一些无效 参数。
  2. 参数1:无法从'Wpfvideo.MainWindow'转换为 'System.Windows.Forms.Control'
  3. 代码:

    private DS.Device soundDevice;
    private SecondaryBuffer buffer;
    private ArrayList soundlist = new ArrayList();
    
    private void InitializeSound()
    {
         soundDevice = new DS.Device();
         soundDevice.SetCooperativeLevel(this, CooperativeLevel.Priority);
    
        BufferDescription description = new BufferDescription();
        description.ControlEffects = false;
        buffer = new SecondaryBuffer(CaptureDeviceName, description, soundDevice);
        buffer.Play(0, BufferPlayFlags.Default);
        SecondaryBuffer newshotsound = buffer.Clone(soundDevice);
        newshotsound.Play(0, BufferPlayFlags.Default);
    } 
    

2 个答案:

答案 0 :(得分:4)

试试这个:

var windowInteropHelper = new WindowInteropHelper(this);
soundDevice = new DS.Device();
soundDevice.SetCooperativeLevel(windowInteropHelper.Handle, CooperativeLevel.Priority);

答案 1 :(得分:0)

soundDevice.SetCooperativeLevel(...)的调用期待winforms控件作为它的第一个参数,并且你试图给它一个WPF窗口(它不是winforms控件)。