首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >fmt块的波形文件扩展部分

fmt块的波形文件扩展部分
EN

Stack Overflow用户
提问于 2017-07-07 17:43:21
回答 1查看 297关注 0票数 1

我有一个包含wFormatTag的WAVE文件,即3 (WAVE_FORMAT_IEEE_FLOAT)。火狐像对待WAVE_FORMAT_IEEE_FLOAT文件一样对待WAVE_FORMAT_EXTENSIBLE,这意味着它希望WAVE_FORMAT_IEEE_FLOAT文件包含fmt块的扩展部分。

我的文件不包含fmt块的扩展部分,这将导致在Firefox:The buffer passed to decodeAudioData contains invalid content which cannot be decoded successfully.中解码文件时出错。

这意味着我必须在字节38处添加wValidBitsPerSample,在字节40处添加dwChannelMask,在字节44处添加SubFormat,我应该为这三个标题字段添加哪些信息?这些信息的含义是什么?如何以8-16-32位整数的形式添加这些信息?

谢谢你的帮助:)。

以下是我的文件的头信息:

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-10 15:57:44

根据bug.cgi?id=1349658的说法,火狐不支持float32 WAV文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44976805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档