Advertisement
Guest User

Untitled

a guest
Feb 21st, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.88 KB | None | 0 0
  1. package ServerSuono;
  2.  
  3. import java.io.ByteArrayInputStream;
  4. import java.net.DatagramPacket;
  5. import java.net.DatagramSocket;
  6.  
  7. import javax.sound.sampled.AudioFormat;
  8. import javax.sound.sampled.AudioInputStream;
  9. import javax.sound.sampled.AudioSystem;
  10. import javax.sound.sampled.DataLine;
  11. import javax.sound.sampled.FloatControl;
  12. import javax.sound.sampled.SourceDataLine;
  13.  
  14. import java.io.ByteArrayInputStream;
  15. import java.net.DatagramPacket;
  16. import java.net.DatagramSocket;
  17.  
  18. import javax.sound.sampled.AudioFormat;
  19. import javax.sound.sampled.AudioInputStream;
  20. import javax.sound.sampled.AudioSystem;
  21. import javax.sound.sampled.DataLine;
  22. import javax.sound.sampled.FloatControl;
  23. import javax.sound.sampled.SourceDataLine;
  24.  
  25. class Server {
  26.  
  27. AudioInputStream audioInputStream;
  28. static AudioInputStream ais;
  29. static AudioFormat format;
  30. static boolean status = true;
  31. static int port = 50005;
  32. static int sampleRate = 44100;
  33.  
  34. public static void main(String args[]) throws Exception {
  35.  
  36.  
  37. DatagramSocket serverSocket = new DatagramSocket(port);
  38.  
  39. byte[] receiveData = new byte[640];
  40. // ( 1280 for 16 000Hz and 3584 for 44 100Hz (use AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat) to get the correct size)
  41.  
  42. format = new AudioFormat(sampleRate, 16, 1, true, false);
  43. while (status) {
  44. DatagramPacket receivePacket = new DatagramPacket(receiveData,
  45. receiveData.length);
  46.  
  47. serverSocket.receive(receivePacket);
  48.  
  49. System.out.println("Pacchetto ricevuto");
  50.  
  51. ByteArrayInputStream baiss = new ByteArrayInputStream(
  52. receivePacket.getData());
  53.  
  54. ais = new AudioInputStream(baiss, format, receivePacket.getLength());
  55.  
  56. // A thread solve the problem of chunky audio
  57. new Thread(new Runnable() {
  58. @Override
  59. public void run() {
  60. toSpeaker(receivePacket.getData());
  61. }
  62. }).start();
  63. }
  64. }
  65.  
  66. public static void toSpeaker(byte soundbytes[]) {
  67. try {
  68.  
  69. DataLine.Info dataLineInfo = new DataLine.Info(SourceDataLine.class, format);
  70. SourceDataLine sourceDataLine = (SourceDataLine) AudioSystem.getLine(dataLineInfo);
  71.  
  72. sourceDataLine.open(format);
  73.  
  74. FloatControl volumeControl = (FloatControl) sourceDataLine.getControl(FloatControl.Type.MASTER_GAIN);
  75. volumeControl.setValue(100.0f);
  76.  
  77. sourceDataLine.start();
  78. sourceDataLine.open(format);
  79.  
  80. sourceDataLine.start();
  81.  
  82. System.out.println("format? :" + sourceDataLine.getFormat());
  83.  
  84. sourceDataLine.write(soundbytes, 0, soundbytes.length);
  85. System.out.println(soundbytes.toString());
  86. sourceDataLine.drain();
  87. sourceDataLine.close();
  88. } catch (Exception e) {
  89. System.out.println("Not working in speakers...");
  90. e.printStackTrace();
  91. }
  92. }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement