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

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

wave в файлах


кекс ©   (2004-02-05 17:57:00) 

Значится такая проблема, есть файл, неважно какой, играющий роль банка или библиотеки ресурсов, в нем лежат разные файлы, в том числе и wave, и вот енти wave мне оттуда надо выдернуть, мож кто сможет помочь кодом али чем; пробовал искать по файлу места где написано 'RIFF', не получилось, да и тем более, что есть другие riff файлы кроме wave, да и потом не знаю как найти конец вава в этом файле.


кекс   (2004-02-06 19:16:00) [1]

Спасибо, извини за непоннятливость, я пропустил, фразу: "по смещению 4 (dword): длина файла, начиная со смещения 8 до конца файла" :)


Digitman   (2004-02-06 12:07:00) [2]


> кекс   (06.02.04 10:15) [4]
> даже если я найду его начало, то как мне найти его конец?


еще раз тебе говорю :
образ стандартного wav-файла начинается с заголовка, в котором :

- по смещению 0 (dword) : 'RIFF'
- по смещению 4 (dword): длина файла, начиная со смещения 8 до конца файла
- по смещению 8 (qword) : 'WAVEfmt '

пусть начало фразы 'RIFF' ты обнаружил по абс.смещению 100 от начала файла-контейнера

смотришь, что лежит по абс.смещению 100 + 8 = 108

если там обнаружена фраза 'WAVEfmt ', значит по абс.смещению 100 находится именно WAV-образ, а не просто некий RIFF-образ

тогда по абс.смещению 100 + 4 = 104 берешь 4 байта, интерпретируешь их как dword и получаешь значение этого dword'а

пусть оно, к примеру, оказалось равным 1000

теперь можно определить границы и размер wav-образа в файле-контейнере :

начало образа = 100

конец образа = 100 + (1000 + 8) - 1 = 1107

полная длина образа = конец образа - начало образа + 1 = 1107 - 100 + 1 = 1008 байт

это так сложно ?


Jel   (2004-02-06 10:18:00) [3]

для поисков конца - Смотри формат .WAV
для поисков начала - в упакованом файле это маловероятно без распаковки. И к тому же, откуда уверенность что звук лежит именно в формате WAV? Ты вроде искал его по заголовкам и не нашел.


кекс   (2004-02-06 10:15:00) [4]

даже если я найду его начало, то как мне найти его конец?


Digitman   (2004-02-06 08:33:00) [5]

на вопрос о поиске и локализации образа waveфайла в файле-контейнере, если он не сжат ничем, я тебе уже ответил. Исчерпывающая инф-ция для решения задачи.

все карты тебе в руки


кекс   (2004-02-05 21:30:00) [6]

какой это файл значения не имеет, смысл в том, чтобы найти заголовок wave файла - это первая проблема, затем найти его конец - вторая проблема, ну и выдрать его оттуда - третья, даже если он сжат - это значения не имеет, он лежит там в виде wave файла, разве что если он не сжат самой библиотекой до неузнаваемости


Digitman   (2004-02-05 18:46:00) [7]


> есть файл, неважно какой


т.е. тебе его формат неизвестен ?
какое хоть расширение у него , можно полюбопытствовать ?


> пробовал искать по файлу места где написано 'RIFF', не получилось


может, файл скомпрессирован каким-то компрессором ... возможно даже нестандартным ... ты же этого заранее не знаешь, как я полагаю


> не знаю как найти конец вава в этом файле


так ты хоть начало найди ... wav-файл начинается с заголовка, в котором :

- по смещению 0 (dword) : 'RIFF'
- по смещению 4 (dword): длина файла, начиная со смещения 8 до конца файла
- по смещению 8 (qword) : 'WAVEfmt '

думаю, что если это какой-то нестанд.формат контейнера, то он скорей всего оформлен в виде некоей библ-ки и должен обязательно содержать какой-то заголовок, описывающий либо все содержимое контейнера либо указывающий на 1-й элемент односвязного списка, из заголовка и следом идущие данные


Наверх

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