E quindi in che formato è lo stream che arriva dal socket? Ovviamente, DEVE essere uno dei formati supportati e "registrati" nella Java Sound API. Se non fosse così, già questo sarebbe un errore/problema.
Lo stesso problema c'è l'ho con la cattura dei bytes da microfono,i byte sono sempre in un flusso continuo.
Il problema ora è che mi serve dare la length dello stream per costruire il flusso AudioInputStream, inoltre cè un solo metodo per costruire un file wave
private AudioFormat getAudioFormat() {
float sampleRate = 16000;
int sampleSizeInBits = 8;
int channels = 2;
boolean signed = true;
boolean bigEndian = true;
AudioFormat format = new AudioFormat(sampleRate,
sampleSizeInBits,
channels,
signed,
bigEndian);
return format;
}
AudioFileFormat.Type afType = AudioFileFormat.Type.WAVE;
AudioFormat adfmt = getAudioFormat();
long cntTemp = inf.length();
AudioInputStream ais = new AudioInputStream(bis, adfmt, cntTemp);
try{
int W = AudioSystem.write(ais, afType, outf);
}catch(Exception e){
e.printStackTrace();
}
La
AudioSystem.write(ais, afType, outf);
scrive su FILE E NON SU FILEINPUTSTREAM
POSSIBILE SOLUZIONE
posso provare a generare dei "piccoli" file sul disco locale tutti in formato wav, spedirli sul socket e ricevuti sul server li devo eseguire uno di seguito all'altro senza pause: scarico il primo file, scarico il secondo file, unisco il primo con il secondo, faccio play, se si aggiunge un nuovo file creo 1-2-3.wav e faccio play skipando 1-2, sperando che sia veloce (non ci devono essere pause)
NON MI SEMBRA UNA BELLA O BUONA SOLUZIONE. Altrimenti?
Ci si deve riuscire per forza perchè è un qualcosa di analogo a zoom: catturo da microfono e l'altro utente sente.
Help (è un progetto lavorativo freelance).