2016-10-24 1 views
0

Goodmornig everyone。Java OpenIMAJ .oggデコーダ - すべてのゼロをデコードした最初のバッファ

私はOpenIMAJライブラリの周りに.oggファイルのオーディオを読み込んでサンプリングされたデータを返すことができる単純なラッパークラスをコーディングしています。

public List<double[]> getDoubleSample() throws AudioSamplerException { 
    if (audioSampler.getFormat().getJavaAudioFormat().getChannels() != 1) 
     throw new AudioSamplerException("Cannot decode multichannel track as array"); 
    List<double[]> bufferedSamples = new LinkedList<>(); 
    SampleChunk sc; 
    SampleBuffer sb; 
    while ((sc = audioSampler.nextSampleChunk()) != null) { 
     sb = sc.getSampleBuffer(); 
     double[] data = sb.asDoubleArray(); 
     bufferedSamples.add(data); 
    } 
    return bufferedSamples; 
} 

コード偉大な動作するようですが、デバッグセッションの後、私は、デコードされた非常に最初のバッファがすぐ内側ゼロにしていることがわかった。ここで

は、私は出力として二重の配列を取得するために実装したコードがあります以下のような:

bufferedSamples = {[email protected]} size = 218 
    0 = {double[96000]@1215} 
    0 = 0.0 
    1 = 0.0 
    2 = 0.0 
    3 = 0.0 
    4 = 0.0 
    5 = 0.0 
    6 = 0.0 
    7 = 0.0 
    and so on... 

はゼロがすぐそこにあること、または、私はファイルを復号化する際に間違った何かを行っている、または多分私は配列を返す前に、追加のステップを必要とすることですか?

この最初のバッファを削除しようとしましたが、後でAudacityで抽出したデータに従ってデータが正しいと思いますが、この回避策についてはわかりません。

お返事ありがとうございます。

答えて

0

なぜそれが起こっているのかわかりません - 私は自分のoggファイルでそれを複製できます。しかし、wavファイルでは起こりません。根本的な原因は、OpenIMAJコードベース内のものではなく、Xugglerの深いところにあるようです。

+0

ありがとうございました。私は、.getSampleBuffer()から読み取られた最初のバッファを削除することで回避策を見つけました。現時点ではうまくいくと思われますが、残りの値とAudacityでサンプリングした値とを比較してテストしました。しかし、私はそのための修正を待つでしょう。ありがとうございました。 – fl4w

関連する問題