Как структурирован суб-блок данных WAV? - PullRequest
0 голосов
/ 27 октября 2018

Я пишу приложение на C # для обработки файлов WAV, и я закончил достаточно кода для чтения фрагментов любого файла (т. Е. Чтения в форматировании метаданных и всех других фрагментов, готовых обрабатывать данные с этой информацией).

Я сейчас нахожусь в точке, где мне нужно обрабатывать порцию данных, но я не имею ни малейшего представления / ресурсов, чтобы узнать, как сэмплы соединены вместе. Если возможно, не могли бы вы ответить ссылками / информацией только о блоке данных, а не о том, как в общем случае структурированы файлы WAV.

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

Спасибо! Если я сделал что-то не так с вопросом, пожалуйста, прокомментируйте, чтобы я мог перефразировать / отредактировать сообщение.

1 Ответ

0 голосов
/ 27 октября 2018

Это, безусловно, зависит от используемого кодека, но мы предполагаем, что PCM - наиболее распространенная вещь, которую вы найдете в файлах WAV.

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

Sampling

Из Википедии: https://en.wikipedia.org/wiki/Pulse-code_modulation

Поскольку вы уже анализируете заголовок, вы знаете частоту дискретизации. Это количество выборок в секунду. 44,100 выборок в секунду (или частота выборки 44,1 кГц) - это типичный звук CD. Для видео чаще используется частота дискретизации 48 кГц.

Из заголовка вы также знаете биты на выборку. Это указывает на разрешение каждого взятого образца. 16-битные выборки, естественно, занимают 2 байта для каждой выборки.

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

[sample 0][sample 1][sample 2][...]

Количество каналов также указывается в заголовке, который сообщает, сколько дискретных каналов было выбрано. Монофонический звук - это всего лишь 1. Стереозвук будет иметь 2. 5.1-канальный объемный звук будет иметь 6. Сами значения семплов чередуются, сэмплы одного канала за другим, образуя кадр. Если бы у меня была стерео дорожка с левым / правым каналами, она бы выглядела примерно так:

[L][R][L][R][L][R][L][R][...]

Чтобы на самом деле прочитать эти числовые значения, данные обычно пишутся с прямым порядком байтов. Для 16-битных выборок и выше обычно используются целые числа со знаком.

...