2016-10-20 6 views
1

下記のように、オーディオファイル(wav、mp3を含む)のチャンネル数を取得するには、decodeAudioData()を使用する方法しかないようです。しかし、私はCPUの多くを使用するオーディオファイル全体をデコードせずにチャンネル数を取得できるようにしたい(私はそのCPUと思う)。decodeAudioData()を使用せずにオーディオファイルのチャンネル数を取得するにはどうすればよいですか?

これを達成する他の方法はありますか?そうでない場合は、ファイルのセクションのみをデコードする方法はありますか?

ありがとうございます!

audio_file.onchange = function() { 

    let files = this.files; 
    let file = URL.createObjectURL(files[0]); 
    let xhr = new XMLHttpRequest(); 
    xhr.open('GET', file, true); 
    xhr.responseType = "arraybuffer"; 
    xhr.onload =() => { 
     audioContext.decodeAudioData(xhr.response).then((buffer) => { 
      CHANNEL_COUNT = buffer.numberOfChannels; 
      if (CHANNEL_COUNT === 4){ 
        document.querySelector('.status').innerHTML = 'FOA file detected'; 
       } 
       else { 
        document.querySelector('.status').innerHTML = "Audio file with " + CHANNEL_COUNT + " channels detected"; 
       } 

     }); 
    } 

    xhr.send(null); 

    audioElement.src = file; 
    audioElement.load(); 

}; 

答えて

0

チャネル情報は、エンコードされたファイルの先頭に通常なので、あなただけの最初の数千バイトをダウンロードし、それにdecodeAudioDataを使用することができます。しかし、私は多くのオーディオコンテナがファイルの途中でチャンネルの数を変更することをサポートできると思います。その情報は失われますが、decodeAudioDataも失われます。

関連する問題