Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проигрыватель WAV на быструю руку 
V
    Опции темы
GuManOiD
Дата 24.1.2007, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 12.9.2005

Репутация: нет
Всего: нет



В общем, есть WAV файл в памяти, нужно написать простейший плеер, выполняющий воспроизведение, остановку, смену позиции в треке (TrackBar в общем smile) этого WAV файла.
PlaySound, ясень пень, не подходит так как нельзя сделать "перемотку" smile
Посоветуйте как это реализовать, просто нужна информация с чего начать поиски.

Критерии: минимум временных затрат smile
PM MAIL   Вверх
Alexeis
Дата 25.1.2007, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



GuManOiD, Есть набор функций WaveOut*** и mmio***, при помощи которых можно это сделать. Я бы помог, но сейчас не успеваю smile потому пошлю в фак
http://vingrad.ru/DELPHI-DLP-001516
http://vingrad.ru/DELPHI-DLP-001515
там еще есть пару тем, которые можно почитать.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
GuManOiD
Дата 25.1.2007, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 12.9.2005

Репутация: нет
Всего: нет



Цитата(Alexeis @  25.1.2007,  16:58 Найти цитируемый пост)
Есть набор функций WaveOut*** и mmio***


Про waveOut читал в Delphi Windows SDK, не нашел как изменять позицию с которой воспроизводить...

А те статьи что ты мне дал, мало к делу относятся smile

Добавлено @ 17:33 
А вот на счет mmio функций спасибо, сейчас там копаю...  smile 
PM MAIL   Вверх
Alexeis
Дата 25.1.2007, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(GuManOiD @  25.1.2007,  17:32 Найти цитируемый пост)
не нашел как изменять позицию с которой воспроизводить...

  Быть такого не может. Во всяком случае позицию в текущем буфере определить можно.

Добавлено @ 17:37 
Цитата

The waveOutGetPosition function retrieves the current playback position of the given waveform-audio output device


Это сообщение отредактировал(а) Alexeis - 25.1.2007, 17:37


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
GuManOiD
Дата 25.1.2007, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 12.9.2005

Репутация: нет
Всего: нет



Ну так, мне нужно ее изменять smile

Проблема в том, что когда некая последовательность байт загружена в MemoryStream, она еще не представляет собой WAV файл, а только после некоторых модификаций, она принимает форму WAVE (это я и имел ввиду под WAV в памяти), и мне нужно проиграть (в том числе + возможность "перемотки") результат модификаций. 
Но я не смог найти ничего кроме PlaySound, что бы проиграть WAV из памяти.
Если это единственная возможность реализовать задумку, то существует ли способ как то вытащить из PlaySound DeviceID для дальнейших манипуляций MCI smile

Добавлено @ 18:05 
Или компонент чтоль какой посоветуйте, главная фишка чтоб из памяти воспроизводил и "перемотка" была smile
PM MAIL   Вверх
Alexeis
Дата 25.1.2007, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



GuManOiD, так в чем проблема? Нужно остановить текущее проигрывание и переместить указатель на аудио данные в новую позицию в буфере и передать этот буфер на проигрывание.

Добавлено @ 18:22 
Цитата(GuManOiD @  25.1.2007,  17:53 Найти цитируемый пост)
Или компонент чтоль какой посоветуйте, главная фишка чтоб из памяти воспроизводил и "перемотка" была

  Попробуй на torry.net там я точно находил нечто похожее, но не факт что было из памяти (возможно прийдется доработать чуток)


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
GuManOiD
Дата 25.1.2007, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 12.9.2005

Репутация: нет
Всего: нет



Цитата(Alexeis @  25.1.2007,  18:17 Найти цитируемый пост)
Нужно остановить текущее проигрывание и переместить указатель на аудио данные в новую позицию в буфере и передать этот буфер на проигрывание.


А можно кода кусок smile 

Мне начинает казаться что я вообще не понял принципа функционирования Multimedia API Windows smile
PM MAIL   Вверх
Alexeis
Дата 25.1.2007, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



GuManOiD, вообще современные программы, такие как винамп, никогда не загружают в буфер весь трек, так как это довольно долго. Они загружают фрагментами по 20-50кб. Во первых нет большой разовой нагрузки ни на проц ни не винт, во вторых чтение с диска таким буфером просто наиболее быстрое. Если не заморачиваться, то можно даже не играться с указателем в буфере и его перемещением, а просто работать с дискретностью 20-50кб. Это совсем небольшой фрагмент и тогда перемещение будет представлять всего навсего подстановку такого буфера в устройство (нужно только определить где будет начинаться блок аудио данных, который нужно передать)
Цитата(GuManOiD @  25.1.2007,  18:48 Найти цитируемый пост)
А можно кода кусок

Эх если успею...


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
GuManOiD
Дата 26.1.2007, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 12.9.2005

Репутация: нет
Всего: нет



Я немного не понял принципа работы WaveOut...., на данный момент разобрался, начал творить smile
Alexeis, респект, с примером не напрягайся, ты и так очень помог smile
После сотни в репу получишь именно ты  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0521 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.