Я изучаю, как читать WAV-файлы на C++, и извлекать данные в соответствии с заголовком. У меня есть несколько файлов WAV. Посмотрев на заголовок всех из них, я вижу, что все они следуют правилам волновых файлов. Однако записи файлов, произведенные TeamSpeak, странны, но они все еще воспроизводятся в медиаплеере.По умолчанию WAV-описание, когда все спецификации «0»
Так, глядя на стандартном формате WAV файлов, он выглядит следующим образом:
Так во всех файлах, которые выглядят нормально, я получаю законные значения для всех значений от «AudioFormat» до «BitsPerSample» (с картинки). Однако в файлах TeamSpeak ВСЕ эти значения равны ноль.
Это, но первые 3 значения не равны нулю. Таким образом, в первой и третьей строках есть «RIFF» и «WAVE», и ChunkSize кажется законным.
Вопрос: Как плеер знает что-либо о таком файле и узнает, что этот файл моно или стерео? Частота выборки? Что-нибудь об этом? Похоже, есть что-то стандартное, если все эти значения равны нулю?
Update Я исследовал файл с MediaInfo и получил это:
General
Complete name : ts3_recording_16_10_02_17_53_54.wav
Format : Wave
File size : 2.45 MiB
Duration : 13 s 380 ms
Overall bit rate mode : Constant
Overall bit rate : 1 536 kb/s
Audio
Format : PCM
Format settings, Endianness : Little
Format settings, Sign : Signed
Codec ID : 1
Duration : 13 s 380 ms
Bit rate mode : Constant
Bit rate : 1 536 kb/s
Channel(s) : 2 channels
Sampling rate : 48.0 kHz
Bit depth : 16 bits
Stream size : 2.45 MiB (100%)
Тем не менее, хотя и не понимаю, как он пришел к этим выводам.
В таком случае эти WAV файлы сжаты. – VuVirt
@VuVirt На самом деле он не выглядит сжатым по многим причинам. Во-первых, файл действительно огромный. Проверьте образец, который я предоставил. Это похоже на 13 секунд и имеет размер 2,5 МБ. Во-вторых, я могу преобразовать его в mp3 с libmp3lame, который обычно ничего не декодирует, просто читает образцы PCM (AFAIK). –
http://www-mmsp.ece.mcgill.ca/documents/audioformats/wave/wave.html – VuVirt