[java, javasound] Da AudioInputStream a File
Codice:
import javax.sound.sampled.*; Codice:
import java.io.FileNotFoundException; In pratica sto cercando di salvare lo stream catturato da microfono e registrarlo su file. Questa istruzione Codice:
f = new FileOutputStream("/home/zabit/Documents/liketaxi/1.wav",true); Il file infatti cresce anche ad un mega, dopo qualche secondo, Ma se faccio play non sento nulla. sembra segua byte[1000]; Se provo ad aumentare questo valore a diciamo 1000000 lascinado scorrere per diversi secondi sento correttamente. Piu il valore è alto piu devo attendere prima di chiudere il canale. |
Nessuno?!
Perchè Se provo ad aumentare a 1000000 sento correttamente e invece con 1024 bytes non sento niente? Mi serve un valore basso perchè piu il valore è alto piu devo attendere prima di chiudere il canale perchè aspetta di leggere 1000000 bytes dalla linea del microfono, solo quando li ha disponibili scrive su File. |
non ricordo molto di java ma se setti samplerate 16000 2 canali stereo, setta almeno il buffer ampio 1 secondo: 16000x2=32000, prova
|
Qualcuno del forum sa come posso convertire un BufferedInputStream nel AudioInputStream?
mi serve convertire tutti i bytes in un file audio cosi da avere lo stream in audio wave. |
qui un esempio funzionante
|
Quote:
Ho fatto una modifica: ho trasferito tutto il flusso che catturo dal microfono al socket che si collega la server. Invio i bytes grezzi sul socket. Ricevuto i bytes dal client sul server devo convertirli in un AudioInputStream ma non vuole i bytes grezzi, vuole il file nel formato wav.Mi serve un modo per tradurre un flusso di bytes grezzi in un flusso wav. |
dalla mia esperienza i file wav hanno un header ed una parte dati: nel tuo caso, i primi 8 bit canale sinistro ed i secondi 8 bit canale destro.
Forse devi semplicemente creare l'header con le informazioni (samplerate, numero canali etc...) per il player. https://thiscouldbebetter.wordpress....-file-in-java/ |
Quote:
solo che io ho un flusso continuo senza fine che ricevo dal socket, vorrei che fosse un flusso continuo senza fine ma wav (quindi che abbia i 44 byte di intestazione. Non trovo una buona guida sul formato dell'header wav. Ho trovato questo https://onestepcode.com/read-wav-header/ chiede il ChunkSize che valore devo settare? Come faccio a creare un file con dimensione fissa se il mio flusso è continuo? Devo necessriamente prendere un istante. |
guarda anche qui https://living-sun.com/it/java/48999...ing-radio.html
|
Tutti gli orari sono GMT +1. Ora sono le: 19:58. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Hardware Upgrade S.r.l.