Transmisión de audio en tiempo real

Quiero tener una funcionalidad de streaming de audio en tiempo real en el dispositivo android que está captando el audio a través de la MIC del dispositivo y enviarlo al servidor. Sé enviar un archivo de audio después de la grabación pero en caso de tiempo real necesito ayuda. Puede ser que se puede hacer mediante el envío de matriz de bytes continuamente al servidor. Si es así, ¿cómo o si cualquier otra forma, Por favor comparta sus ideas. Gracias.

EDITAR-

Código del cliente de Android: –

public class Main extends Activity { private MediaRecorder recorder; private final String TAG = "AudioTest"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); String hostname = "192.168.50.25"; int port = 2004; Socket socket = null; try { socket = new Socket(InetAddress.getByName(hostname), port); } catch (UnknownHostException e) { Log.d(TAG, "Inside UnknownHostException@@@@@@@@@@@@@@@@@@@@@@"); e.printStackTrace(); } catch (IOException e) { Log.d(TAG, "Inside IOException%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"); 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 { Log.i(TAG, pfd.getFileDescriptor().toString()); } catch (Exception e) { Log.d(TAG, "Inside MyException################################"); } try { recorder.prepare(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } recorder.start(); } 

JAVA Server Code-

 public class Provider { ServerSocket providerSocket; Socket connection = null; ObjectOutputStream out; ObjectInputStream in; String message; Provider() { } void run() { try { // 1. creating a server socket providerSocket = new ServerSocket(2004, 10); // 2. Wait for connection System.out.println("Waiting for connection"); connection = providerSocket.accept(); System.out.println("Connection received from " + connection.getInetAddress().getHostName()); // 3. get Input and Output streams out = new ObjectOutputStream(connection.getOutputStream()); out.flush(); in = new ObjectInputStream(connection.getInputStream()); sendMessage("Connection successful"); // 4. The two parts communicate via the input and output streams do { try { message = (String) in.readObject(); System.out.println("client>" + message); if (message.equals("bye")) sendMessage("bye"); } catch (ClassNotFoundException classnot) { System.err.println("Data received in unknown format"); } } while (!message.equals("bye")); } catch (IOException ioException) { ioException.printStackTrace(); } finally { // 4: Closing connection try { in.close(); out.close(); providerSocket.close(); } catch (IOException ioException) { ioException.printStackTrace(); } } } void sendMessage(String msg) { try { out.writeObject(msg); out.flush(); System.out.println("server>" + msg); } catch (IOException ioException) { ioException.printStackTrace(); } } public static void main(String args[]) { Provider server = new Provider(); while (true) { server.run(); } } } 

Usted puede utilizar sockets como tal:

 String hostname = "1.2.3.4"; int port = 865; Socket socket = null; try { socket = new Socket(InetAddress.getByName(hostname), port); } catch (Exception e) { e.printStackTrace(); } ParcelFileDescriptor socketedFile = ParcelFileDescriptor.fromSocket(socket); 

A continuación, establezca el archivo socketed en el archivo de salida (socketedFile.getFileDescriptor ()) del grabador de audio. Esto lo enviará como bytes.

Alternativamente, para que sea más estable, escriba los datos del MediaRecorder en un búfer local y luego haga que un hilo separado verifique ese búfer y escríbalo al socket en su lugar, para permitir pequeñas desconexiones en la conexión de socket.

Vea esta pregunta para más información: streaming de audio de Android al servidor

Obviamente, entonces necesita tener una aplicación que se ejecuta en un servidor para recibir sus bytes y convertirlo en datos de audio.

  • La reproducción de una canción tras otra provoca un error en MP3Extractor
  • Android - Múltiple, transmisión simultánea de audio
  • Visualizando letras de MP3 song en Android
  • abrir y reproducir un flujo de transporte en Android (mpeg2-ts)
  • Cómo obtener los detalles actuales de la canción de reproducción de MediaPlayer
  • Android: función de setVolume de MediaPlayer
  • Android Problemas al reproducir archivos de audio
  • Implementación de DLNA / UPnP (Win7 Play To) en un dispositivo móvil
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.