2010-04-19 76 views
9

Estoy tratando de reproducir un sonido wav que se almacena en una matriz de bytes llamada bytes. Sé que debo convertir la matriz de bytes a un archivo wav y guardarla en mi disco local, luego llamé al archivo guardado pero no pude convertir la matriz de bytes a un archivo wav.Convertir matriz de bytes a archivo wav

por favor ayúdame a dar el código de muestra para convertir el byte de la biblioteca de wav a wav.

aquí es mi código:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    byte[] bytes = GetbyteArray(); 

    //missing code to convert the byte array to wav file 

    ..................... 

    System.Media.SoundPlayer myPlayer = new System.Media.SoundPlayer(myfile); 
    myPlayer.Stream = new MemoryStream(); 
    myPlayer.Play(); 
} 
+0

Por curiosidad: ¿Cómo se obtuvo el sonido en la matriz de bytes en primer lugar? – Svish

+0

Esto es aparte de un proyecto de diccionario que descarga el sonido de cada palabra en mi diccionario de http://www.merriam-webster.com/. y aquí muestra del archivo wav que se descargó y guardó en la matriz de bytes: http: //media.merriam-webster.com/soundc11/g/good0001. – Eyla

+0

Hola Eyla, ¿podrías proporcionar el código para leer el archivo de formato de onda en una matriz de bytes en Android? Estaría muy agradecido. – Joyson

Respuesta

9

Prueba esto:

System.IO.File.WriteAllBytes("yourfilepath.wav", bytes); 
+0

Gracias por su ayuda. su código funciona para mí y convierte la matriz de bytes a un archivo wav y la guardé en una ruta determinada, pero el problema es que cuando uso: System.Media.SoundPlayer myPlayer = new System.Media.SoundPlayer (myfile); para jugarlo me dará error que es: El encabezado de onda está dañado. pero cuando uso Windows Media Player para reproducir el archivo, funcionará. algún consejo para guardar este problema? – Eyla

+0

Acabo de probar la URL que proporcionó y funcionó: 'new System.Media.SoundPlayer (@" http://media.merriam-webster.com/soundc11/g/good0001 ") .Play();' - quizás el problema es el código de descarga? –

+3

El problema aquí no es datos corruptos. El OP solo tiene bytes de audio sin procesar. Tendrá que escribir el encabezado WAV en el archivo antes de la matriz de bytes y compensar los formatos de endian grandes/pequeños. Estoy buscando un código limpio para hacer esto también. –

7

Usted puede usar algo como File.WriteAllBytes(path, data) ... o

... Alternativamente, si usted no quiere para escribir el archivo, puede convertir el conjunto de bytes a una secuencia y luego reproducirlo ...

var bytes = File.ReadAllBytes(@"C:\WINDOWS\Media\ding.wav"); // as sample 

using (Stream s = new MemoryStream(bytes)) 
{ 
    // http://msdn.microsoft.com/en-us/library/ms143770%28v=VS.100%29.aspx 
    System.Media.SoundPlayer myPlayer = new System.Media.SoundPlayer(s); 
    myPlayer.Play(); 
} 

PK :-)

+0

Disculpas, dejé 'myPlayer.Stream = new MemoryStream()' en el código de la muestra que habría cancelado la secuencia del constructor ... –

+0

Gracias por su ayuda. tu código también funciona y yo también voté por ti. – Eyla

Cuestiones relacionadas