Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];

Вниз

Вопрос о 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 вся ветка

Форум: "Media";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.07 c
2-1192719699
webpauk
2007-10-18 19:01
2007.11.11
ScrollBar


2-1192950932
hT9
2007-10-21 11:15
2007.11.11
Listview повторы


11-1175523578
Fregl
2007-04-02 18:19
2007.11.11
Поддержка MySQL


2-1191676736
Jiku
2007-10-06 17:18
2007.11.11
Как определить адрес в строке активного окна проводника


4-1175083353
Darth Avenger
2007-03-28 16:02
2007.11.11
Получить изображение с USB-камеры





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский