Entwickler-Ecke
Multimedia / Grafik - Musik automatisch abspielen
Mattes - Di 24.09.02 14:15
Titel: Musik automatisch abspielen
Bitte erschlagt mich nicht, das Thema gab´s bestimmt schon hundertmal und ich finde es nicht :D
Als relativer Delphi-Anfänger will ich in einer Anwendung Hintergrundmusik laufen lassen.
Wie kann ich z.B. 5 Lieder nacheinander laufen lassen (TMediaPlayer soll automatisch zum nächsten Lied springen und nach dem letzten wieder zum ersten)?
Verwende ich hier eine TListBox und wenn ja, wie sage ich dem MP, dass er die Einträge nacheinander abarbeitet?
Danke schön im voraus :D
SvenAbeln - Di 24.09.02 15:15
Hallo,
TMediaPlayer hat leider keine Playliste, aber er erzeugt ein Ereignis OnNotify wenn Play beendet ist und du kannst dann einfach das nächste Lied starten.
Mattes - Mi 25.09.02 07:36
Danke.
Mit zwei Liedern (eins bei OnCreate der Form, das nächste bei MPNotify) funktioniert das auch wunderbar. Doch wie "geb" ich ihm dann das 3., 4. usw...vor??? :?:
Sephiroth - Mi 25.09.02 08:18
Mach doch einfach ein Array in dem alle Fünf lieder drin stehen und mach einen Zähler der nach jedem fertigen Lied sich um eins erhöht und dadurch den nächsten Eintrag im Array abarbeitet (also nächstes Lied)
LCS - Mi 25.09.02 08:20
Hi
sollte so funktionieren (nicht getestet):
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm2.MediaPlayer1Notify(Sender: TObject); begin if Liste.ItemIndex < Liste.Items.Count - 1 then Liste.ItemIndex := Liste.ItemIndex + 1 else Liste.ItemIndex := 0; MediaPlayer1.FileName := Liste.Items[Liste.ItemIndex]; MediaPlayer1.Notify := True; MediaPlayer1.Play; end; |
Liste ist deine Liste mit den abzuspielenden Dateinamen. Bei jedem NotifyEvent muss die Eigenschaft Notify erneut auf True gesetzt werden, damit der Event erneut aufgerufen wird.
Gruss Lothar
Mattes - Mi 25.09.02 21:35
Danke einstweilen, werde ich morgen gleich mal ausprobieren :)
Mattes - Fr 27.09.02 10:24
Hm, irgendwas mach ich wohl falsch.
Nach dem Ende der ersten MP3-Datei (die von MediaPLayer automatisch bei Programmstart ausgeführt wird) fängt der Markierungsbalken in der Liste an zu rennen, von oben nach unten und wieder von vorne.
Aber der MediaPlayer reagiert darauf nicht... Jemand ne Idee? :?:
Aya - Sa 28.09.02 19:55
Hi,
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm2.MediaPlayer1Notify(Sender: TObject); begin if Liste.ItemIndex < Liste.Items.Count - 1 then Liste.ItemIndex := Liste.ItemIndex + 1 else Liste.ItemIndex := 0; MediaPlayer1.FileName := Liste.Items[Liste.ItemIndex]; MediaPlayer1.Notify := True; MediaPlayer1.Play; end; |
ist ja im grunde fast richtig... es fehlt nur eins, nämlich gibt der Player auch ein Notify wenn er anfängt abzuspielen = Auch dann wird das da oben ausgelöst...
du mußt einfach prüfen ob die NotifyMessage vom MediaPlayer =nmSuccesfull (oder soähnlich, guck mal in die Hilfe, da steht's genau) ist. dann gehts :)
Au'revoir,
Aya
Mattes - Mo 30.09.02 11:16
Der Tip war schon mal gut, Danke.
Aber der Anfänger Mattes muß nochmal auf das Thema zurückkommen :)
Nach Ende des ersten Titels, der im MP unter FileName ausgewählt wurde, beginnt die Auswahl in der Liste zu "laufen" (1.mp3, 2.mp3, 3.mp3 ...)
Doch es wird immer wieder der Titel abgespielt, der im Objektinspektor eingetragen ist (1.mp3).
Ohne eingegebenen FileName im MediaPlayer startet das Programm gar nicht, d.h.dort muß eine "Startdatei" angegeben sein.
D.h.die Dateiaufrufe aus der FileListBox werden nicht in FileName des MP übernommen!?
:?:
mimi - Mo 30.09.02 15:11
Titel: hier ist meine lösung
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| // oben var index:Integer = 0;
procedure PLayListe; var List:TStringList; begin List:=TStringList.Create; list.add('FileName0'); list.add('FileName1'); list.add('FileName2'); list.add('FileName3'); if MediaPlayer1.Mode = MP_Stopped then begin if index = liste.Count -1 then index:=0 else inc(index); MediaPlayer1.FileName:=Liste.Strings[i]; MediaPlayer1.Open; MediaPlayer1.Play; end; end |
die funktion ruft du einfach in einem Timer auf denn Timer stellst du z.B auf 1 und dann sollte es gehen,ich habe es nicht getsetet. Wenn fragen sind dann Frage :)
MFG
mimi
LCS - Mo 30.09.02 15:27
Hi
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| if Liste.ItemIndex < Liste.Items.Count - 1 then Liste.ItemIndex := Liste.ItemIndex + 1 else Liste.ItemIndex := 0; mp.FileName := Liste.Items[Liste.ItemIndex]; mp.Open; mp.Notify := True; mp.Play; |
Voreingestellte Eigenschaften
AutoEnable := True;
AutoOpen := True;
AutoRewind := False;
DeviceType := dfWaveAudio
Und: Es funzt :!: :mrgreen:
Gruss Lothar
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!