![]() |
Mediaplayer: Tracklänge und Zeit HH:MM:SS
Hi,
ich habe ein Problem mit dem Anzeigen der Zeit eines Tracks. Ich möchte die Zeit in Stunden, Minuten und Sekunden anzeigen. Dabei habe ich schon folgendes ausprobiert, doch ich bekomme keine richtige Zeit:
Delphi-Quellcode:
Ich habe es mit einer Midi Datei ausprobiert, die 9 Sekunden lang ist. Als Länge wird mir aber ein Integerwert von 126 angegeben. Nun ist 126 weder die Angabe der Länge in Millisekunden noch was anderes. Was mache ich falsch?
type
HMSRec = record Hours: byte; Minutes: byte; Seconds: byte; NotUsed: byte; end; MP.TimeFormat:=tfMilliseconds; with HMSRec(MilliSeconds) do //MilliSeconds bekommt die Länge des Tracks über MP.Length begin Label1.Caption:=Format('%2.2d:%2.2d:%2.2d', [Hours, Minutes, Seconds]); end; Gruß Mazel |
Re: Mediaplayer: Tracklänge und Zeit HH:MM:SS
Hi,
das ist nur schnell hingepfuscht, müsste aber gehen:
Delphi-Quellcode:
function ms_to_time(ms: Integer): string;
var hour, min, sec: Integer; begin hour := ms div (1000 * 60 * 60); if hour > 0 then ms := ms - (1000 * 60 * 60); min := ms div (1000 * 60); if min > 0 then ms := ms - (1000 * 60); sec := ms div 1000; result := format('%2.2d:%2.2d:%2.2d',[hour, min, sec]); end; |
Re: Mediaplayer: Tracklänge und Zeit HH:MM:SS
ich würde sie so unsetzen:
Delphi-Quellcode:
function ms_to_String(ms Integer): String;
var Std, Min, Sek : Integer; Seks : Integer; begin Seks := ms div 1000; Sek := Seks mod 60; Min := Seks div 60; Std := Min div 60; Min := Min mod 60; Result := Format('%.2:%.2:%.2', [Std, Min, Sek]); end; |
Re: Mediaplayer: Tracklänge und Zeit HH:MM:SS
Hi,
leider funktionieren beide Codes nicht. Nochmal zu der 9 Sekunden *.midi. Wenn sie 9 Sekunden lang ist (so sagen das die anderen Player wie MediaPlayer oder Winamp), dann müssten das doch 9000 Millisekunden sein, aber in MP.Length steht nur ein Wert von "126". Dieser Wert stimmt nicht. Ich habe aber den MediaPlayer im OnCreate Ereignis folgendes zugewiesen:
Delphi-Quellcode:
aber es geht nicht für 9 Sekunden kommt immer wieder eine Länge in Millisekunden von "126".
MP.TimeFormat:=tfMilliseconds;
Gruß Mazel |
Re: Mediaplayer: Tracklänge und Zeit HH:MM:SS
Ich kenne mich zwar nicht direkt mit MIDIs aus, aber kann es sein, dass es in der MIDI-Datei Wiederholungen gibt, die der TMediaPlayer nicht auswertet? Und dass das Stück inkl. der Wiederholungen 9sek lang ist, ohne diese aber nur 126ms?
Ist nur 'ne Vermutung. |
Re: Mediaplayer: Tracklänge und Zeit HH:MM:SS
ich glaube, dass sind die anzahl der samples (oder wie das da heißt) der MIDI datei...
|
Re: Mediaplayer: Tracklänge und Zeit HH:MM:SS
Hi,
ok, dann muss es aber doch eine andere Möglichkeit geben mit Hilfe des MediaPlayers die Länge eines Tracks (in dem Fall einer midi) heraus zubekommen. Gruß Mazel |
Re: Mediaplayer: Tracklänge und Zeit HH:MM:SS
Hallo Mazel,
wenn du bei TMediaPlayer "Millisekunden" als Zeitformat einstellst, erhältst du auch Millisekunden und keinen HMS-Record. :wink: Die Umwandlung der Zeit in ein lesbares Format könntest du mit der Funktion ![]()
Delphi-Quellcode:
Gruß Hawkeye
sLength := FormatDateTime('hh:nn:ss', MediaPlayer.Length / 1000 / 86400);
sPosition := FormatDateTime('hh:nn:ss', MediaPlayer.Position / 1000 / 86400); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz