当我解析 PDF 以从那里提取 .WAV 时,它没有标题。所以我需要为 BigEndian 格式的数据生成标题,因为 PDF WAV 存储在 BigEndian 中,将 BigEndian 转换为 LittleEndian 是资源密集型的。在这里,我的代码使用 littleendian 数据生成 wav 标头并且效果很好:
bits := 16
pcmLen := len(samples) * 2
samplingRate := format.sampleRate
numChannels := format.channels
blockAlign := (numChannels * bits) >> 3
// jshint bitwise:true
RIFF := 0x46464952 // Resource Interchange File Format
WAVE := 0x45564157 // Wave
FMT := 0x20746D66 // Format
DATA := 0x61746164 // Audio Data
buf := new(bytes.Buffer)
_ = binary.Write(buf, binary.LittleEndian, uint32(RIFF))
_ = binary.Write(buf, binary.LittleEndian, uint32(32+pcmLen))
_ = binary.Write(buf, binary.LittleEndian, uint32(WAVE))
_ = binary.Write(buf, binary.LittleEndian, uint32(FMT))
_ = binary.Write(buf, binary.LittleEndian, uint32(16))
_ = binary.Write(buf, binary.LittleEndian, uint16(1))
_ = binary.Write(buf, binary.LittleEndian, uint16(numChannels))
_ = binary.Write(buf, binary.LittleEndian, uint32(samplingRate))
_ = binary.Write(buf, binary.LittleEndian, uint32(samplingRate*blockAlign))
_ = binary.Write(buf, binary.LittleEndian, uint16(blockAlign))
_ = binary.Write(buf, binary.LittleEndian, uint16(bits))
_ = binary.Write(buf, binary.LittleEndian, uint32(DATA))
_ = binary.Write(buf, binary.LittleEndian, uint32(pcmLen))
如何为 bigEndian 生成标头?可能吗?我尝试过RIFX格式,但标准媒体播放器不支持它