Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.01.17;
Скачать: CL | DM;

Вниз

Странности с TMediaPlayer   Найти похожие ветки 

 
Zalm ©   (2009-11-06 20:58) [0]

У меня возникла проблема, которую я никак не могу решить. Начну с того что есть. Есть модуль(класс) который имеет процедуры PlayNext, Stop, Start и тд, все эти процедуры вызывает командный обработчик TCP клиента. Всё бы ничего, приходит команда - включается песня. Однако как только она заканчивается всё замолкает и конечно же дальше не играет. Я через MediaPlayerNotify сделал если песня кончилась, включить следующую из списка, следовательно просто вызов той же процедуры PlayNext. А теперь ближе к делу. Когда приходит команда клиенту, он вызывает PlayNext и происходит следующее, MediaPlayer включает декодер и песенка начинает играть, если приходит опять такая же команда, автоматически выключается предыдущий декодер и включается новый, таким образом всё круто работает. Если я использую MediaPlayerNotify, то по завершению песни, новая-то конечно же включается, при вызове всё той же PlayNext, но уже включается новый декодер, при том что старый так не выключен! Если прислать команду остановить песню, то клиент её попытается остановить, но только ту которая была запущена не из нотифи.. Те песни которые были запущены из нотифи, ими вобще никак нельзя управлять, они себе сами играют и всё. ЕЩе такой файт замечен, что если песня запущена из собыятия Notify, то есть автоматически, и при этом прислать клиенту команду на вызов PlayNext процедуры, опять включается уже опять новый декодер, и обе песни играют вместе, а в итоге звуковой хлам)))
А если нотифи не использовать а каждый раз слать команду клиенту, то всё работает хорошо, всё само включается и выключается когда надо. Вот куски кода:


procedure TForm1.next_play(ASender: TIdCommand);
begin
 Volume.Play_next;
end;


Нотифи:

procedure TForm1.MediaNotify(Sender: TObject);
var
 MP: TMediaPlayer;
begin
if Media.NotifyValue=nvSuccessful then Volume.PlayNext;
end;


Вот что вызывается с тех двух мест

Procedure _Volume.Play_next;
begin
 inc(Volume.Play_index)
 Play(Mp3List.Strings[Volume.Play_index]);
end;

Procedure _volume.Play(file_: string);
begin
if FileExists(file_) then
  Form1.Media.FileName:=file_
else exit;
Try
 form1.Media.Stop;
 Form1.Media.Close;
except
 exit;
End;
try
 form1.Media.Open;
Except
 exit;
end;
Form1.Media.Play;
end;


 
Zalm ©   (2009-11-09 17:35) [1]

эх... и это никто не знает...(


 
Zalm ©   (2009-11-28 02:52) [2]

Куда же пропал Мастер Сергей.... ^^



Страницы: 1 вся ветка

Текущий архив: 2010.01.17;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
15-1258462233
kiligin
2009-11-17 15:50
2010.01.17
преобразование звука из мат функций


2-1258722733
Andrewtitoff
2009-11-20 16:12
2010.01.17
Форма


2-1258622328
Игорь
2009-11-19 12:18
2010.01.17
Альтернатива OpenProcess


2-1257762982
Zalm
2009-11-09 13:36
2010.01.17
ПРоблема с формой в длл


15-1258634939
И. Павел
2009-11-19 15:48
2010.01.17
Брак или клавиатура с ИИ?