Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Wave-header [D5, WinXP]


GlavBOTan ©   (2004-04-30 22:20:00) 

Еще один вопрос про wave:
Опытным путем (открытием в блокноте :) было установленно, что в начале файла имеется какая-то служебная информация (то ли метод кодировки, то ли еще что-то). Кто знает, что это такое, и сколько места оно занимает в файле (например, 128 первых байт), пожалуйста отзовитесь. А еще лучше киньте мне ссылочку на ресурс с описанием (желательно на русском и для чайников, но на английском и для профи тоже приветствуется) wave-формата, если таковая есть. Заранее благодарен.


GlavBOTan   (2004-05-01 21:29:00) [1]

Всем большое спасибо! Пойду разбираться...


wicked   (2004-05-01 14:23:00) [2]

по сабж -
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_waveformatex_str.asp
а также функции mmioOpen/mmioDescend/mmioAscend/mmioRead/mmioClose (линк тот же, там должно быть меню слева)

2 [1] и [2]
и не стыдно неправильную информацию давать?...


konstantinov   (2004-05-01 00:26:00) [3]

DataBytes := Channels;
DataBytes := DataBytes * SampleRate;
DataBytes := DataBytes * Resolution;
DataBytes := DataBytes div 8;
DataBytes := DataBytes * Duration;
DataBytes := DataBytes div 1000;

WaveHeader.Marker1 := 'RIFF';
WaveHeader.BytesFollowing := DataBytes + 36;
WaveHeader.Marker2 := 'WAVE';
WaveHeader.Marker3 := 'fmt ';
WaveHeader.Fixed1 := 16;
WaveHeader.FormatTag := 1;
WaveHeader.SampleRate := SampleRate;
WaveHeader.Channels := Channels;
WaveHeader.BytesPerSecond := Channels;
WaveHeader.BytesPerSecond := WaveHeader.BytesPerSecond * SampleRate;
WaveHeader.BytesPerSecond := WaveHeader.BytesPerSecond * Resolution;
WaveHeader.BytesPerSecond := WaveHeader.BytesPerSecond div 8;
WaveHeader.BytesPerSample := Channels * Resolution div 8;
WaveHeader.BitsPerSample := Resolution;
WaveHeader.Marker4 := 'data';
WaveHeader.DataBytes := DataBytes;

Остальная часть файлы является звуковыми данными.


x3{neon}   (2004-04-30 22:44:00) [4]

Вот заголовок wav файла:
type WAVHeader = record

nChannels       : Word;
nBitsPerSample  : LongInt;
nSamplesPerSec  : LongInt;
nAvgBytesPerSec : LongInt;
RIFFSize        : LongInt;
fmtSize         : LongInt;
formatTag       : Word;
nBlockAlign     : LongInt;
DataSize        : LongInt;
end;

А вот формат:
TWaveHeader = record
Marker1:        Array[0..3] of Char;
BytesFollowing: LongInt;
Marker2:        Array[0..3] of Char;
Marker3:        Array[0..3] of Char;
Fixed1:         LongInt;
FormatTag:      Word;
Channels:       Word;
SampleRate:     LongInt;
BytesPerSecond: LongInt;
BytesPerSample: Word;
BitsPerSample:  Word;
Marker4:        Array[0..3] of Char;
DataBytes:      LongInt;
end;
Может быть поможет


Наверх

Титульная страница Поиск, карта сайта Написать письмо