android流音频到服务器

前端之家收集整理的这篇文章主要介绍了android流音频到服务器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想了解套接字是如何工作的,特别是我需要服务器端的一些代码示例来接收来自设备的mediarecorder发送的流.

非常感谢您的帮助.

我真正的最终目的是在设备上讲话并在PC上听一个方向.

我现在可以使用以下代码发送流:

  1. String hostname = "192.168.1.10";
  2. int port = 8000;
  3. Socket socket = null;
  4. try {
  5. socket = new Socket(InetAddress.getByName(hostname),port);
  6. } catch (UnknownHostException e) {
  7. e.printStackTrace();
  8. } catch (IOException e) {
  9. e.printStackTrace();
  10. }
  11.  
  12. ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);
  13.  
  14. recorder = new MediaRecorder();
  15. recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
  16. recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
  17. recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
  18. recorder.setOutputFile(pfd.getFileDescriptor());
  19.  
  20. try {
  21. recorder.prepare();
  22. } catch (IllegalStateException e) {
  23. e.printStackTrace();
  24. } catch (IOException e) {
  25. e.printStackTrace();
  26. }
  27.  
  28. recorder.start();

解决方法

似乎没问题,但我个人更喜欢缓冲设备上的音频并将其从另一个线程发送到服务器,而不是像你那样直接将记录器连接到套接字.因为本地缓冲将允许您优雅地处理连接中断.

想象一下你正在录制,用户通过隧道并失去互联网连接 – 如果你直接流媒体,套接字将关闭,用户会恼火:-)但是,如果你在本地缓冲数据,你可以重新建立连接并继续从你离开的地方发送音频到服务器,希望用户甚至不必知道刚刚发生连接中断,因为它只是神奇地工作.

为了使其工作,您必须将记录写入本地缓冲区并对该缓冲区上的新数据进行单独的线程检查,并尽快发送到服务器.

猜你在找的Android相关文章