![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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-й элемент односвязного списка, из заголовка и следом идущие данные