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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопросы по PlaySound и MediaPlayer 
:(
    Опции темы
tavla
Дата 20.8.2007, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



доброго времени суток.

мучаюсь со звуковым оформлением, уже мозги плавятся.
во-первых, не работает простейший код, и почему - непонятно: на форме MediaPlayer и Button, в onClick'е кнопки следующее:

Код

procedure TForm1.PlayClick(Sender: TObject);
begin
MediaPlayer1.Close;
MediaPlayer1.FileName:='sound.wav';
MediaPlayer1.Open;
MediaPlayer1.Play;
end;


если в свойствах MediaPllayer'a устанавливаю dtAutoSelect DeviceType, то вылетает ошибка "не могу определить тип файла по расширению". когда ставлю dtWaveAudio, sound.wav не проигрывается. подскажите, в чем дело?

PlaySound файл проигрывает, но не в порядке очереди (прим.: сначала звук, а уже потом изменение цвета и названия), хотя код такой:

Код

procedure TForm1.PlayClick(Sender: TObject);
begin
Label1.Font.Color:= clRed;
Label1.Caption:= 'Да';
PlaySound('sound.wav', 0, SND_SYNC);

есть способ восстановить последовательность, или это невозможно?

и еще одна проблема с чтением имени wav-файла из реестра и его передачей PlaySound'у. вот код:

Код

procedure TForm1.PlayClick(Sender: TObject);
var
  PSnd: PAnsiChar;

begin
RegFile:= TRegIniFile.Create('Software\MRadio');
StrPCopy(PSnd, RegFile.ReadString('', 'Sound', ''));
PlaySound(PSnd, 0, SND_ASYNC);
RegFile.Free;
end;


ошибка возникает на StrPCopy, но в чем именно проблемма я понять не могу.
PM MAIL   Вверх
ALeXandrK
  Дата 20.8.2007, 02:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(tavla @ 20.8.2007,  01:57)
PlaySound файл проигрывает, но не в порядке очереди (прим.: сначала звук, а уже потом изменение цвета и названия), хотя код такой:

Код

procedure TForm1.PlayClick(Sender: TObject);
begin
Label1.Font.Color:= clRed;
Label1.Caption:= 'Да';
PlaySound('sound.wav', 0, SND_SYNC);

есть способ восстановить последовательность, или это невозможно?

Попробуй так:
Код

procedure TForm1.PlayClick(Sender: TObject);
begin
Label1.Font.Color:= clRed;
Label1.Caption:= 'Да';
Application.ProcessMessages; // Или прорисовку нужно вручную запустить может быть (Label1.Repaint или т.п.);
PlaySound('sound.wav', 0, SND_SYNC);


Прикрепи файл sound.waw

Это сообщение отредактировал(а) ALeXandrK - 20.8.2007, 02:24


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
tavla
Дата 20.8.2007, 02:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ALeXandrK, 
спасибо, Application.ProcessMessages помог.
wav прилагается (я его взял из стандартного XPшного набора - notify.wav переименовал.)

еще вопрос: можно ли в режиме SND_ASYNC узнать время окончания проигрывания файла, а то при SND_SYNC во время звучания невозможно обращаться ни к каким компонентам.

Это сообщение отредактировал(а) tavla - 20.8.2007, 02:59

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  sound.rar 72,33 Kb
PM MAIL   Вверх
Snowy
Дата 20.8.2007, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Цитата(tavla @  20.8.2007,  02:57 Найти цитируемый пост)
можно ли в режиме SND_ASYNC узнать время окончания проигрывания файла
Нет.
Но время можно узнать из самого wav файла. Но придётся запускать таймер.
Либо запускать синхронно, но в параллельном треде.
PM MAIL   Вверх
ALeXandrK
Дата 20.8.2007, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Может тебе лучше для проигрования воспользоваться вот этим: TBassPlayer.
Сам не смотрел, но думаю Snowy ерунду не предложит smile 

Это сообщение отредактировал(а) ALeXandrK - 20.8.2007, 12:15


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

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

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

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

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


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

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


 




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


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

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