![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| Black_Joker |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 9.11.2002 Где: Таганрог Репутация: нет Всего: нет |
Здравствуйте.
Мне надо получить данные из wav. Делаю следующее... В итоге получаю несколько нулевых значений. Подскажите где ошиПка.
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Black_Joker, вы невнимательно читали мою статью, там было описано, что байты в словах в файле записываются в обратном порядке, вначале младшие затем старшие, т.о. указанный код
читает совсем не то что надо. У меня описан рабочий пример чтения Wav файлов. Не обижайтесь на критику но код написан кошмарно нерационально, а поэтому сложно! Предположение о том что ChunkSize = 18 совсем неверно (часто это значение равно 16) Если вам не нравятся потоки, то воспользуйтесь нетипизированными файлами, это куда проще и понятней -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Black_Joker |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 9.11.2002 Где: Таганрог Репутация: нет Всего: нет |
Применил пример из статьи.
Порадовался, что так много сторочек в Мемо1. А как получить данные, так и не понял. Как работать с TMemoryStream??? К примеру, мне нужно вывести данные в текстовый файл. Один столбик - левый канал, другой столбик - правый (если есть). Как это сделать? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Так это было для того чтобы еще раз посмотреть внутреннюю структуру Wav - в реальной программе их надо удалять (в смысле код вывода этих строчек) Из memoryStream данные получить легко
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Black_Joker |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 9.11.2002 Где: Таганрог Репутация: нет Всего: нет |
Не пойму как вывести данные в поле Мемо?
делаю следующее... получаю только данные строк Memo1.Lines.Add('SampleCount: ' + IntToStr(SampleCount)); ... Memo1.Lines.Add('Bits: ' + IntToStr(BitsPerSample)); звук однокональный, 16 бит. Как переделать для 8 бит?
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Это сообщение отредактировал(а) alexeis1 - 26.4.2006, 09:53 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Black_Joker |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 9.11.2002 Где: Таганрог Репутация: нет Всего: нет |
Понятно. Спасибо.
А что у меня в проге не правильно? Почему не выводит данные? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Black_Joker, я ошибся
не b := word(s) div 2; а b := word(s) shr 8; -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Зачем нужен сдвиг на 4 байта после чтения, Кроме того если размер чанка fact больше 8 байт то остальные данные запишутся в пространство занятое любыми другими данными т.е. неизбежно приведет к ошибке! -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Black_Joker |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 9.11.2002 Где: Таганрог Репутация: нет Всего: нет |
признаю свою безмерную тупость и т.д. ...
Нельзя ли довести до ума мою прогу и выложить вновь. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Black_Joker, чтоб исправить программу надо знать источник файлов, какой програмой создаются и какие чанки содержаться, потому что данная програма привязана к какому-то типу wav.
Пример универсальной программы для чтения я приводил... -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Black_Joker |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 9.11.2002 Где: Таганрог Репутация: нет Всего: нет |
Я Ваш, пример и использую.
Данные о файле выдает исправно, а сами данные выдавать отказывается. Об ошибках не сообщает. Просто молчит... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Black_Joker, Что возвращенный поток в себе ничего не содержит?
Добавлено @ 14:58 Вот прикол размер данных проверил, а содержимое нет - и вправду там пусто! -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Я ошибся там совсем не пусто просто в начале тишина
Вот Проект целиком посмотрите... http://alexei-s1.narod.ru/Wav.rar -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Black_Joker |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 9.11.2002 Где: Таганрог Репутация: нет Всего: нет |
Спасибо. Посмотрю.
Большое спасибо. Не совсем понятно по поводу рисования. for i:= 1 to r.Data.Size div 4 do Begin r.Data.readBuffer(W1, 2); r.Data.readBuffer(W2, 2); Form1.Canvas.LineTo(round(100+2000/r.Data.Size*i), round(200+W1/100)); end; Считывается пара переменных, а почему используется только первая? Такая "форма сигнала" нормальная? - речь записанная с микофона. вывод:
Это сообщение отредактировал(а) Black_Joker - 29.4.2006, 09:51 Присоединённый файл ( Кол-во скачиваний: 64 )
primer.rar 25,13 Kb |
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |