AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia TMediaPlayer - Length und Position
Thema durchsuchen
Ansicht
Themen-Optionen

TMediaPlayer - Length und Position

Ein Thema von Amateurprofi · begonnen am 30. Nov 2011 · letzter Beitrag vom 6. Dez 2011
Antwort Antwort
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.058 Beiträge
 
Delphi XE2 Professional
 
#1

TMediaPlayer - Length und Position

  Alt 30. Nov 2011, 00:41
Nach
Delphi-Quellcode:
   MediaPlayer.FileName:=DateiName; // .mp3 Datei
   MediaPlayer.Open;
   MediaPlayer.TimeFormat:=tfMilliseconds;
rufe ich mit MediPlayer.Length die Länge des zu spielenden Stückes auf.
Für einen Song der ca. 100 s lang ist erhalte ich als Resultat 199307 ms, also fast doppelt soviel
Rufe ich dagegen während des Abspielens mit MediaPlayer.Position die bereits
abgespielte Zeit auf kommen korrekte Werte. (allerdings, am Ende des Abspielens liefert auch .Position die og 199307 ms.)
Auch bei anderen Stücken liefert MediaPlayer.Length falsche Werte, aber nicht konstant doppelt so hohe, verglichen mit der tatsächlichen Länge.
Der Fehler scheint nicht in den .mp3-Dateien zu liegen, denn im Windows Explorer werden die tatsächlichen Längen richtig angegeben.

Kennt jemand das Problem - und die Lösung des Problems ?
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: TMediaPlayer - Length und Position

  Alt 30. Nov 2011, 01:33
Das von mir zuletzt gepostete Bsp

Media Datei Länge bestimmen

Das liegt nicht an der mp3 Datei, das liegt daran das die Codecs da unterschiedliche Werte in Pott hauen...
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.058 Beiträge
 
Delphi XE2 Professional
 
#3

AW: TMediaPlayer - Length und Position

  Alt 30. Nov 2011, 14:35
@lbccaleb:
Danke, hab ich versucht, bringt aber die gleichen falschen Angaben wie TMediaPlayer.

Noch einer 'ne Idee.
Wie schon gesagt, der Windows Explorer liefert korrekte Angaben, übrigens auch der Windows Media Player.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: TMediaPlayer - Length und Position

  Alt 30. Nov 2011, 21:36
Sicher das du denn alles richtig machst??

Weil 3x darfst du raten wers genauso macht wie ich in dem von mir geposteten Bsp.^^
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.058 Beiträge
 
Delphi XE2 Professional
 
#5

AW: TMediaPlayer - Length und Position

  Alt 1. Dez 2011, 14:42
Sicher das du denn alles richtig machst??
Ja, ziemlich.
Ich hab das etwas verändert, weil ich keine Fehlermeldungen haben möchte.
Daß etwas nicht funktioniert, sehe ich ja daran, daß der Rückgabewert der Funktion gettimefromfile 0 ist.
Aber ich habe natürlich kontrolliert, ob ich einen Fehler eingebaut habe, indem ich die in deinem Upload enhaltene .exe aufgerufen habe, und die bringt den gleichen Rückgabewert, wie die von mir modifizierte Funktion. (siehe anhängende .jpg).
Im 2.jpg kannst du sehen, daß der Windows Explorer die korrekte Zeit angibt.


Delphi-Quellcode:
FUNCTION TMain.GetTimeFromFile(FileName:String):Double;
var Duration:Double; wFileName:PWideChar; hr:HRESULT; MediaDet:IMediaDet;
begin;
   MediaDet:=nil;
   Result:=0;
   wFileName:=StringToOleStr(FileName);
   try
      hr:=CoCreateInstance(CLSID_MediaDet,nil,CLSCTX_INPROC,IMediaDet,MediaDet);
      if hr<>S_OK then exit;
      hr := MediaDet.put_Filename(wFileName);
      if hr<>S_OK then exit;
      hr:=MediaDet.get_StreamLength(Duration);
      if hr<>S_OK then exit;
      result:=duration;
   finally
      SysFreeString(wFileName);
      MediaDet:=nil;
   end;
end;
Miniaturansicht angehängter Grafiken
1.jpg   2.jpg   3.jpg  
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: TMediaPlayer - Length und Position

  Alt 1. Dez 2011, 18:27
kannst du mir die mp3 datei mal bitte zukommen lassen??
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.058 Beiträge
 
Delphi XE2 Professional
 
#7

AW: TMediaPlayer - Length und Position

  Alt 1. Dez 2011, 23:40
kannst du mir die mp3 datei mal bitte zukommen lassen??
Hängt an.
Und danke, daß du versuchst zu helfen.
Angehängte Dateien
Dateityp: zip Somalia.zip (3,04 MB, 8x aufgerufen)
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
878 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: TMediaPlayer - Length und Position

  Alt 2. Dez 2011, 09:04
Ich würde wetten, dass hier die variable Bitrate das Problem ist. Muss es denn so eine Lösung sein, oder geht auch was selbstgemachtes, wie z.B. mit meinen MP3Fileutils? Da wird die Länge korrekt ausgelesen, ganz egal was für Codecs oder sonst was auf dem System installiert sind.
The angels have the phone box.
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.058 Beiträge
 
Delphi XE2 Professional
 
#9

AW: TMediaPlayer - Length und Position

  Alt 6. Dez 2011, 17:43
Ich würde wetten, dass hier die variable Bitrate das Problem ist. Muss es denn so eine Lösung sein, oder geht auch was selbstgemachtes, wie z.B. mit meinen MP3Fileutils? Da wird die Länge korrekt ausgelesen, ganz egal was für Codecs oder sonst was auf dem System installiert sind.
Hallo Gausi,
ich habe mir deine MP3Fileutils vor ein paar Tagen heruntergeladen, im ersten Moment nur 'Bahnhof' verstanden und mich anderen Dingen gewidmet.
Gestern wollte ich dann doch den Dingen auf den Grund gehen und habe mit Freude gemerkt, daß sich mein Problem verblüffend einfach lösen ließ.
Herzlichen Dank
Delphi-Quellcode:
FUNCTION TMain.GetDuration(FileName:String):Integer;
var mpi:TMpegInfo;
begin;
   mpi:=TMpegInfo.Create;
   result:=-1;
   try
      if mpi.LoadFromFile(FileName)=MP3ERR_None then result:=mpi.Duration;
  finally
     mpi.Free;
  end;
end;
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:19 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