Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
3-1233213892
Ruslan777
2009-01-29 10:24
2010.01.17
Клиент серверное приложение!


2-1259598441
xtd
2009-11-30 19:27
2010.01.17
Почему в TWebBrowser не работают JavaScript – ы?


15-1257975683
Германн
2009-11-12 00:41
2010.01.17
Параметр "Рабочая папка" в свойствах ярлыка


1-1233656448
Heady
2009-02-03 13:20
2010.01.17
вывести на печать линию в реальном масштабе


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский