| Autor |
Beitrag |
Luzifer666
      
Beiträge: 41
Win XP
D6 Personal, D7 Personal
|
Verfasst: Mi 14.04.04 10:04
Hallo Community!
Kann mir jemand sagen wie ich aus einer Mp3 die Länge herausfinden und in einem Label anzeigen kann?
Beim Abspielen der Mp3 soll ein Timer immer jeweils die Position sekündlich abfragen und in diesem Label anzeigen, sodass eine Art Fortschrittsanzeige in Zahlen rauskommt!
Ich habs zunächst mit dem Naheliegendsten probiert, sprich mit
label1.caption:= (inttostr(MediaPlayer1.Position));
Leider bekomme ich hier keine wirklich sinvollen Zahlen raus. Denkt man sich bei der Zahl die da rauskommt immer die letzten drei Stellen weg, zählt die Zahl tatsächlich die Sekunden des Liedes. Muss ich jetzt einfach die letzten drei Stellen immer abschneiden oder geht das auch anders?
Gruss
Edit: Habe gerade die Eigenschaften "TrackLength" und TrackPosition" gefunden, welche ja zu scheinen passen. Nur wie gebe ich diese aus?
_________________ I can see unknown errors. 8[
Cya & enjoy!
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Mi 14.04.04 12:20
geh doch mal mit dem cursor in die felder tracklenngth oder so und drücke F1. dann schu dir doch mal das an was da steht.
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Luzifer666 
      
Beiträge: 41
Win XP
D6 Personal, D7 Personal
|
Verfasst: Mi 14.04.04 13:48
Hei! Danke erstmal für diene Hilfe!
Also bei Tracklength steht:
| Zitat: |
Delphi-Syntax:
Delphi-Quelltext 1:
| property TrackLength[TrackNum: Integer]: Longint; |
Beschreibung
TrackLength gibt die Länge der Spur an, die im Index TrackNum festgelegt ist.
Die Angabe von TrackLength erfolgt im aktuellen Zeitformat, das in der Eigenschaft TimeFormat festgelegt ist. |
Bei TrackPosition etwas ähnliches.
Das ist ja schon verständlich, aber was bedeutet/wie verwende ich dabei TrackNum? Da blick ich irjendwie nimmer durch... 
_________________ I can see unknown errors. 8[
Cya & enjoy!
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Mi 14.04.04 14:12
du kannst mehrere Dateien in der MediaPlayer kompo wieder geben, tracknum ist einfach die Datei von der du die länge haben willst. in deinem fall 0 !
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Luzifer666 
      
Beiträge: 41
Win XP
D6 Personal, D7 Personal
|
Verfasst: Mi 14.04.04 15:03
Also, ich hab das jetzt mal so gemacht:
Delphi-Quelltext 1:
| label1.caption:= inttostr(MediaPlayer1.TrackLength[0]); |
Aber ich bekomme nur wieder dieselbe komische 6 stellige Zahl raus.
Wenn ich TrackLength durch TrackPosition ersetze kommt das ganze Lied lang nur 0 im Label raus. :/
_________________ I can see unknown errors. 8[
Cya & enjoy!
|
|
Gandalfus
      
Beiträge: 129
|
Verfasst: Mi 14.04.04 15:46
benutze
Mediaplayer.length
und
Mediaplayer.position
und kuck dir mal das an:
Mediaplayer.timeformat
_________________ Wennn man feststellt, dass es drei Moeglichkeiten gibt, die einen Vorgang schiefgehen lassen koennen und man diese ausschaltet, entstehen automatisch drei neue Moeglichkeiten.
|
|
Luzifer666 
      
Beiträge: 41
Win XP
D6 Personal, D7 Personal
|
Verfasst: Do 15.04.04 10:01
Langsam verzweifel ich echt...
Dein Anstoss nach "TimeFormat" zu suchen war gut, ich habe direkt die Anweisung
Delphi-Quelltext 1:
| Mediaplayer1.TimeFormat := tfHMS; |
gefunden, also wie ichs ja haben will mit Stunden Minuten und Sekunden.
Nachdem aber wiedermal diese nervigen Zahlen kamen, hab ich weitergebohrt und schliesslich in der Hilfe dieses schöne Beispiel gefunden:
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:
| type
HMSRec = record Hours: byte; Minutes: byte; Seconds: byte; NotUsed: byte;
end;
procedure TForm1.Button1Click(Sender: TObject);
var TheLength: LongInt; begin
MediaPlayer1.TimeFormat := tfHMS; TheLength := MediaPlayer1.Length; with HMSRec(TheLength) do begin Label1.Caption := IntToStr(Hours); Label2.Caption := IntToStr(Minutes); Label3.Caption := IntToStr(Seconds); end; end; |
Jetz sin die Anzeigen völlig daneben, die Stunden- sowie die Minutenanzeige schwanken unmotiviert von der einen Sekunde auf die andere mal von 50 auf 14, usw. Die Sekundenanzeige ändert sich gar nicht. Was mach ich falsch? 
_________________ I can see unknown errors. 8[
Cya & enjoy!
|
|
Gandalfus
      
Beiträge: 129
|
Verfasst: Do 15.04.04 10:55
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| m, s: string; [...]
MediaPlayer1.TimeFormat := tfHMS; m := IntToStr(Trunc(MediaPlayer1.Length / 60000)); s := IntToStr(Trunc(MediaPlayer1.Length / 1000) - Trunc(MediaPlayer1.Length / 60000) * 60); GZeit := copy('000' + m, length('000' + m) - 1, 2) + ':' + copy('000' + s, length('000' + s) - 1, 2); |
_________________ Wennn man feststellt, dass es drei Moeglichkeiten gibt, die einen Vorgang schiefgehen lassen koennen und man diese ausschaltet, entstehen automatisch drei neue Moeglichkeiten.
|
|
Luzifer666 
      
Beiträge: 41
Win XP
D6 Personal, D7 Personal
|
Verfasst: Do 15.04.04 11:14
Garnich schlecht deine Lösung, funktioniert bestens!
Allerdings macht die Zeit manchmal Hopser (am Anfang des Liedes: 01:11, am Ende: 01:54).
Genauso wenn ich bei m und s "Length" durch "Position" ersetze um hochzuzählen bleibt die Anzeige manchmal eine halbe Sekunde stehen um dann wieder gleich 2 Sekunden gleichzeitig vergehen zu lassen.
Kann das am Timer liegen?
_________________ I can see unknown errors. 8[
Cya & enjoy!
|
|
Gandalfus
      
Beiträge: 129
|
Verfasst: Do 15.04.04 16:12
das kann auch an der mp3 Datei liegen. Bei mir funktioniert das jeden falls fehlerfrei.
_________________ Wennn man feststellt, dass es drei Moeglichkeiten gibt, die einen Vorgang schiefgehen lassen koennen und man diese ausschaltet, entstehen automatisch drei neue Moeglichkeiten.
|
|