базовый блок данных wav


У меня есть вопрос об основном блоке данных wav-файла.

Я знаю, что каждые 2 байта в разделе блока данных представляют монофонический звук и левый и правый каналы хранятся попеременно, но я до сих пор не знаю, как понять значение 2 байта.

Это высоко и низко?

  • значение 0000 = > наименьшее?
  • значение FFFF = > наивысшее?
  • значение 8FFF = > нет звука?

Если это так, то когда я хочу уменьшить громкость на 50%, все, что мне нужно сделать, это просто classfy low и высокий а дивив на 2?

2 2

2 ответа:

WAV-файлы могут содержать образцы с различной глубиной битов и кодировкой, но один из наиболее часто используемых-16-битный PCM. С 16-битными данными PCM в файле WAV, каждые два байта должны интерпретироваться как короткое (т. е. знаковое, двухбайтовое число). В wav файлы, образцы всегда "прямой порядок байтов". Если вы помечаете свой вопрос языком, кто-то может предоставить вам простой пример кода. В C / C++ массив данных, считанных из файла, можно преобразовать в (short*), что позволит вам легко получить доступ к каждому образцу.

Чтобы ответить на вторую часть вашего вопроса, да, вы можете уменьшить объем, уменьшив вдвое значение каждого образца.

Ваше понимание кажется прекрасным. Единственное, что я могу сказать, это то, что один байт будет самым значительным байтом, а другой-наименее значительным. В остальном ты, кажется, в точку попал.

И ваш вопрос прекрасен (по-моему, во всяком случае!) Хотя более полезные ответы можно было бы получить, если бы вы задали конкретный вопрос о программировании, но я вижу, что это может быть невозможно.