Вниз
Скачать: 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-1258720030
Andrewtitoff
2009-11-20 15:27
2010.01.17
VBA => Delphi


15-1257802926
DVM
2009-11-10 00:42
2010.01.17
Забавный ролик с Гейтсом и Балмером


15-1257529216
Kolan
2009-11-06 20:40
2010.01.17
А как добавить tags, branches и trunc в уже существующий svn?


15-1258322580
POOP
2009-11-16 01:03
2010.01.17
Чем можно уменьшить скорость аудио?


15-1258526556
ZeroDivide
2009-11-18 09:42
2010.01.17
Исключить упоминание о боге из гимна




   Наверх