AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Länge (Zeit) eines MP3-Liedes?
Thema durchsuchen
Ansicht
Themen-Optionen

Länge (Zeit) eines MP3-Liedes?

Ein Thema von Sharky · begonnen am 12. Aug 2002 · letzter Beitrag vom 26. Sep 2004
Antwort Antwort
Seite 3 von 3     123   
Muetze1
(Gast)

n/a Beiträge
 
#21

Re: Länge (Zeit) eines MP3-Liedes?

  Alt 25. Sep 2004, 21:33
Moin!

Ein Beispiel zu der Berechnung bei CBR und teilweise bei VBR gibt meine MP3 Tag Lib auf meiner HP. Nur mal so als Tipp / mögliche Hilfe...

MfG
Muetze1
  Mit Zitat antworten Zitat
bigg
(Gast)

n/a Beiträge
 
#22

Re: Länge (Zeit) eines MP3-Liedes?

  Alt 25. Sep 2004, 23:12
n'abend,

ich hab mir mal die ersten Beiträge durchgelesen und mußte erstaunliches feststellen:
Niemand von den sogenannten Delphi-Experten hier, konnte einen direkten Weg zur Ermittlung
der Länge einer MP3-Datei anbieten! (Ausgenommen Muetze )

Wenn ich schon höre pack dir die "Mediaplayer-Komponente" auf dein Formular oder
guck dir mal das "Winamp-SDK" an, dann bekomm ich Gänsehaut.

1.Nicht jeder hat Winamp und nicht jeder möchte Winamp extra installieren.
2.Beim Media Player ist es ähnlich, ist kein Media Player vorinstalliert, wird auch nichts ausgelesen.


