2011-12-20 13 views
7

Me gustaría entender cómo funciona el socket, especialmente necesito algunos ejemplos de código para el servidor para recibir la transmisión enviada por mediarecorder desde el dispositivo.android stream audio to server

Muchas gracias por cualquier ayuda.

Mi verdadero objetivo final es hablar en el dispositivo y escucharlo en la PC, solo una dirección.

En este momento soy capaz de enviar la corriente usando el siguiente código:

String hostname = "192.168.1.10"; 
int port = 8000; 
Socket socket = null; 
    try { 
     socket = new Socket(InetAddress.getByName(hostname), port); 
    } catch (UnknownHostException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket); 

recorder = new MediaRecorder(); 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
recorder.setOutputFile(pfd.getFileDescriptor()); 

    try { 
     recorder.prepare(); 
    } catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

recorder.start(); 
+0

¿Qué idioma está utilizando en la PC? – Axis

+0

Uso la plataforma .NET, vb.net o C# es lo mismo. – Giuseppe

Respuesta

4

parece que está bien, pero yo personalmente prefiero para amortiguar el sonido en el dispositivo y enviarlo al servidor de otro hilo en lugar de atar la grabadora al zócalo directamente como lo hizo. Debido a que el almacenamiento en búfer localmente le permitirá manejar los saltos de conexión con gracia.

Imagine que está grabando y el usuario pasa por un túnel y pierde la conexión a Internet; si está transmitiendo directamente, el socket se cerraría y el usuario se enojaría :-) Sin embargo, si está almacenando los datos en un buffer local , puede restablecer la conexión y continuar enviando el audio al servidor desde donde lo dejó, y ojalá el usuario ni siquiera tenga que saber que acaba de ocurrir un corte en la conexión, ya que simplemente funciona mágicamente.

Para que funcione, tendría que escribir la grabación en un búfer local y tener una verificación de hilos separada para nuevos datos en ese búfer y enviarlo al servidor lo antes posible.

+2

algún ejemplo de punto? – Giuseppe