Откройте файл wav для чтения данных в текстовом редакторе по сравнению с sndfile

Я хочу прочитать данные 8-битного wav-файла с помощью textPad, я знаю, что данные расположены в 44/46-м байте, но у меня проблемы с чтением.

У меня есть этот код:

52 49 46 46 F8 37 01 00 57 41 56 45 66 6D 74 20
12 00 00 00 06 00 01 00 40 1F 00 00 40 1F 00 00
01 00 08 00 00 00 3 7 0 00 66 41 61 00 00 C6 37
01 00 64 61 74 61 C6 37 01 00 D6 D4 56 54 D5 56
56 51 D4 D3 D0 D6 54 57 D4 54 57 51 57 D0 D3 D1
< бр> и т.д.

Часть, выделенная жирным шрифтом, - это данные о нем.

Проблема в том, что когда я читаю его в sndfile, используя sf_read_int, я получаю в буфере следующие значения:

3670016  1572864  -3670016   -1572864   524288   -3670016   -3670016 

так далее

Как я должен читать данные в файле wav? Какое уравнение или «отношение» между числами, которые я получил в sndfile, и данными в textPad?

Да, и еще одна вещь, если я переключу чтение на sf_read_float вместо int, я получу значения от -0,0001 до +0,0001...

Любая идея, что происходит, запись и обработка данных очень хороши, но я не понимаю, что случилось с этими значениями.

Спасибо.


person Hanoun Fouad    schedule 13.07.2016    source источник
comment
Я предполагаю, что когда вы говорите в textPad, у вас есть плагин шестнадцатеричного редактора? (или в textPad встроен шестнадцатеричный редактор)   -  person user253751    schedule 13.07.2016
comment
Да, у него есть встроенный шестнадцатеричный редактор.   -  person Hanoun Fouad    schedule 13.07.2016


Ответы (2)


У вас есть шаблон, который можно увидеть в файле .wav:

  • "РИФФ": 0x52 0x49 0x46 0x46
  • "ВОЛНА": 0x57 0x41 0x56 0x45
  • "ФМТ": 0x66 0x6d 0x74 0x20
  • "данные": 0x64 0x61 0x74 0x61

Мы видим 64 61 74 61 со смещением 50. Таким образом, данные начинаются только со смещения 54, а не 46.

Вы можете найти спецификацию волны, чтобы понять, как кодируется ваш файл.

Благодаря этой спецификации я могу сказать вам, что ваш файл закодирован в "8-bit ITU-T G .711 А-закон".

person Mathieu    schedule 13.07.2016
comment
если он закодирован в 8-битном ITU-T, что это значит? - person Hanoun Fouad; 13.07.2016
comment
и ладно допустим это 54, тогда первые байты C6 37 01 00 как их можно интерпретировать как 3670016 1572864 -3670016 by sf_read_int - person Hanoun Fouad; 13.07.2016

Итак, я обнаружил, что файл wav закодирован, и libsndfile позаботится об этом без какого-либо вмешательства. Это вызвало «неравные» значения.

person Hanoun Fouad    schedule 13.07.2016