Autor Beitrag
Horst
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Do 13.06.02 20:13 
Wie kann ich dem TMediaplayer beibringen das er einen
sound mehrmals (Anzahl angeben) abspielt (play).
Danke für einen hilfreichen tipp.
Arakis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 344



BeitragVerfasst: Do 13.06.02 20:47 
Den offiziellen Weg kenn ich nicht. Ich mach das so, in dem ich permanent abfrage, ob das Liedende erreicht worden ist. Dazu muss man aber Autoopen glaub ich auf false setzten, was wiederrum bedeutet, dass man selbst für das starten, stoppen verantwortlich ist. Es gibt garantiert bessere Lösungen :wink:
Schau dir einfach mal mein DockPlayer(MP3-Player) an:
www.entwickler-ecke.de/viewtopic.php?t=66 (Sparte "Eure Delphi Projekte")
Da habe ich einen TMediaPlayer im Hintergrund laufen, steuere diesen aber durch meine eigenen Buttons.

Bis dann
user defined image

_________________
Mit dem Computer löst man Probleme, die man ohne ihn nicht hätte.
Entwickler von SpaceTrek: The New Empire - Siehe Hompage!
Thunderman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 26



BeitragVerfasst: Do 13.06.02 21:32 
Wenn ich mich jetzt richtig erinner, geht das mit einem OnNotifyEvent und Wait auf True gestellt (oder war es False?). Weiß aber nicht mehr genau wie. Dieses Event wird meine ich ausgelöst, wenn der MediaPlayer was ändert, also anfängt, aufhört, etc.

_________________
Thunderman
Bei schwierigen Problemen entscheiden wir uns einfach für die richtige Lösung. Klar?
DieHardMan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Do 13.06.02 23:21 
nur zur errinerung

Zitat:
OnNotify tritt ein, sobald die Ausführung einer Methode zur Steuerung des Media-Players (Back, Close, Eject, Next, Open, Pause, PauseOnly, Play, Previous, Resume, Rewind, StartRecording, Step oder Stop) beendet ist. Voraussetzung dafür ist allerdings, daß die Eigenschaft vor dem Aufruf der Methode auf True gesetzt wurde. Nach einem OnNotify-Ereignis muß die Eigenschaft Notify erneut auf True gesetzt werden, damit das nächste OnNotify-Ereignis eintreten kann.

_________________
Mahlzeit
webmaker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: Di 18.06.02 20:52 
stand da nicht auch was in der FAQ vom alten DF drin??

_________________
.::Wissen ist Macht, nichts wissen macht nichts::.
Horst Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Mi 19.06.02 21:56 
Thunderman hat folgendes geschrieben:
Wenn ich mich jetzt richtig erinner, geht das mit einem OnNotifyEvent und Wait auf True gestellt (oder war es False?). Weiß aber nicht mehr genau wie. Dieses Event wird meine ich ausgelöst, wenn der MediaPlayer was ändert, also anfängt, aufhört, etc.


das onNotify-Event ist genau richtig: :idea:
Einfach rewind u. play reinschreiben und man hat eine Endlosschleife,
d.h. der Sound wird endlos wiederholt. Man braucht also nur einen
Zähler einzubinden und abzufragen und schon kann man die Wiederholungen begrenzen. Danke für den Tip.
:D
gangstaberber
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 17.03.04 04:26 
hey
könnt ihr mal bite ein beispiel für die endlossschleife reinschreiben
denn bei mir leuft das irgendwie nicht
Mfg Berber

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TForm1.FormCreate(Sender: TObject);
begin

Mediaplayer1.visible:=false;
MediaPlayer1.FileName := 'song.mp3';
MediaPlayer1.Open;
Mediaplayer1.play;
MediaPlayer1.Notify   := True;
  MediaPlayer1.OnNotify := NotifyProc;

procedure TForm1.NotifyProc(Sender: TObject);
begin
  with Sender as TMediaPlayer do
  begin
    case Mode of
      mpStopped:Label1.caption:='stop' // hier soll der song eigetlich neu gestartet werden;
    end;

    Notify := True;
  end;
