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;