Autor Beitrag
Luzifer666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 41

Win XP
D6 Personal, D7 Personal
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 41

Win XP
D6 Personal, D7 Personal
BeitragVerfasst: Mi 14.04.04 13:48 
Hei! Danke erstmal für diene Hilfe!

Also bei Tracklength steht:
Zitat:

Delphi-Syntax:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 41

Win XP
D6 Personal, D7 Personal
BeitragVerfasst: Mi 14.04.04 15:03 
Also, ich hab das jetzt mal so gemacht:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 129



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 41

Win XP
D6 Personal, D7 Personal
BeitragVerfasst: Do 15.04.04 10:01 
Langsam verzweifel ich echt... :(

Dein Anstoss nach "TimeFormat" zu suchen war gut, ich habe direkt die Anweisung
ausblenden 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:
ausblenden 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

  { Zeitformat festlegen, tfHMS wird von manchen Geräten nicht unterstützt }

  MediaPlayer1.TimeFormat := tfHMS;
  { Länge des geladenen Mediums speichern }
  TheLength := MediaPlayer1.Length;
  with HMSRec(TheLength) do { TheLength in HMSRec-Record umwandeln }
  begin
    Label1.Caption := IntToStr(Hours); { Stunden in Label1 anzeigen }
    Label2.Caption := IntToStr(Minutes); { Minuten in Label2 anzeigen }
    Label3.Caption := IntToStr(Seconds); { Sekunden in Label3 anzeigen }
  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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 129



BeitragVerfasst: Do 15.04.04 10:55 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
  m, s: string;
[...]

//Anzeige im Format: 00:00

  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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 41

Win XP
D6 Personal, D7 Personal
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 129



BeitragVerfasst: 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.