end;


Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
Horst Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Do 18.03.04 20:27 
Upps, eine neue Anfrage,
ist schon ein Weilchen her, dass ich mich damit beschäftig habe :lol:
Habe mal folgenden Source rausgesucht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
with MediaPlayer1 do
begin
  FileName := cSoundDatei;
  Open;
  Wait := True;
  For i:=1 to 3 do
    begin
    Play;
    if not AutoRewind then Previous;
    end;
 end;


Damit sollte es eigentlich funktionieren...

Gruß

Horst
:wave:

Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
raven_22
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 95

Win XP pro
D7 Enterprise
BeitragVerfasst: Sa 20.03.04 02:40 
Um die Datei automatisch zu wiederholen, braucht man einen Timer.
In diesen Timer wir geprüft, ob die Datei noch läuft oder schon am Ende angekommen ist.
Wenn sie am Ende ist, wird sie zurückgesetzt und neu gestartet.
Nach jedem Durchgang, wird eine Variable um 1 erhöht.
Wenn die Datei dem Wert in Loops entsprechen wiederholt wurde, wird sie gestoppt und alles auf Null zurückgesetzt wird.
Ist eigentlich ganz einfach, wenn man mal nachdenkt.

Gruß raven 8)

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
unit Unit1;

interface

uses
      ...

type
  TForm1 = class(TForm)
    MediaPlayer1: TMediaPlayer;
    Timer1: TTimer;
    Play: TButton;
    Stop: TButton;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure PlayClick(Sender: TObject);
    procedure StopClick(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Loop, Loops: Integer;

implementation

{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
begin
  MediaPlayer1.Visible:=false;
  MediaPlayer1.FileName:='F:\mp3\Kylie_bei_TvTotal_only_001.mp3';
  MediaPlayer1.Open;
  Loop:= 0;   // Wiederholungszähler auf Null setzen
  Loops:= 2;  // Anzahl der Wiederholungen
end;

procedure TForm1.PlayClick(Sender: TObject);
begin
  MediaPlayer1.Play;      // Song abspielen
  Timer1.Enabled:=true;   // Timer starten
  form1.Caption:='Play !'
end;

procedure TForm1.StopClick(Sender: TObject);
begin
  Loop:=0;                   // Wiederholungszähler auf Null setzen
  MediaPlayer1.Stop;         // Song stopen
  MediaPlayer1.Rewind;       // Mp3 auf Anfang zurücksetzen
  Timer1.Enabled:=false;     // Timer stopen
  form1.Caption:='gestopt !'
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if MediaPlayer1.Position = MediaPlayer1.Length then
  // ^^ Prüft ob Song schon zu Ende ^^
  // Wenn Song zu Ende, neu starten

Begin
  MediaPlayer1.Play;   // Song abspielen
  Loop:=Loop+1         // Wiederholungszähler um 1 erhöhen
end;

  if Loop = Loops+1 then
  // Prüfen ob die maximale Anzahl der Wiederholung
  // schon erreicht ist

  begin
  MediaPlayer1.Stop;      // Song stopen
  Timer1.Enabled:=False;  // Timer stopen
  Loop := 0;              // Wiederholungszähler auf Null setzen
  end;
  form1.Caption:=inttostr(loop)+ '. Wiederholung von '+inttostr(loops)+' Wiederholungen !';
end;

end.


Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt

_________________
---_-= raven_22 =-_---
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 20.03.04 12:35 
Ich bin tief getroffen und schockiert! ;-)

Keiner von Euch benutzt Delphi-Tags! Wenn ich Euch noch einmal dabei erwische, bekommt ihr Hausarrest (was einschließt, dass Ihr dann die ganze Zeit im DF rumhängt). :D

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
raven_22
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 95

Win XP pro
D7 Enterprise
BeitragVerfasst: Sa 20.03.04 13:32 
Um in Delphi zu Programmieren, reicht meine Intelligenz noch aus.
Aber was zum Teufel sind Delphi-Tags ? :shock:
Kann man das essen oder ist das eine Komponente ?
Wenn mir eine mal erklären könnte was das ist, würde ich es wohl auch benutzen.
Bitte lasst mich nicht dumm sterben ! :roll:

Gruß raven 8)

_________________
---_-= raven_22 =-_---