Форум: "Начинающим";
Текущий архив: 2010.01.17;
Скачать: [xml.tar.bz2];
ВнизСтранности с 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c