Einzelnen Beitrag anzeigen

FatFranky

Registriert seit: 20. Nov 2003
Ort: Kiel
22 Beiträge
 
Delphi 7 Enterprise
 
#1

TMediaPlayer aktualisiert nicht immer das Bild

  Alt 2. Dez 2003, 16:42
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;
  Mit Zitat antworten Zitat