Das Beispiel dieses Artikels zeigt die Art und Weise, wie Java WAV -Dateien liest (Wellenform -Dateien) und das Wellenformdiagramm zeichnet. Teilen Sie es für alle für Ihre Referenz. Die Einzelheiten sind wie folgt:
Da mich viele Internetnutzer kürzlich nach dem Lesen und Schreiben von Wellenformdateien gefragt haben, da alle bequemer wurden und den Code besser verbesserten, habe ich diesen Teil (lesen und schreiben von Wellenformdateien) auf dem GitHub geöffnet.
Die Adresse lautet https://github.com/sintrb/waveaccess/.
Der folgende Inhalt ist im Grunde abgelaufen.
Da das Projekt die .wav -Datei (Wellenformdatei) lesen und das Wellenformdiagramm zeichnen muss, wurde es einfach in diesem Bereich verpackt.
Tatsächlich ist es hauptsächlich die Verpackung von WAV -Dateien.
// Dateiname: WaveFilereeader.java // Robintang // 2012-08-23 Java.io.*; = NULL; ; Lennnnnnnnnnnnnnnnnnnnnnnnnls = 2; Int lenbitsAprsample = 2; ; intbitpersample () {return itSpersample;} // Die Stichprobenrate pblic long getSampled () {return this.Samperat;} // Die Anzahl der Kanäle abrufen, 1 repräsentiert einen einzelnen Kanal 2, in das die Stereo -öffentliche Datenlänge darstellt, das, das, das, dass ist, wie viele public int getDatalen () {return this.len;} // Erhalten Sie die Daten // Daten sind ein zweidimensionales Array, [n] [M] den n -Sample -Wert öffentlich int [] [] getData () {Return this.data;} private void initreader (String Dateiname) {this.FileName = Dateiname; ); ); "Fmt") neue IllegalArgumentException ("fmt Miss" + Dateiname + "ist keine Wellendatei." = Readlong (); ) Neue IllegalArgumentException ("Data Miss" + Dateiname + "ist keine Wellendatei."); /Dis.numchannels); This.numchannels; ] = this.Readint ();}}} isccess = true;} catch (Ausnahme E) {E.printstacktrace ();} schließlich {try {if (if bis! = null) Bis.close (); ! Read (buf)! = 0; ) buf))] << 8);} catch (ioException e) {e.printstacktrace (); für (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) {byte [] buf = new byte [len]; ;} return buf;}}
Um die Wellenform zu zeichnen, wurde eine Wellenform -Zeichnungsfeld aus dem JPanel -Tutorial hergestellt:
// Dateiname: Drawpanel.java // Robintang // 2012-08-23 Java.Color; Data = null; ); ; // frühere Koordinaten int x = 0, y = 0; i; // Folgendes ist ein Dreipunkt-Take-Out-Take // Das Intervall ist nach der Stichprobenrate y = hh- (int) festgelegt (Daten [i*3]*K+HH/2) ; Systemm .out.print (y); }}}}
Danach können Sie einfach anrufen und zeichnen, einfach:
// WaveFilerEaddemo.java // Robintang // 2012-08-23 importieren javax.swing.jframe; FileName = "file.wav"; (Daten); ;
Der Quellcode des Projekts finden Sie auf meiner Baidu -Netzwerkplatte und direkt an die Open Source Java
Renderings einsetzen:
Es ist zu hoffen, dass dieser Artikel für Java -Programmdesign aller hilfreich ist.