Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go PDF格式的Wav大端格式_Go_Pdf_Wav - Fatal编程技术网

Go PDF格式的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

当我解析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生成标头?可能吗?
我尝试过格式化,但标准媒体播放器不支持它

在这段代码中将
LittleEndian
替换为
BigEndian
有什么问题?@kostix这行不通。玩家将无法识别数据。我想我终于找到了你想要的。因此,不,WAV(RIFF)文件可能只有在以“RIFX”标识符开头时才是big-endian,如果这对您不起作用(并且您已经用已知的好文件(不是由代码生成的))验证了这一点),那么您必须找到另一个解决方案。我只设法找到了自然是,似乎包含PCM数据以及WAV。您可以尝试使用这种格式来代替。@kostix,非常感谢