![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 17.05.2010
Сообщений: 59
|
![]()
Подскажыте плиз как правильно прочитать wav файл и одержать массив значений. Как правильно считать заголовок файла я знаю.
Подскажыте как считывать данные с блока data и проеобразовать их в массив чисел. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
не, считывать байты вы должны сами уметь. Могу только подсказать, что удобнее будет считавать данные порциями, например по 1 секунде (хотя это зависит от задачи):
PHP код:
PHP код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
не, считывать байты вы должны сами уметь. Могу только подсказать, что удобнее будет считавать данные порциями, например по 1 секунде (хотя это зависит от задачи):
PHP код:
PHP код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
> проеобразовать их в массив чисел
а в файле по-вашему что, буквы? Там и так числа, ничего преобразовывать не надо, нужно только разрядность знать. Если заголовок прочли, то имеете смещение в файле к первому сэмплу (обычно это смещение = 44, но не всегда). Если сэмплы 8-битные, то каждый отсчёт представлен как значение от 0 до 255, где 128 соответствует тишине. Если сэмплы 16-битные (чаще всего), то каждый отсчёт представлен как значение от -32768 до +32767, тишина = 0. Если каналов несколько (стерео или 5.1), то каналы чередуются. Если в заголовке формат не PCM, то сэмплы нужно будет разжать ACM кодеком, указанным в заголовке.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 17.05.2010
Сообщений: 59
|
![]()
veniside спасибо за ответы, но...
Код:
Подскажыте как имея эти данные считывать сэмплы, а то я сам не догоняю. Если можете, то приведите кусок кода. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
круто форум заглючило, пост #2 был вобще-то написан в ответ на пост #5.
прям "назад в будущее" какое-то.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 17.05.2010
Сообщений: 59
|
![]()
veniside спасибо, буду разбиратся
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 17.05.2010
Сообщений: 59
|
![]() Код:
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 17.05.2010
Сообщений: 59
|
![]()
Уже сам разобрался.
Я так понимаю что записывать данные в файл нужно так же как и считывать, тоесть при помощи этого самого массива значений buf? |
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
А что, сэмп не может быть нулевым? Как раз в начале файла вполне логично наличие тишины. Нет, может и в коде ошибка, конечно, но почему сразу думать, что что-то не так? Вы пройдитесь по всем сэмплам, если весь кусок будет состоять из нулей, то тогда будет странно.
Ну и неплохо бы проверять/выводить: 1) чему равно size (чтобы убедиться, что заголовок в header правильно прочитан) 2) header.wFormatTag = 1 (без компрессии) 3) header.bitsPerSample = 16 (иначе вместо short нужен unsigned char) 4) fread() не вернул ошибку. Это как минимум, чтобы не гадать, откуда нули. > Я так понимаю что записывать данные в файл нужно так же как и считывать, тоесть при помощи этого самого массива значений buf? если после обработки размер данных не меняется, то вполне можно.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
WAV-файл | b2soft | Общие вопросы .NET | 4 | 09.02.2011 08:02 |
играть сначала 1.wav потом 2.wav | mma | Мультимедиа в Delphi | 9 | 23.12.2010 20:04 |
читание гипертекстовых файлов | joker007 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 20.05.2010 04:55 |
Конвертация аудиофайлов WAV -> WAV | namestnik | Помощь студентам | 2 | 27.05.2009 23:05 |
Wav-ы в *.res | Altera | Общие вопросы Delphi | 12 | 22.09.2008 19:01 |