Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.11;
Скачать: CL | DM;

Вниз

Вопрос о WAV   Найти похожие ветки 

 
Vovan #2   (2007-01-18 17:46) [0]

С удивлением обнаружил, что при создании WAV при помощи стандратного Sound Recorder указанный размер чанка в Data Chunk не соответсвует действительности.

Такое часто бывает? Как быть?


 
ors_archangel ©   (2007-01-18 23:17) [1]

Возможно чанк сжат, исследуй WaveFormat или как его там, хидеры вобщем


 
Vovan #2   (2007-01-19 00:21) [2]

Нет, это же Sound Recorder. Формат полностью тот.


 
ors_archangel ©   (2007-01-19 02:25) [3]

Ладно, а насколько не соответствует?


 
TRUNK ©   (2007-01-19 13:18) [4]

Напиши размер файла и его первые 44 байта (в 16-ричном формате).


 
Vovan #2   (2007-01-19 14:38) [5]

52 49 46 46 32 50 01 00  57 41 56 45 66 6D 74 20  
12 00 00 00 01 00 01 00  22 56 00 00 44 AC 00 00  
02 00 10 00 00 00 66 61  63 74 04 00              

Размер: 86 074

Собственно, в размер Sound Recorder пишет всегда 291939. Я открывал звуковые файлы из папки Media - у них размер записан корректно (если добавить 44, то будет размер файла).

В принципе, с подобным я встречался с иконками - там у них в описании иконок может быть что угодно, а тащить надо по BitmamInfoHeader. Просто удивляет, что все просмотрщики/проигрыватели как будто ожидают такой падлянки и нормально проигрывают.


 
TRUNK ©   (2007-01-19 16:37) [6]

Вот что я выкопал из приведённых данных:

0: "RIFF"
4: RIFF_Size=86066 // FileSize-8
8: "WAVE"
12: "fmt "
16: ChunkSize=18 // !!!!!!!!
20: Formattype=1 // PCM
22: ChannelCount=1 // Mono
24: SamplesPerSecond=22050
28: BytesPerSecond=44100
32: BlockSize=2
34: BitsPerSample=16
36: 0x0000 // те самые 2 байта на которые увеличен размер chunk"а
38: "fact" // новый чанк, размер которого указан в следующих 4-х байтах


Теперь мои комментарии:
1) RIFF_Size в принципе может быть и меньше, чем FileSize-8;
2) ChunkSize=18, а не 16;
3) Чанк "fact", насколько я помню, это что-то типа тага ID3

Совет: данные ищи не по фиксированному смещению, а по имени чанка "data"; как нашёл имя - следующие за ним 4 байта покажут размер звуковых данных;
Чтобы ускорить поиск:
1) читаешь имя чанка
2) если не подходит, тогда читаешь его размер в следующих 4-х байтах
3) увеличиваешь смещение на этот размер (предполагается, что смещение перед этим этапом указывает на 1-й байт после размера)
4) по новому смещению находится либо имя следующего чанка, либо конец файла

А вообще советую прочитать описание формата RIFF-файла.


 
Сергей М. ©   (2007-01-19 16:39) [7]


> Vovan #2   (19.01.07 14:38) [5]


Что-то я такого не заметил.

Только что проэксмерементировал - мой Sound Recorder (XP HE SP2 + all updates) совершенно корректно сформировал и размер файла и соотв.поле RIFF-заголовка


 
Vovan #2   (2007-01-21 21:26) [8]

>Теперь мои комментарии:
1) RIFF_Size в принципе может быть и меньше, чем FileSize-8;
2) ChunkSize=18, а не 16;
3) Чанк "fact", насколько я помню, это что-то типа тага ID3

Совет: данные ищи не по фиксированному смещению, а по имени чанка "data"; как нашёл имя - следующие за ним 4 байта покажут размер звуковых данных;
Чтобы ускорить поиск:
1) читаешь имя чанка
2) если не подходит, тогда читаешь его размер в следующих 4-х байтах
3) увеличиваешь смещение на этот размер (предполагается, что смещение перед этим этапом указывает на 1-й байт после размера)
4) по новому смещению находится либо имя следующего чанка, либо конец файла

А вообще советую прочитать описание формата RIFF-файла.

Когда читал комментарий - ничего не понял. Сейчас понял в чём ошибка, переделал - и понял комментарий. :)

Всё верно, читал фиксированные 16 байт, а Sound Recorder с чего-то вдруг записал 18 (о чём честно и сообщил). Теперь читаю заголовки, потом данные.



Страницы: 1 вся ветка

Текущий архив: 2007.11.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
15-1190964025
Azize
2007-09-28 11:20
2007.11.11
Почему начальник всегда плохой?


2-1192602435
O.O
2007-10-17 10:27
2007.11.11
ScrollBars в DBGrid


2-1192902797
Jimmy
2007-10-20 21:53
2007.11.11
Изменить цвет отдельных символов Label


2-1192790942
Shakesbeer
2007-10-19 14:49
2007.11.11
Работа с com-портом.


2-1192861122
apic
2007-10-20 10:18
2007.11.11
win+d