Java: de l'Extraction d'octets du fichier audio

Quelle est la différence entre les deux implémentations dans l'extraction des octets de données à partir d'un fichier audio ?

Le fichier est un .wav fichier et je veux extraire uniquement les données, sans les en-têtes ou tout autre chose.

Mise en œuvre 1:

public byte[] extractAudioFromFile(String filePath) {
    try {
        //Get an input stream on the byte array
        //containing the data
        File file = new File(filePath);
        final AudioInputStream audioInputStream = AudioSystem
                .getAudioInputStream(file);

        byte[] buffer = new byte[4096];
        int counter;
        while ((counter = audioInputStream.read(buffer, 0, buffer.length)) != -1) {
            if (counter > 0) {
                byteOut.write(buffer, 0, counter);
            }
        }
        audioInputStream.close();
        byteOut.close();
    } catch (Exception e) {
        System.out.println(e);
        System.exit(0);
    }//end catch

    return ((ByteArrayOutputStream) byteOut).toByteArray();
}

De mise en œuvre de 2:

public byte[] readAudioFileData(String filePath) throws IOException,
        UnsupportedAudioFileException {
    final AudioInputStream audioInputStream = AudioSystem
            .getAudioInputStream(new File(filePath));
    AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, byteOut);
    audioInputStream.close();
    byteOut.close();

    return ((ByteArrayOutputStream) byteOut).toByteArray();
}

L'exécution de chaque retourne de différentes taille en octets.
Le premier retour byte[] avec une longueur de moins de second œuvre.

Que j'essaie d'extraire les octets de données à visualiser le Spectrogramme du fichier.

Aucune explication apprécié.

Merci,

Samer

  • Java n'est pas un acronyme, et ne doit pas être écrit en majuscules. De même pour les "données", pour cette question.
InformationsquelleAutor Samer Makary | 2011-08-03