2017-07-07 1 views
1

wFormatTagのWAVEファイルが3(WAVE_FORMAT_IEEE_FLOAT)です。 FirefoxはWAVE_FORMAT_IEEE_FLOATのファイルをWAVE_FORMAT_EXTENSIBLEのように扱います。つまり、WAVE_FORMAT_IEEE_FLOATファイルにfmtチャンクの拡張部分が含まれていると考えられます。WAVEファイルfmtチャンクの拡張部分

私のファイルは、Firefoxでファイルをデコードする際にエラーが発生しFMTチャンクの延長部分が含まれていません

:バイト40で、これは私がバイト38でwValidBitsPerSampleを追加しなければならないことを意味The buffer passed to decodeAudioData contains invalid content which cannot be decoded successfully.

dwChannelMaskSubFormat(44バイト目)3つのヘッダーフィールドにはどのような情報を追加する必要がありますか?この情報の意味は何ですか?8-16-32ビット整数の形式でどのように追加できますか?

ありがとうございます:)。ここで

は私のファイルのヘッダー情報です:

console.log('ckID', String.fromCharCode(dataView.getUint8(0))); // R 
console.log('ckID', String.fromCharCode(dataView.getUint8(1))); // I 
console.log('ckID', String.fromCharCode(dataView.getUint8(2))); // F 
console.log('ckID', String.fromCharCode(dataView.getUint8(3))); // F 

console.log('cksize', dataView.getUint32(4, true)); // 65623058 

console.log('WAVEID', String.fromCharCode(dataView.getUint8(8))); // W 
console.log('WAVEID', String.fromCharCode(dataView.getUint8(9))); // A 
console.log('WAVEID', String.fromCharCode(dataView.getUint8(10))); // V 
console.log('WAVEID', String.fromCharCode(dataView.getUint8(11))); // E 

console.log('ckID', String.fromCharCode(dataView.getUint8(12))); // f 
console.log('ckID', String.fromCharCode(dataView.getUint8(13))); // m 
console.log('ckID', String.fromCharCode(dataView.getUint8(14))); // t 
console.log('ckID', String.fromCharCode(dataView.getUint8(15))); // 

console.log('cksize', (dataView.getUint32(16, true))); // 16 

console.log('wFormatTag', (dataView.getUint16(20, true))); // 3 

console.log('nChannels', (dataView.getUint16(22, true))); // 2 

console.log('nSamplesPerSec', (dataView.getUint32(24, true))); // 44100 

console.log('nAvgBytesPerSec', (dataView.getUint32(28, true))); // 352800 

console.log('nBlockAlign', (dataView.getUint16(32, true))); // 8 

console.log('wBitsPerSample', (dataView.getUint16(34, true))); // 32 

console.log('cbSize', (dataView.getUint16(36, true))); // 0 

console.log('ckID', String.fromCharCode(dataView.getUint8(38))); // f 
console.log('ckID', String.fromCharCode(dataView.getUint8(39))); // a 
console.log('ckID', String.fromCharCode(dataView.getUint8(40))); // c 
console.log('ckID', String.fromCharCode(dataView.getUint8(41))); // t 

console.log('cksize', (dataView.getUint16(42, true))); // 4 

console.log('dwSampleLength', (dataView.getUint16(46, true))); // 10876 

console.log('ckID', String.fromCharCode(dataView.getUint8(50))); // d 
console.log('ckID', String.fromCharCode(dataView.getUint8(51))); // a 
console.log('ckID', String.fromCharCode(dataView.getUint8(52))); // t 
console.log('ckID', String.fromCharCode(dataView.getUint8(53))); // a 

答えて

関連する問題