Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TMediaPlayer aktualisiert nicht immer das Bild (https://www.delphipraxis.net/12695-tmediaplayer-aktualisiert-nicht-immer-das-bild.html)

FatFranky 2. Dez 2003 15:42


TMediaPlayer aktualisiert nicht immer das Bild
 
Ein neuer Tag, eine neue Frage.
Mein Mediaplayer spielt wunderbar Avi/ Mpg/ wmv
auslesen von length und position..... klappt auch.

Zum Vorspulen habe ich Frames := 100; gesetzt, geht auch.

Zur Funktion:
Nach dem öffnen eines Videos wird mir das erste Bild angezeigt und nach betätigung des Play Button läuft der Film.
Nach betätigen von Vorspulen/ Rückspulen sehe ich ein Bild 100 Frames weiter.Nach Play läuft es dann an dieser Pos. weiter.

Alles Wunderbar bei avi/wmv/mpg1

Nun mein Problem: Bei einem mpg2 file

wird das Video geladen, aber das erste Bild erst nach play angezeigt, ebenso nach Vor-/rückspulen, muß ich erst auf play drücken um zu sehen wo ich bin.

Wiso?

Hier noch ein bischen vom relevanten code:

Delphi-Quellcode:
implementation

{$R *.dfm}

function fzeit (x :Integer):string;
  var h, m, s, temp :integer;
begin
  temp := x mod 3600;
  h := x div 3600;
  m := temp div 60;
  s := temp mod 60;
  Result := Format('%.2d:%.2d:%.2d',[h, m, s]);
end;

procedure TForm1.ButtonStartClick(Sender: TObject);
begin
  with MediaPlayer1 do
  begin
    TimeFormat := tfMilliseconds;
    //FileName := 'C:\temp\test2\CMOS.mpg';
    if opendialog1.execute
      then Filename:=opendialog1.Filename;
    Open;
    StartPos := TrackPosition[1];
    EndPos := TrackLength[1];          // Headerinfo: Länge
    LabelStartPos.Caption := fzeit(StartPos);
    LabelEndPos.Caption := fzeit(EndPos div 1000);     //Länge in hh:mm:ss
    DisplayRect := Rect(0, 0, 329, 265); //wiedergabeposition im Rect.
    Frames := 100;             // Anz.Frames die Vor u. Rueck gesprungen wird.
    LabelFilename.Caption := opendialog1.filename;
    //LabelFilename.Caption := FileName;
    TrackBar1.Max := EndPos div 1000;
    Enabled := true;

  end;
 
  ButtonStart.Enabled := false;
  ButtonReset.Enabled := true;
  ButtonLoeschen.Enabled := true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  labelZeit.Caption := fzeit(Mediaplayer1.Position div 1000);
  trackbar1.Position := Mediaplayer1.Position div 1000;
  mediaplayer1.StartPos := Mediaplayer1.Position;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  LabelTrackPos.Caption := intToStr(TrackBar1.Position);
end;

dizzy 2. Dez 2003 20:31

Re: TMediaPlayer aktualisiert nicht immer das Bild
 
mpeg2 ist schon ein ziemlicher Brocken. Ich denke es liegt eher an deinem mpeg2-Codec, als an TMediaPlayer, da der auch nur das darstellt, was ihm der Codec liefert. Und so RICHTIG vernünftige mpeg2-Codecs habe ich auch noch nicht wirklich gesehen. Zumindest keine freien. WinDVD etc. haben einen fest einprogrammiert, und der musste auch für teuer Geld lizensiert werden. (DVD's sind als mpeg2 hinterlegt meine ich.)
Ich würde mich also an deiner Stelle nochmal nach einem anderen Codec umsehen, und dann schauen, ob's geholfen hat. Wenn nicht, dann weiss ich auch nicht weiter ;).
Aber so wirklich schlimm ist das Problem ja nicht, oder!? :roll:


n8i,
dizzy

FatFranky 3. Dez 2003 08:21

Re: TMediaPlayer aktualisiert nicht immer das Bild
 
Moin dizzy,

ja Du hast recht DVD nutzt mpg2 codecs, die ich auch auf meinem Rechner Installiert habe.
=> Win MediaplayerS9 zeigt die Filme problemlos an.

Und ich denke TMp greift auf diese zu, wenn sie erforderlich sind.
Oder muß ich die expliziet in Delphi bekannt geben?

Zitat:

Aber so wirklich schlimm ist das Problem ja nicht, oder!?
Nun ja, beim start nicht unbedingt, schließlich weiß ich ungefähr welchen Film ich ausgewählt habe.
Allerdings wenn ich Vorspule wäre es schon schön zu sehen wo ich mich akt. befinde.

Ich werde dran bleiben.

cu FF

dizzy 3. Dez 2003 18:16

Re: TMediaPlayer aktualisiert nicht immer das Bild
 
Naja gut, dann könnte es sehr wohl an TMediaPlayer liegen. Der Player von MS nutzt nämlich DirectX zum Zeichnen des Overlays, und TMediaPlayer ist ein MCI-Gerät. Da kann es durchaus sein, dass die sich recht unterschiedlich verhalten. Haste Recht.

Nur da hab ich dann, wie gesagt, leider auch keine Idee mehr. Bleibt mir nur noch zu sagen: Viel Glück!? :roll: 8)




gruss,
dizzy


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz