Показать сообщение отдельно
  #1  
Старый 03.11.2011, 21:10
Змей Змей вне форума
Прохожий
 
Регистрация: 03.11.2011
Сообщения: 18
Репутация: 10
Восклицание Как выудить данные из WAV файла

Поискал по поиску инфу на эту тему,из более менее понятного нашел это: http://www.kansoftware.ru/?tid=4832
Вроде бы работает нормально,но я не смог разобраться в принципе работы
Там вообщем то вся суть заключена в этом(про структуру wav прочитал):
Код:
    Channeles := Ch;
    SamplesPerSec := Freq;
    BitsPerSample := Bits;
    и т.д.
Но откуда берутся эти данные(Ch,Freq,Bits....) непонятно,их можно и по другому назвать и будет работать,то есть не в названии дело.Но как определяется откуда именно этим переменным взять данные? Подумал что просто по порядку считывается,решил проверить:
В примере было так:
Код:
TWaveHeader = record
    idRiff: array[0..3] of char;
    RiffLen: longint;
    idWave: array[0..3] of char;
    idFmt: array[0..3] of char;
    InfoLen: longint;
    WaveType: smallint;
    Ch: smallint;
    Freq: longint;
    BytesPerSec: longint;
    align: smallint;
    Bits: smallint;
  end;
  TDataHeader = record
    idData: array[0..3] of char;
    DataLen: longint;
  end;
Я решил что разбиение на заголовки просто для удобства работы, для проверки поменял так:
Код:
TWaveHeader = record
    idRiff: array[0..3] of char;
    RiffLen: longint;
    idWave: array[0..3] of char;
    idFmt: array[0..3] of char;
    InfoLen: longint;
    WaveType: smallint;
    Ch: smallint;
    Freq: longint;
    BytesPerSec: longint;
    align: smallint;
    Bits: smallint;
    idData: array[0..3] of char;
    DataLen: longint;
  end;
Но работать стало неверно,значит названия все таки влияют и информация не просто сплошняком идет.
Тогда непонятно по какому принципу считывается информация,поясните пожалуйста.
И как мне в таком случае считать только звуковую информацию или как считывать с определенного байта(прочитал что заголовки 44 байта занимают)?
Ответить с цитированием