WAV формат с прямым порядком байтов в PDF - PullRequest
0 голосов
/ 28 октября 2019

Когда я анализирую PDF для извлечения .WAV, там нет заголовков. Поэтому мне нужно сгенерировать заголовок для данных в формате BigEndian, потому что PDF WAV хранится в BigEndian, и для преобразования BigEndian в LittleEndian требуется много ресурсов. Здесь у меня есть код, который генерирует WAV-заголовок с данными Littleendian и работает хорошо:

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 , но стандартные медиаплееры его не поддерживают

...