Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.008 c
2-1258895265
Виктор
2009-11-22 16:07
2010.01.17
Представление данных базы данных в Word


15-1258525375
snowkam
2009-11-18 09:22
2010.01.17
Данные с ММВБ


3-1233230779
interandry
2009-01-29 15:06
2010.01.17
Суммирование полей


1-1233164051
Дмитрий
2009-01-28 20:34
2010.01.17
Как заменить url в webbrowser?


3-1233431699
123
2009-01-31 22:54
2010.01.17
ПОИСК




   Наверх