WAVE – Аудио файл WAVE (WAVE Sound File)
Расширение WAVE
Чем открыть файл WAVE
В Windows: jetAudio, Winamp, Microsoft Windows Media Player, Audacity, ALLPlayer, Apple iTunes для Windows, VLC media player, MediaMonkey, Apple QuickTime Player, Roxio Creator 2012, Xilisoft Video Converter Ultimate, RealNetworks RealPlayer, Helium Music Manager, любой другой мультимедиа проигрыватель.
В Mac OS: Apple iTunes for Mac, Windows Media Player для Mac, Apple Logic Pro, VLC media player для Mac, Apple QuickTime Player, Roxio Toast 11, RealNetworks RealPlayer, любой другой мультимедиа проигрыватель.
В Linux: VLC media player для Linux, XMMS, любой другой мультимедиа проигрыватель.
Описание расширения WAVE
Популярность:
Разработчик: Microsoft
Расширение WAVE – это аудио файл содержит CD-качество аудио, хранится не в сжатом формате без потерь, похож на формат AIFF, но основан на формате Resource Interchange File Format (RIFF), а не на Audio Interchange File Format (AIFF). Как и любые несжатые файлы, файлы WAVE занимают много места.
Как и файлы в формате AVI и ASF, формат WAVE является только файлом-контейнером. Аудио контент сжат с помощью самых разнообразных кодеков и сохранен в формате .WAVE и его можно воспроизводить в Windows Media Player, если соответствующие кодеки установлены на компьютере. Наиболее распространенные кодеки, используемые для .WAVE расширений – Microsoft Adaptive Differential Pulse Code Modulation (MS ADPCM) и не сжатый Pulse Code Modulation (PCM).
Т.к. несжатые файлы WAVE большие по размеру, то использование файлов WAVE в Интернете является редкостью. Тем не менее, это часто используемый тип файла, подходит для хранения исходных файлов в архивах, т.к. они имеют самое высокое качество для использования в системах, где нет ограничений на размер файла и есть много места на диске, или в таких приложениях, как редактирование аудио, когда время сжатия и распаковка данных ограничены и критические.
Чаще всего предпочитают файлы меньшего размера, сжатые с потерей качества, такие как MP3, их используют для хранения и передачи аудио. Небольшие размеры файлов MP3 позволяют быстрее передавать файлы в Интернете, а также более низкий расход места на запоминающем устройстве. Используются также без потерь сжатые форматы, такие как FLAC.
.WAVE файлы обычно используют расширение WAV.
Файл формата WAVE — что это?
Описание формата WAVE
Формат WAVE был разработан корпорацией Майкрософт, является контейнером для хранения и записи оцифрованных аудиопотоков. Представляет из себя сжатый формат, отличается отсутствием потери качества и основан на расширении RIFF.
Зачастую рассматриваемый тип файла занимает довольно много места на цифровом диске или каком-либо прочем накопителе. В процессе сжатия могут быть использованы различные кодеки. Открыть файл WAVE возможно в штатном медиапроигрывателе Microsoft Windows Media Player, для этого следует закачать на компьютер соответствующий кодек.
Одним из самых распространенных кодеков, является MS ADPCM, его полное название — Microsoft Adaptive Differential Pulse Code Modulation. Крайне редко используются в сети Всемирной паутины из-за того, что обладают достаточно объёмными размерами, что невыгодно для большинства пользователей как при воспроизведении, так и при загрузке.
Отлично подходит для хранения исходных файлов в архиве, потому как имеет один из наиболее высоких показателей качества среди аналогов. По сей день распространены в сфере записи звука, среди же обычной среды использования их рейтинг был значительно снижен в связи с вытеснением со-стороны более компактного и универсального MP3.
Рассматриваемый формат файла разрабатывался при поддержке компании IBM, чаще всего его можно встретить в пределах операционной системы Windows, а также Mac OS, в последней платформе открыть WAVE можно при помощи Apple QuickTime Player или Roxio Toast. Достаточно часто WAV используется в файлах WAVE.
Структура WAV файла
Представляем вашему вниманию статью с подробным разбором заголовка WAV-файла и его структуры.
Теория
Итак, рассмотрим самый обычный WAV файл (Windows PCM). Он представляет собой две, четко делящиеся, области. Одна из них — заголовок файла, другая — область данных. В заголовке файла хранится информация о:
- Размере файла.
- Количестве каналов.
- Частоте дискретизации.
- Количестве бит в сэмпле (эту величину ещё называют глубиной звучания).
Но для большего понимания смысла величин в заголовке следует ещё рассказать об области данных и оцифровке звука. Звук состоит из колебаний, которые при оцифровке приобретают ступенчатый вид. Этот вид обусловлен тем, что компьютер может воспроизводить в любой короткий промежуток времени звук определенной амплитуды (громкости) и этот короткий момент далеко не бесконечно короткий. Продолжительность этого промежутка и определяет частота дискретизации. Например, у нас файл с частотой дискретизации 44.1 kHz, это значит, что тот короткий промежуток времени равен 1/44100 секунды (следует из размерности величины Гц = 1/с). Современные звуковые карты поддерживают частоту дискретизации до 192 kHz. Так, со временем разобрались.
Амплитуда и сэмплы
Теперь, что касается амплитуды (громкости звука в коротком промежутке времени). Амплитуда выражается числом, которое занимает в файле 8, 16, 24, 32 бита (теоретически можно и больше). От точности амплитуды, я бы сказал, зависит точность звука. Как известно, 8 бит = 1 байту, следовательно, одно значение амплитуды в какой-то короткий промежуток времени в файле занимает 1, 2, 3, 4 байта соответственно. Таким образом, чем больше число занимает места в файле, тем шире возможный диапазон значений для этого числа, а значит и больше точность амплитуды.
Для PCM-файлов точность (или разрядность) может быть следующей:
- 1 байт / 8 бит — -128…127
- 2 байта / 16 бит — -32 760…32 760
- 3 байта / 24 бита — -1…1 (с плавающей точкой)
- 4 байта / 32 бита — -1…1 (с плавающей точкой)
Но список возможных разрядностей на самом деле весьма шире, здесь представлены лишь наиболее популярные.
Совокупность амплитуды и короткого промежутка времени носит название сэмпл.
Заголовок
Итак, давайте рассмотрим первую часть WAV-файла подробнее. Следующая таблица наглядно показывает структуру заголовка:
Местоположение | Поле | Описание |
---|---|---|
0…3 (4 байта) | chunkId | Содержит символы «RIFF» в ASCII кодировке 0x52494646 . Является началом RIFF-цепочки. |
4…7 (4 байта) | chunkSize | Это оставшийся размер цепочки, начиная с этой позиции. Иначе говоря, это размер файла минус 8, то есть, исключены поля chunkId и chunkSize. |
8…11 (4 байта) | format | Содержит символы «WAVE» 0x57415645 |
12…15 (4 байта) | subchunk1Id | Содержит символы «fmt » 0x666d7420 |
16…19 (4 байта) | subchunk1Size | 16 для формата PCM. Это оставшийся размер подцепочки, начиная с этой позиции. |
20…21 (2 байта) | audioFormat | Аудио формат, список допустипых форматов. Для PCM = 1 (то есть, Линейное квантование). Значения, отличающиеся от 1, обозначают некоторый формат сжатия. |
22…23 (2 байта) | numChannels | Количество каналов. Моно = 1, Стерео = 2 и т.д. |
24…27 (4 байта) | sampleRate | Частота дискретизации. 8000 Гц, 44100 Гц и т.д. |
28…31 (4 байта) | byteRate | Количество байт, переданных за секунду воспроизведения. |
32…33 (2 байта) | blockAlign | Количество байт для одного сэмпла, включая все каналы. |
34…35 (2 байта) | bitsPerSample | Количество бит в сэмпле. Так называемая «глубина» или точность звучания. 8 бит, 16 бит и т.д. |
36…39 (4 байта) | subchunk2Id | Содержит символы «data» 0x64617461 |
40…43 (4 байта) | subchunk2Size | Количество байт в области данных. |
44… | data | Непосредственно WAV-данные. |
Вот и весь заголовок, длина которого составляет 44 байта.
Подводные камни
Выше мы рассмотрели простейший случай заголовка с одной подцепочкой перед областью данных. Но на практике встречаются и более сложные или даже непредвиденные сценарии, с которыми можно увязнуть надолго.
В chunkSize лежит заведомо слишком большое значение. Такое происходит, когда вы пытаетесь читать данные в режиме стриминга. Например, декодер LAME при выводе результата декодирования в STDOUT в этом поле возвращает значение 0x7FFFFFFF + 44 — 8 , а в subchunk2Size — 0x7FFFFFFF (что равно максимальному значению 32-разрядного знакового целочисленного значения). Это объясняется тем, что декодер в таком режиме выдаёт результат не целиком, а небольшими наборами данных и не может заранее определить итоговый размер данных.
Подцепочек может быть больше, чем две, например, при попытке декодировать аудио универсальным декодером ffmpeg 4.1.3 ffmpeg -i example.mp3 -f wav example.wav в декодированном файле помимо рассмотренных подцепочек fmt и data будет содержаться ещё одна LIST перед областью данных. Таким образом, когда вам понадобится добраться до данных, вам потребуется пропустить ненужные подцепочки, пока не встретится data . Это будет сделать не слишком сложно, так как можно читать ID подцепочки и её размер, и если она не data , то пропускать данные, основываясь на её размере.
Блок данных
В моно варианте значения амплитуды расположены последовательно. В стерео же, например, сначала идет значение амплитуды для левого канала, затем для правого, затем снова для левого и так далее.
Заметка о типах данных
При чтении заголовка можно применять разные типы данных. Например, в Си (MSVS) вместо массива char[4] можно использовать __int32 или DWORD , но тогда сравнение с какой-либо строковой константой, к примеру может оказаться не очень удобным. Также хотелось бы предостеречь вас на тему 64-битных операционных систем. А именно: всегда стоит помнить, что в языке Си тип переменной int в 64-битной системе будет иметь длину 8 байт, а в 32-битной — 4 байта. В таких случаях можно воспользоваться вышеупомянутым типом переменной __int32 или __int64 , в зависимости от того, какой размер переменной в памяти Вам необходим. Существуют типы __int8 , __int16 , __int32 и __int64 , они доступны только для MSVC++ компилятора как минимум 7-й версии (Microsoft Visual Studio 2003.NET), но зато Вы не ошибетесь с выбором размера типа данных.
Формат WAV
Расширение файлов: .wav
WAVE или WAV является короткой формой Wave Audio File Format (реже именуемой как Аудио для Windows). Этот формат является стандартом для хранения аудио потока на ПК. Он является сферой приложения формата RIFF для хранения аудио в «цепочках», это очень напоминает форматы 8SVX и AIFF, используемые компьютерами Amiga и Macintosh соответственно. Это также основной формат на системах Windows для хранения обычного несжатого звука. Как правило, для этого применяется кодирование методом линейной импульсно-кодовой модуляции.
Описание
Как WAV, так и AIFF совместимы с операционными системами Windows, Macintosh или Linux. Формат также учитывает некоторые отличия процессоров Intel, такие как порядок байтов от младшего к старшему. RIFF формат выполняет роль обертки для различных кодеков аудио сжатия.
Несмотря на то, что WAV файл может содержать сжатое аудио, наиболее обычным его применением является хранение как раз несжатого аудио в формате линейной импульсно-кодовой модуляции (LPCM). Стандартным форматом Audio-CD, например, является аудио в формате LPCM, с 2 каналами, частотой дискретизации 44 100 Гц и 16 бит на сэмпл. Так как формат LPCM хранит несжатое аудио, которое абсолютно идентично оригиналу, это позволяет использовать его профессиональным пользователям и аудио экспертам для получения максимального качества звучания. WAV аудио файл также может быть изменен практически в любом аудио редакторе. WAV формат работает со сжатым звуком в системах семейства Windows через Audio Compression Manager (ACM). Любой ACM кодек может быть использован для сжатия WAV файла. Пользовательский интерфейс для ACM может быть доступен через множество программ, включая и стандартную программу для записи звука в некоторых версиях Windows.
Начиная с Windows 2000, появился заголовок WAVE_FORMAT_EXTENSIBLE, который позволял хранить многоканальные аудио данные, учитывал расположение динамиков, исключал неоднозначности в плане типов сэмпла и размеров контейнера в стандартном WAV формате. Также он поддерживал произвольные расширения формата чанка.
Также существует много несоответствий в формате WAV: например, 8-битные данные являются беззнаковыми, в то время как 16-битные — знаковыми.
WAV файлы могут содержать встроенные IFF «списки», которые могут содержать несколько «подчанков».
Метаданные
Будучи форматом, производным от Resource Interchange File Format (RIFF), WAV-файлы могут иметь метаданные (тэги) в чанке INFO. В дополнение к этому, в WAV файлы могут быть встроены метаданные стандарта Extensible Metadata Platform (XMP).
Популярность
WAV файлы достаточно большие, что делает этот формат неудобным для обмена по сети Интернет, и это сильно подрывает его популярность. Однако, этот формат — как правило, чаще всего используется для сохранения первозданного вида для файлов высокого качества в таких случаях, где размер свободного дискового пространства не является ограничением. Он также используется в программах для редактирования аудио, где экономят время на сжатии и распаковке данных.
Более часто данные сжимаются с помощью форматов с потерями, такими как Ogg Vorbis, MP3, ATRAC, AAC, Musepack и WMA, которые используются для хранения и обмена музыки (например, среди пользователей Интернета). Небольшой размер файла и возможность быстро скачивать их также является существенным плюсом наряду с тем, что такие аудио данные занимают намного меньше места. Но форматы с потерями жертвуют качеством ради размера, поэтому их алгоритмы не сохраняют первозданное качество звука во всех деталях. Но существуют и кодеки без потерь, такие как FLAC, Shorten, Monkey’s Audio, ATRAC Advanced Lossless, Apple Lossless, WMA Lossless, TTA, WavPack, но ни один из этих кодеков нельзя назвать общепринятым.
Использование формата WAV является общепринятым, благодаря его простоте и простой структуре, которая в большой степени основана на формате файлов RIFF. Благодаря этому, формат WAV не испытывает притеснения среди различного программного обеспечения или аппаратных плееров, он поддерживается практически везде.
Назло огромному размеру данных несжатого WAV, этот формат иногда используется для радиовещания, особенно для адаптированных безкассетных систем. Радио BBC (BBC Radio) в Соединенном Королевстве использует 44.1 кГц, 16 бит, стерео аудио данные как стандарт в их системе VCS. Система ABC «D-Cart», которая разработана Австралийским радиовещателем, использует 48 кГц, 16 бит, стерео аудио данные, что идентично цифровым аудио кассетам (DAT).