Contoh artikel ini menceritakan cara Java membaca file WAV (file bentuk gelombang) dan menggambar diagram bentuk gelombang. Bagikan untuk semua orang untuk referensi Anda. Spesifiknya adalah sebagai berikut:
Karena banyak netizen baru -baru ini bertanya kepada saya tentang membaca dan menulis file bentuk gelombang, karena itu membuat semua orang lebih nyaman dan membuat kode lebih baik meningkat, saya membuka bagian ini (membaca dan menulis file bentuk gelombang) di github.
Alamatnya adalah https://github.com/sintrb/waveaccess/.
Konten berikut pada dasarnya kedaluwarsa.
Karena proyek perlu membaca file .wav (file bentuk gelombang) dan menggambar diagram bentuk gelombang, itu hanya dikemas di area ini.
Bahkan, ini terutama kemasan file WAV.
// nama file: WaveFilerereader.java // Robintang // 2012-08-23 Impor java.io.*; = NULL; ; Lennnnnnnnnnnnnnnnnnnnnnnnnnls = 2; Int lenbitsaprsample = 2; ; Intbitpersample () {return itsperSample;} // Dapatkan laju pengambilan sampel pblic long getsamplerate () {return this.samplerate;} // Dapatkan jumlah saluran, 1 mewakili satu saluran 2 mewakili publik stereo ke dalam, panjang data, itu adalah, berapa banyak int getDataLen () {return this.len;} // dapatkan data // data adalah array dua -dimensi, [n] [m] mewakili nilai n -sampel int int [] [] getData ) {Return this.data;} private void initreader (string filename) {this.fileName = fileName; ); if (! chunkdescriptor.endswith ("riff") melempar IllegalargumException baru ("Riff Miss," + FileName + "bukanlah file W ave.") ); if (! Waveflag.endswith ("Wave") Lemparkan ilegalargumence baru ("Wave Miss," + FileName + "bukan gelombang. "FMT") Lemparkan IllegalArgumentException baru ("FMT Miss," + nama file + "bukanlah file gelombang."); = Readlong (); ) Lempar IllegalArgumentException yang baru ("Data Miss," + FileName + "bukanlah file gelombang."); /this.numChannels); This.numChannels; ++ n) {if (this.bitssample == 8) {this.data [n] [i] = bis.read (); = this.readInt ();}}} isccess = true;} catch (exception e) {e.printstacktrace ();} akhirnya {coba {if (if bis! = null) bis.close (); = Null) fis.close ();} catch (Exception e1) {e1.printstacktrace ();}}} string privat (int len) {byte [] buf = byte baru [len]; Baca (BUF)! = 0; ) buf))) << 8);} catch (ioException e) {e.printstacktrace ();} Private Long Readlong () {long res = 0 untuk (int i = 0; i <4; ++ i) {l [i] = bis.read (); "); [2] << 16) | (l [3] << 24);} catch (ioException e) {e.printstacktrace ();} return res;} byte pribadi [] readbytes (int len) {byte [] buf = byte baru [len]; ;} return buf;}}
Untuk menggambar bentuk gelombang, panel gambar bentuk gelombang dari tutorial JPanel dibuat:
// nama file: drawpanel.java // robintang // 2012-08-23 impor java.color; Data = NULL; Data Publicel (Int []) {this.data = data;} @Override PaintComponent yang dilindungi (grafik g) {int ww = th (); ); ; i; ; }}}}
Setelah ini, Anda dapat menelepon dan menggambar, sederhana:
// WaveFilerereadDemo.java // Robintang // 2012-08-23 Impor javax.swing.jframe; FileName = "File.wav"; (Data); ;
Kode sumber proyek dapat ditemukan di disk jaringan baidu saya, dan langsung ke open source java
Letakkan rendering:
Diharapkan bahwa artikel ini bermanfaat untuk desain program Java semua orang.