用c#捕捉电视卡上的声音

本文关键字:声音 电视卡 | 更新日期: 2023-09-27 18:07:18

我写了一个WPF应用程序,通过c#代码从电视卡捕获显示和声音。我可以从电视卡上得到显示,但是我不能从电视卡上得到任何声音。顺便说一句,我使用的是。net框架3.5和Visual Studio 2010。我的问题是如何从电视卡上获得声音?

最后,我用DirectX的DirectSound库尝试了下面的东西。然而,我得到了以下错误:

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

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);
} 

用c#捕捉电视卡上的声音

试试这个:

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

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