Partage
  • Partager sur Facebook
  • Partager sur Twitter

Sauvegarder un ByteArrayOutputStream

Sujet résolu
    18 août 2013 à 21:19:24

    Salut tout le monde je cherche à sauvegarder un ByteArrayOutputStream dans un fichier mais c'est un flux audio de type wav.

    Mon programme enregistre l'audio dans ce ByteArrayOutputStream et je dois le sauvegarder j'ai déjà essayé:

    private ByteArrayOutputStream out;

    out.close();

    OutputStream outputStream = new FileOutputStream ("tmp.wav"); 

    out.writeTo(outputStream);

    outputStream.close();

    Le fichier se crée mais est illisible comment faire?

    • Partager sur Facebook
    • Partager sur Twitter
      18 août 2013 à 23:37:08

      1) Tu as essayé en écrivant via le FileOutputStream directement ?

      byte[] bytes = out.toByteArray();
      
      outputStream.write(bytes);
      outputStream.close();
      

      2) Tu es sûr que les données corrompus ne le sont pas lors de la lecture wav -> byte[] plutôt que lors de l'écriture byte[] -> wav ?

      PS: Utilise les balises codes </> pour que ce soit plus lisible ;)

      -
      Edité par Flawyte 18 août 2013 à 23:43:32

      • Partager sur Facebook
      • Partager sur Twitter
      ⚙️ Une solution simple règle le problème ; une solution compliquée en crée un nouveau.
        19 août 2013 à 0:42:55

        Salut j'ai essayé comme ça:

        byte[] bytes = out.toByteArray();
        		OutputStream outputStream;
        		try {
        			outputStream = new FileOutputStream ("tmp.wav");
        			outputStream.write(bytes);
        			outputStream.close();
        		} catch (IOException e) {
        			// TODO Auto-generated catch block
        			e.printStackTrace();
        		} 

        Cette fois on entend un grésillement mais rien de plus.

        Je suis sûr que les données ne sont pas corrompues car j'arrive à rejouer le son

        PS: je sais pour les balises un problème avec un copié/collé ^^

        Edit: j'ai trouvé par moi même je donne le code si quelqu'un à un jour le même problème

        public void saveToFile(){
        		byte audio[] = out.toByteArray();
        		InputStream input = new ByteArrayInputStream(audio);
        		final AudioFormat format = getFormat();
        		final AudioInputStream ais = new AudioInputStream(input, format, audio.length / format.getFrameSize());
        		try {
        			AudioSystem.write(ais, AudioFileFormat.Type.WAVE, new File("temp.wav"));
        		} catch (IOException e) {
        			// TODO Auto-generated catch block
        			e.printStackTrace();
        		}
        	}



        -
        Edité par Imm0rtal 19 août 2013 à 0:56:10

        • Partager sur Facebook
        • Partager sur Twitter

        Sauvegarder un ByteArrayOutputStream

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown