Go PDF格式的Wav大端格式
当我解析PDF以从中提取.WAV时,它没有标题。所以我需要为BigEndian格式的数据生成头,因为PDF WAV存储在BigEndian中,并且将BigEndian转换为LittleEndian需要大量资源。 在这里,我有一段代码,它使用littleendian数据生成wav头,效果很好:Go PDF格式的Wav大端格式,go,pdf,wav,Go,Pdf,Wav,当我解析PDF以从中提取.WAV时,它没有标题。所以我需要为BigEndian格式的数据生成头,因为PDF WAV存储在BigEndian中,并且将BigEndian转换为LittleEndian需要大量资源。 在这里,我有一段代码,它使用littleendian数据生成wav头,效果很好: bits := 16 pcmLen := len(samples) * 2 samplingRate := format.sampleRate numChannels := form
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生成标头?可能吗?
我尝试过格式化,但标准媒体播放器不支持它在这段代码中将
LittleEndian
替换为BigEndian
有什么问题?@kostix这行不通。玩家将无法识别数据。我想我终于找到了你想要的。因此,不,WAV(RIFF)文件可能只有在以“RIFX”标识符开头时才是big-endian,如果这对您不起作用(并且您已经用已知的好文件(不是由代码生成的))验证了这一点),那么您必须找到另一个解决方案。我只设法找到了自然是,似乎包含PCM数据以及WAV。您可以尝试使用这种格式来代替。@kostix,非常感谢