L'exemple de cet article indique la façon dont Java lit les fichiers WAV (fichiers de forme d'onde) et dessine le diagramme de forme d'onde. Partagez-le pour tout le monde pour votre référence. Les détails sont les suivants:
Parce que de nombreux internautes m'ont récemment posé des questions sur la lecture et l'écriture de fichiers de forme d'onde, car cela a rendu tout le monde plus pratique et a amélioré le code, j'ai ouvert cette partie (lire et écrire des fichiers de forme d'onde) sur le github.
L'adresse est https://github.com/sintrb/waveaccess/.
Le contenu suivant est essentiellement expiré.
Étant donné que le projet doit lire le fichier .wav (fichier de forme d'onde) et dessiner le diagramme de forme d'onde, il était simplement emballé dans ce domaine.
En fait, il s'agit principalement de l'emballage des fichiers WAV.
// nom de fichier: waveFilereReader.java // Robintang // 2012-08-23 Import Java.io. *; = null; ; Landennnnnnnls = 2; Int lenbitsa ; Public WaveFileReader (String FileName) {this.InitReader (nom de fichier);} // Déterminez s'il faut créer un lecteur WAV intbitPersample () {return itsPersample;} // Obtenez le taux d'échantillonnage PBLIC Long Getamplerate () {return this.samplerate;} // Obtenez le nombre de canaux, 1 représente un seul canal 2 représente le public stéréo, la longueur des données, que est, combien de public int getDatAnen () {return this.len;} // obtenez les données // des données sont un tableau à deux dimensions, [n] [m] représente la valeur n-d'échantillon public int [] [] getData () {Return this.data;} private void initreader (string filename) {this.filename = filename; )); )); "Fmt")) New IllégalArgumentException ("FMT Miss" + FileName + "n'est pas un fichier de vagues."); = ReadLong (); ) Jetez un nouveau IllégalArgumentException ("Data Miss," + FileName + "n'est pas un fichier d'onde."); /this.numChannels); This.numChannels; ] = this.readInt ();}}} isccess = true;} catch (exception e) {e.printStackTrace ();} enfin {try {if (if bis! = null) bis.close (); ! lire (buf)! = 0; essayez {if (bis.read (buf)! = 2) New ioException ("pas plus de données !!!"); ) buf))]) << 8);} Catch (ioException e) {e.printStackTrace ();;} private long readLong () {long res = 0; pour (int i = 0; i <4; ++ i) {l [i] = bis.read (); "); [2] << 16) | (l [3] << 24);} catch (ioException e) {e.printStackTrace ();} return res;} private byte [] readBytes (int len) {octet [] buf = nouveau byte [len ;
Afin de dessiner la forme d'onde, un panneau de dessin de forme d'onde du tutoriel JPanel a été réalisé:
// Nom de fichier: DrawPanel.java // Robintang // 2012-08-23 Import Java.color; data = null; public drawpanel (int [] data) {this.data = data;} @Override PaintComponent (graphiques g) {int ww = th (); int hh = getheight (); )); ; I; ; }}}}
Après cela, vous pouvez appeler et dessiner, simple:
// waveFileReReadDemo.java // Robintang // 2012-08-23 Importer javax.swing.jframe; Filename = "file.wav"; jframe frame = new JFrame (); (Data); ; frame
Le code source du projet peut être trouvé sur mon disque de réseau Baidu et directement à l'open source Java
Mettez un rendu:
On espère que cet article est utile à la conception du programme Java de tous.