我编写了一个WPF应用程序,它通过C#代码从电视卡中捕获显示和声音。我可以从电视卡上看到显示器,但我无法从电视卡中获得任何声音。顺便说一句,我在Visual Studio 2010中使用.NET framework 3.5。我的问题是如何从电视卡中获取声音?
最后,我通过使用DirectX的DirectSound库尝试了类似下面的任何内容。但是,我遇到了以下错误。
'Microsoft.DirectX.DirectSound.Device.SetCooperativeLevel(System.Windows.Forms.Control,
Microsoft.DirectX.DirectSound.CooperativeLevel)'
有一些无效
参数。'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);
}
答案 0 :(得分:4)
试试这个:
var windowInteropHelper = new WindowInteropHelper(this);
soundDevice = new DS.Device();
soundDevice.SetCooperativeLevel(windowInteropHelper.Handle, CooperativeLevel.Priority);
答案 1 :(得分:0)
对soundDevice.SetCooperativeLevel(...)
的调用期待winforms控件作为它的第一个参数,并且你试图给它一个WPF窗口(它不是winforms控件)。