Streaming voice over tcp

匿名 (未验证) 提交于 2019-12-03 08:52:47

问题:

I've coded an app that streams audio over TCP from client to server but it does not work, i.e. no audible output. Could you check my code tell me whats wrong with it?

Client:

public void startStreaming() {      Thread streamThread = new Thread(new Runnable() {         @Override        public void run() {             try {                  int minBufSize =AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat);                  Log.d("VD ", "Bufer intioalised "+minBufSize);                  short[] buffer=new short[minBufSize];                   Log.d("VS","Buffer created of size .c" + minBufSize);               //  DatagramPacket packet;                  final InetAddress destination = InetAddress.getByName(target.getText().toString());                 port=Integer.parseInt(target_port.getText().toString());                  Socket socket=new Socket(destination,port);                  DataOutputStream dos=new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));                 Log.d("VS", "Address retrieved.c");                   if (minBufSize != AudioRecord.ERROR_BAD_VALUE) {                     recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,sampleRate,channelConfig,audioFormat,minBufSize);                 Log.d("VS", "Recorder initialized.c");}                   if (recorder.getState() == AudioRecord.STATE_INITIALIZED){                     Log.d("VS", "Recorder working....c");                     recorder.startRecording();}                  BufferedWriter input;                 while(status == true) {                       //reading data from MIC into buffer                   int  bufferReadResult = recorder.read(buffer, 0, buffer.length);                         dos.write(buffer,0,bufferReadResult);                    dos.flush();                    }              } catch(UnknownHostException e) {                 e.printStackTrace();             } catch (IOException e) {                 Log.e("IOException message:",e.getMessage().toString());               }            }

Server:

public void startStreaming() { Thread streamThread = new Thread(new Runnable() {

    @Override     public void run() {            try {              int  minBufSize =1024;//recorder.getMinBufferSize(sampleRate,channelConfig,audioFormat);               ServerSocket serversocket = new ServerSocket(50005);                 // DatagramSocket socket = new DatagramSocket(50005);                 byte[] buffer = new byte[1024];                     if (minBufSize != AudioRecord.ERROR_BAD_VALUE) {                          speaker = new AudioTrack(AudioManager.STREAM_MUSIC,sampleRate,channelConfig,audioFormat,minBufSize,AudioTrack.MODE_STREAM);                         speaker.play();                       Log.d("VR", "spekaer playing...");                   }             //  }                       Log.d("VR", ""+status);                   BufferedReader input;                   InputStream is;                   ObjectInputStream ois;                   ByteArrayInputStream baiss;                   socket = serversocket.accept();                     DataInputStream dis=new DataInputStream(new BufferedInputStream(socket.getInputStream()));                           while(status == true) {                                //DatagramPacket packet = new DatagramPacket(buffer,buffer.length);                              InputStream in = socket.getInputStream();                              Log.d("content :", socket.getOutputStream().toString());                               int i=0;                             while (dis.available() > 0 && i < buffer.length) {                                 buffer[i]=(byte) dis.readShort();                               i++;                             }         speaker.write(buffer,0,buffer.length);

Please give me your best help.

回答1:

The answers are in the comments. Both for server and client read()/write() had to be implemented better.



转载请标明出处:Streaming voice over tcp
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!