2011-09-01 28 views
6

He escrito una aplicación WPF que está capturando la pantalla y el sonido de la tarjeta de TV desde y hasta el código C#. Puedo obtener la pantalla de la tarjeta de TV, pero no puedo obtener ningún sonido de la tarjeta de TV. Por cierto, estoy usando .NET Framework 3.5 con Visual Studio 2010. Mi pregunta es ¿cómo puedo obtener el sonido de la tarjeta de TV?Captura de sonido desde la tarjeta de TV con C#

Por último, intenté algo similar a continuación utilizando la biblioteca DirectSound de DirectX. Sin embargo, tengo los siguientes errores.

  1. El partido mejor método sobrecargado para 'Microsoft.DirectX.DirectSound.Device.SetCooperativeLevel(System.Windows.Forms.Control, Microsoft.DirectX.DirectSound.CooperativeLevel)' tiene algunos argumentos no válidos .
  2. Argumento 1: no se puede convertir de 'Wpfvideo.MainWindow' a 'System.Windows.Forms.Control'

Código:

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

que está recibiendo el error porque el método SetCooperativeLevel está esperando un control de Windows Forms y está de paso que una ventana de WPF. –

+0

gracias por su respuesta. ¿Qué debo hacer? – Selo

+0

No hay una "solución" para que no pueda convertir una ventana de wpf en un control de formas de ganar. –

Respuesta

4

Prueba esto:

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

La llamada a soundDevice.SetCooperativeLevel(...) está esperando un control de Windows Forms, ya que es primer parámetro, y que está tratando de darle una ventana de WPF (que no es un control de formas de ganar).

Cuestiones relacionadas