Windows 7 (64 Bits) .NET y los sonidos

Descripción general

Existe un problema a la hora de reproducir archivos de sonido cuando se usa .NET sobre Windows 7(64 bits). No sé si es un problema mío o es un problema real de Windows 7 (64 Bits)

[TOC] Tabla de Contenidos


↑↑↑

Windows 7 (64 Bits) .NET y los sonidos


↑↑↑

Antecedente

Hasta ahora, trabajando con Visual Estudio y con Windows 7(32 bits), no había tenido ningún problema para reproducir archivos de sonido usando la instrucción

My.Computer.Audio.Play( _
         rutaAudio, _
         Microsoft.VisualBasic.AudioPlayMode.WaitToComplete)

Pero con Windows 7 (64 bits), aparece un error que dice:

Entonces he intentado usar el código siguiente:

Dim player As New Media.SoundPlayer(rutaAlarma)
 ' Cargar el fichero de sonido
 player.SoundLocation = rutaAlarma
 player.Load()
 ' tocarlo   
 player.Play()

Y he obtenido el mismo error

Después de mucho mirar y de consultar y de leer, he llegado a la conclusión que hay que utilizar las viejas técnicas por lo que he escrito una clase que envuelve el control OCR Media Player para usar el objeto Windows media player

El problema es que para usarla, además de incluir la clase en el proyecto, hay que importar el control { Windows media player} al proyecto. Por lo demás su uso es trasparente


↑↑↑

Ejemplo de código


↑↑↑

Ejemplo Uno

'-------------------------------------
' Ejemplo del uso de esta clase
'-------------------------------------

'--------------------------------------------
' Tocar un Sonido Modelo UNO
'-------------------------------------------
' el mensaje de error que existe
Dim outputMensajeError As String = String.Empty
' el sonido suena toma valor true
' el sonido no suena ' Toma valor false
Dim haTocadoElSonido As Boolean = True

haTocadoElSonido = Util.Multimedia.OcrMediaPlayer.Play("c:/NombreficheroSonodo.mp3", 1, outputMensajeError)
If haTocadoElSonido = False Then
    ' Ha ahbido algun problema y no suena
    ' Opciones posibles
    ' Lanzar un mensaje de error advirtiendolo
    Windows.Forms.MessageBox.Show(outputMensajeError, "PROBLEMAS EN LA REPRODUCCION DE SONIDO")
    ' escibir el problema en el log
    My.Application.Log.WriteEntry(outputMensajeError, Diagnostics.TraceEventType.Information)
End If


↑↑↑

Ejemplo dos

'--------------------------------------------
' Tocar un Sonido Modelo DOS
'-------------------------------------------
' el objeto que contendrá el resultado de la operacion Play
Dim objResultadoPlay As Util.Multimedia.OcrMediaPlayerResultadoPlay = Nothing

objResultadoPlay = Util.Multimedia.OcrMediaPlayer.Play("c:/NombreficheroSonodo.mp3", 1)
If objResultadoPlay.HaTocadoElSonido = False Then
    ' Ha ahbido algun problema y no suena
    ' Opciones posibles
    ' Lanzar un mensaje de error advirtiendolo
    Windows.Forms.MessageBox.Show(objResultadoPlay.MensajeDeError, "PROBLEMAS EN LA REPRODUCCION DE SONIDO")
    ' escibir el problema en el log
    My.Application.Log.WriteEntry(objResultadoPlay.MensajeDeError, Diagnostics.TraceEventType.Information)
End If


↑↑↑

Ejemplo tres

'--------------------------------------------
' Tocar un Sonido Modelo TRES
'-------------------------------------------
Private ObjMediaPlayer As New Util.Multimedia.OcrMediaPlayer("c:/NombreficheroSonodo.mp3", 1)
Public Sub Tocar()
    ObjMediaPlayer.Play()
End Sub
Public Sub Parar()
    ObjMediaPlayer.Stop()
End Sub


↑↑↑

Código listo para usar

En el fichero adjunto encontraras una clase, perfectamente documentada,

Código MD5 para los paranoicos


↑↑↑

A.2.Enlaces

[Para saber mas]
[Grupo de documentos]
[Documento Index]
[Documento Start]
[Imprimir el Documento]