Lösung:
Zur Emittlung der Spielzeit einer MP3, kann man die MPegUnit verwenden:
Diese benötigt nur 3 weitere Units und ist absolut kostenlos.
Ein kleines Beispiel ist auch dabei, wie man die Spielzeit ermittelt.
Die Lib kann aber auch sämtliche Tag-Informationen auslesen.
Angehängte Dateien
Dateityp: zip mp3lib.zip (22,1 KB, 54x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von edosoft
edosoft

Registriert seit: 27. Okt 2003
Ort: Wehingen
258 Beiträge
 
Turbo Delphi für Win32
 
#23

Re: Länge (Zeit) eines MP3-Liedes?

  Alt 26. Sep 2004, 00:22
klasse...
wenn du aber mal nachgucken würdest würdest du sehen dass die unit die länge GENAU gleich berechnet.
---
MPEGaudio.pas -> function TMPEGaudio.FGetDuration: Double;
[..]
Result := (MPEGSize - FFrame.Position) / GetBitRate(FFrame) / 1000 * 8;
[..]
---

und mit dieser methode wirds auch net genau wenn du ein lied mit variabled bitrate hast.

das einzige was du in so einem fall machen kannst ist:
du liest alle frames und überprüfst von jedem einzelnen die bitrate und so kannst du von jedem einzelnen frame die länge berechnen und alle zusammenzählen. Dann wirds auch mit VBR genau und so wirds winamp wahrscheinlich auch machen.

bei CBR (konstante bitrate) reichts hingegen wenn du von einem frame die bitrate einliest (da alle frames die gleiche bitrate haben) und dann kannst du entweder:
-alle frames bloß zählen und mit der errechneten framelänge vom ausgangsframe multiplizieren oder
-einfach mal annehmen dass keine daten wie text oder so zwischen den frames ist und alles was vor dem ersten frame kommt (id3 v.2 oder so) wegschneiden und, falls vorhanden, den id3 v.1 tag (die letzten 128 byte)

die 2. möglichkeit geht halt schneller weil du nicht erst noch den letzten frame suchen musst.

und die funktion benützt wie gesagt auch die 2. möglichkeit:
(MPEGSize - FFrame.Position) / GetBitRate(FFrame) / 1000 * 8;

MPEGSize = Dateigröße
FFrame.Position = Position vom 1. frame(alles was davor ist ist KEIN audio (z.b. id3 v.2)
GetBitRate(FFrame) = Bitrate vom 1. frame
/ 1000 = kb->mb
* 8 = mBit -> mByte


achja apropos id3 v.1:
davor steht noch:
if FID3v1.Exists then MPEGSize := FFileLength - FID3v2.Size - 128;
sloo heisen:
wenn id3 tag existiert werden von der dateigröße noch mal 128 bytes weggeschnitten (id3 v.1 hat immer 128 byte)
Dominik Weber
www.edo-soft.com
  Mit Zitat antworten Zitat
Benutzerbild von edosoft
edosoft

Registriert seit: 27. Okt 2003
Ort: Wehingen
258 Beiträge
 
Turbo Delphi für Win32
 
#24

Re: Länge (Zeit) eines MP3-Liedes?

  Alt 26. Sep 2004, 00:27
achja und um nochmal auf deine rüde sprache, bigg, zurückzukommen:
weist du überhaupt so viel von den themen um urteilen zu können was ein "direkter weg" ist?

und wenn ich mir ne unit runterladen würd und net mal wüsste wie die des berechnet würd ich net behaupten dass andere, die den KERN der unit(für diesen zweck) schon wissen, keine ahnung von dem zeugs hätten...

denn mei9ner meinung nach IST das der direkte weg um die liedlänge rauszufinden(das halt keinen direkteren gibt) und da du dich ja wohl kaum so gut auskennst wie die meisten hier brauchst bloß net so von den experten hier reden! die haben wohl zehnmal mehr drauf als du.
Dominik Weber
www.edo-soft.com
  Mit Zitat antworten Zitat
Kernel32.DLL
(Gast)

n/a Beiträge
 
#25

Re: Länge (Zeit) eines MP3-Liedes?

  Alt 26. Sep 2004, 00:51
Zitat von edosoft:
achja und um nochmal auf deine rüde sprache, bigg, zurückzukommen:
weist du überhaupt so viel von den themen um urteilen zu können was ein "direkter weg" ist?

und wenn ich mir ne unit runterladen würd und net mal wüsste wie die des berechnet würd ich net behaupten dass andere, die den KERN der unit(für diesen zweck) schon wissen, keine ahnung von dem zeugs hätten...

denn mei9ner meinung nach IST das der direkte weg um die liedlänge rauszufinden(das halt keinen direkteren gibt) und da du dich ja wohl kaum so gut auskennst wie die meisten hier brauchst bloß net so von den experten hier reden! die haben wohl zehnmal mehr drauf als du.
Ähm...

Beruhig dich lieber ganz schnell und überleg, was du eben geschrieben hast! Sonst passiert es nämlich mir nichts dir nichts das ein Mod den Thread wg. Beleidigungen schließt.

Was durchaus schade wäre, wenn man bedenkt, das dieser Thread schon zwei Jahre alt ist...
  Mit Zitat antworten Zitat
Benutzerbild von edosoft
edosoft

Registriert seit: 27. Okt 2003
Ort: Wehingen
258 Beiträge
 
Turbo Delphi für Win32
 
#26

Re: Länge (Zeit) eines MP3-Liedes?

  Alt 26. Sep 2004, 01:32
jo aber...
is doch so

naja


aber wenigstens in einem punkt hat er recht:
ne winamp api ist für den zweck sinlos!
Dominik Weber
www.edo-soft.com
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#27

Re: Länge (Zeit) eines MP3-Liedes?

  Alt 26. Sep 2004, 01:47
@edo
Guck dir mal TMPEGaudio.FGetDuration genauer an, dann siehst du, das es eine If-Klausel gibt, die bei VBR anders rechnet:
Delphi-Quellcode:
      Result := FVBR.Frames * GetCoefficient(FFrame) * 8 /
        GetSampleRate(FFrame)
  Mit Zitat antworten Zitat
bigg
(Gast)

n/a Beiträge
 
#28

Re: Länge (Zeit) eines MP3-Liedes?

  Alt 26. Sep 2004, 02:18
N'abend,

die Unit berechnet variable Bitraten.
Probiers doch mal aus.
  Mit Zitat antworten Zitat
Benutzerbild von edosoft
edosoft

Registriert seit: 27. Okt 2003
Ort: Wehingen
258 Beiträge
 
Turbo Delphi für Win32
 
#29

Re: Länge (Zeit) eines MP3-Liedes?

  Alt 26. Sep 2004, 10:46
ja stimmt, es gibt ne möglichkeit...

die meisten encoder speichern wohl einen VBR tag mit, z.b. den Xing tag oder den FhG tag.
Die unit da guckt dann ob sie en fhg oder xing tag findet und wenn ja dan kanns mit diesen infos die länge genau rausfinden.
wenn aber kein xing oder fhg(diese unit unterstützt nur die beiden) da ist dann schätzts die länge auch.

ich bin grad dabei ne taginfo für xing und fhg zu finden, wenn ichs hab sag ichs euch
Dominik Weber
www.edo-soft.com
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz