Autor Beitrag
tom1266
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Do 14.08.08 13:24 
Hallo Leutz, ist es möglich im Delphi Mediaplayer mehrere Film nahtlos hintereinander abspielen zu lassen (eine Art Playlist), aber ohne das der Mediaplayer sich nach jedem Film schließ und wieder geöffnet wird?

Über Hilfen würde ich mich freuen
Gruß Tom
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 14.08.08 13:51 
ich weiß nicht ob es dafür eine Fuktion gibt.ich glaube du willst ,dass schnittstellen zwischen den filmen ineinernander übergehen ,richtig?
Hack Gott
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 409

Windows Vista
Delphi 2005 Personal, Delphi 7
BeitragVerfasst: Do 14.08.08 14:22 
Glaube ich nicht...
Erstell dir doch eine ListBox und schreib dort alle Titel rein. Und dann spielst du einfach den nächsten Eintrag ab, wenn der Film fertig ist.
Ich denke doch mal, dass es eine OnFilmEnde (o.ä) :D gibt... oder?

Arne

PS: Gerade kein Delphi zur Hand sonst würde ich nachschauen

_________________
"Je mehr Käse, desto mehr Löcher; Je mehr Löcher, desto weniger Käse. Daraus folgt: Je mehr Käse desto weniger Käse!"
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 14.08.08 19:26 
Zitat:
ch denke doch mal, dass es eine OnFilmEnde (o.ä) :D gibt... oder

nein gibs nicht. :wink:
DHE
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 37

Win XP, Ubuntu 9.04
Delphi 7 PE; Delphi 2010 Prof (Dank AGS 2009 ;-) )
BeitragVerfasst: Do 14.08.08 20:24 
user profile iconj.klugmann hat folgendes geschrieben:
Zitat:
ch denke doch mal, dass es eine OnFilmEnde (o.ä) :D gibt... oder

nein gibs nicht. :wink:


Und was ist mit OnNotify ?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
      if MediaPlayer1.Position = MediaPlayer1.Length then PlayNextMovie();
end;


Und mit PlayNextMovie() einfach den nächsten Film aus der PlayList in den MediaPlayer laden.


Und das mit dem Öffnen und Schließen meinst du wohl das der Film in einem eigenen Fenster angezeigt wird. Du kannst doch über die MediaPlayer-Eigenschaft Display das Bild auf jede beliebige Komponente wie z.B einem Image oder einem Panel legen.


Zuletzt bearbeitet von DHE am Do 14.08.08 20:29, insgesamt 1-mal bearbeitet
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Do 14.08.08 20:29 
Doch gibts:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
begin
  caption := 'start';
  mediaplayer1.Notify := true;
  mediaplayer1.Play;
end;

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
  caption := 'stop';
end;


// ups, zu spät ^^

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
tom1266 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Fr 15.08.08 07:27 
Danke für die Bsp. hat jemand einen kompletten Code welchen ich mal testen kann?

Gruß Tom
Hack Gott
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 409

Windows Vista
Delphi 2005 Personal, Delphi 7
BeitragVerfasst: Fr 15.08.08 08:00 
user profile icontom1266 hat folgendes geschrieben:
Danke für die Bsp. hat jemand einen kompletten Code welchen ich mal testen kann?


Also ich muss dich doch sehr bitten!!!
Jetzt hast du doch alles was du benötigst mit dem onNotify,.. musst du die sachen nur noch kombinieren und filme in deine playlist reinschreiben!
Du kannst nicht erwarten, nur weil du zu faul bist, dass sich jetzt jemand anderes für dich hinsetzt und dir dein programm schreibt, du dir das kurz anschaust, nickst und sagst ja, so hätte ich das auch gemacht und es dann aosgar noch als dein programm verkaufst! (also nur im übertragenen sinne verkaufen).
Tut mir leid, aber da hab ich kein verständniss dafür. Außerdem lernst du durch sowas dann ja gar nichts...

_________________
"Je mehr Käse, desto mehr Löcher; Je mehr Löcher, desto weniger Käse. Daraus folgt: Je mehr Käse desto weniger Käse!"
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 15.08.08 08:01 
Zitat:

j.klugmann hat folgendes geschrieben:
Zitat:
ch denke doch mal, dass es eine OnFilmEnde (o.ä) :D gibt... oder

nein gibs nicht. :wink:


Und was ist mit OnNotify ?

Stimmt.Hatte leider damals kein Delphi zur Hand. :cry:
tom1266 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Fr 15.08.08 08:07 
Titel: mediaplayer
Ja ist schon klar, sorry !

Hier mal den Code den ich versuche umzubauen:

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:
83:
  public
    { Public-Deklarationen }
    Procedure AddToPlayList(s:string);
    procedure PlayFile(songNumber: integer);  // deklaration von playfile ändern, hier das 1. mal
    Procedure WMDropFiles (Var aMsg: tMessage);  message WM_DROPFILES;
  end;

var
  Form1: TForm1;
  playList: TStringList;
  CurrentSong: integer = -1;  // neue globale variable um uns das aktuelle lied zu merken

implementation

{$R *.dfm}

Procedure TForm1.WMDropFiles (Var aMsg: tMessage);
Var
  Idx, Size, FileCount: Integer;
  Filename: pChar;
Begin
  Inherited;
  FileCount := DragQueryFile (aMsg.WParam, $FFFFFFFF, nil, 255);
  For Idx := 0 To FileCount -1 Do Begin
    Size := DragQueryFile (aMsg.WParam, Idx, nil, 0) + 1;
    Filename := StrAlloc (Size);
    If DragQueryFile (aMsg.WParam, Idx, Filename, Size) = 1 Then  { nothing }
    else  AddToPlayList (pChar (Filename));
    StrDispose (Filename);
  End;
  DragFinish (aMsg.WParam);
End;

Procedure TForm1.AddToPlayList(s:string);
begin
   playList.Add(s);
   ListBox1.Items.Add(extractfilename(s));
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
   DragAcceptFiles (Handle, True);
   playList := TStringList.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
   playList.Free;
end;

procedure TForm1.PlayFile(songNumber: integer);
begin
   if fileexists(Playlist.Strings[songNumber]) then begin
     CurrentSong := songNumber;
     mediaplayer1.Close;
     mediaplayer1.FileName := Playlist.Strings[songNumber];
     mediaplayer1.Open;
     mediaplayer1.play;
   end;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var i : integer;
begin
  for i := 0 to listbox1.Count - 1 do
    if listbox1.Selected[i] then break;
    PlayFile(i);
end;

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
   if mediaplayer1.Position = mediaplayer1.Length then begin
     Listbox1.Selected[currentSong] := false;
     inc(currentSong);
     if currentSong < Playlist.Count then
     else currentsong := 0;
     PlayFile(CurrentSong);
     Listbox1.Selected[currentSong] := true;
   end;
end;

end.



Hier habe ich halt das Problem, dass nach jedem Film der MP geschlossen und wieder geöffnet wird, was kann ich ändern um die Filme nacheinander ohne pause und ruckeln abspielen lassen zu können?

Gruß Tom

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 15.08.08 08:12 
Du könntest 2 nehmen. der einer spielt den ersten Film der andere ist inaktiv und fängt kurz
bevor das 1. video fertig ist an zuspielen.Kurz heißt in diesem fall dann 1-2 sek. .
Anscchließend ist es genau andersherum. :lol: