この記事の例は、JavaがWAVファイル(波形ファイル)を読み取り、波形図を描画する方法を示しています。あなたの参照のために全員のためにそれを共有してください。詳細は次のとおりです。
多くのネチズンは最近、波形ファイルの読み取りと書き込みについて私に尋ねたので、それがすべての人をより便利にし、コードを改善したため、私はgithubでこの部分(波形ファイルの読み取りと書き込み)を開きました。
アドレスはhttps://github.com/sintrb/waveaccess/です。
次のコンテンツは基本的に有効期限が切れています。
プロジェクトは.wavファイル(波形ファイル)を読み取り、波形図を描画する必要があるため、この領域で単純にパッケージ化されました。
実際、それは主にWAVファイルのパッケージです。
// filename:wavefilerereader.java // 2012-08-23 java.io.*; = null = 0 null = 4プライベートな文字列= null infmtubchunk = 0; lennnnnnnnnnnnnnnnnls = 0; int lenbitsaprsame = null ; public wavefileareader(string filename){this.initreader(filename);} // public boolean issuccess(){return isssucces;} //各サンプリングのコーディング長、8ビットまたは16ビットのパブリックintbitPersampame(){return itspersample;} //サンプリングレートを取得しますpblic long getamplerate(){return this.samplerate;} //チャネルの数を取得します。 IS、いくつのpublic int getDatalen(){return this.len;} //データを取得//データは2次元配列です。 (){this.data;} private void initeader(string filename){fis = newputstream(this.filenamam e); )if(!chunkdescriptor.endswith( "riff")は新しいIllegalargumexception( "riff miss、" + filename + "はw aveファイルではありません。 )if(!waveflag.endswith( "wave")新しい違法な違反の投げ( "wave miss、" + filename + "はwave f ile。"); 「fmt」)新しいIllegalgumentexception( " + filename +"); = readlong()readlong(); )新しいIllegalargumentException( "data Miss +"は波のファイルではありません。 /this.numchannels); data = new int [this.len]; this.numchannels; ] = this.readint();}}} isccess = true;} catch(exception e){e.printstacktrace();}最後に{if(if bis!= null)bis.close(); != null)fis.close();} catch(expert e1){e1.printstacktrace()}} private string {byte [] buf = new byte [len];読み取り(buf)! = 0; if(bis.read(buf)!= 2)新しいioexception =(buf [0]&0x0000ff)| )buf)))<< 8);} catch(exception e){e.printstacktrace(); for(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] try {bis.read(buf)!= len) ;} buf;}}
波形を描くために、JPanelチュートリアルから波形図面パネルが作成されました。
// filename:drawpanel.java // 2012-08-23インポートJava.awt.graphics; data = null(int [] data){data = data;} )g.fillect(0、ww、hh); ;/ i; //次のものは3点のテイクアウトです//実際には、間隔はサンプリングレートy = hh-(int)(data [i*3]*k+hh/2)に従って設定されます; systemm.out.out.out.print( "); }}}}
これらの後、あなたはコールして描くことができます、シンプル:
// wavefilerereaddemo.java // robintang // 2012-08-23インポートjavax.swing.jframe; filename = "file.wav"; jframe = int [] data = reader.getData()[)0; (データ); ; frame.setVisible(true);} system.errr.errin(filename + ");}}}
プロジェクトのソースコードは、私のbaiduネットワークディスクで、そしてオープンソースのJavaに直接見つけることができます
レンダリングを入れてください:
この記事がすべての人のJavaプログラムのデザインに役立つことが期待されています。