Autor |
Beitrag |
BlackWolf
Hält's aus hier
Beiträge: 12
|
Verfasst: Do 30.12.04 01:59
hoi,
bin gerade dabei nen kleinen mp3-player zu bauen. alles funzt soweit einwandfrei, ich hab ne TShellTreeView komponente auf der man eine mp3-datei auswählen kann, sobald man dies tut werden automatisch alle mp3-dateien desselben verzeichnisses in die playlist (TCheckListBox) geladen und nacheinander abgespielt, auserdem werden die ID3-tags ausgelesen. passt also alles. nun wollte ich einbauen das, wenn man auf eine datei in der playlist (also nicht dem TShellTreeView sondern der selbst erzeugten dateiliste aus mp3s) doppelklickt, das entsprechende file auch abgespielt wird. allerdings bekomme ich dort einen error. kurz der code:
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: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| procedure TForm1.PlaylistBox2DblClick(Sender: TObject); var laufwerk: char; verzeichnisse, datei: string; Playlist: TStringList; pos: Integer; begin try MediaPlayer.Stop; MediaPlayer.Close; ProcessPath(MediaPlayer.FileName,laufwerk,verzeichnisse,datei); Playlist := TStringList.Create; GetFiles(verzeichnisse,Playlist, '*.mp3'); MediaPlayer.FileName := Playlist[PlaylistBox2.ItemIndex]; ProcessPath(MediaPlayer.FileName,laufwerk,verzeichnisse,datei); LabelDatei.Caption := datei; ID3Tags.FileName := MediaPlayer.FileName; ID3Tags.active := TRUE; LabelInterpret.Caption := ID3Tags.Artist; LabelAlbum.Caption := ID3Tags.Year+' - '+ID3Tags.Album; LabelTitel.Caption := ID3Tags.Title; LabelGenre.Caption := ID3Tags.Genre; PlaylistPos := Playlist.IndexOf(MediaPlayer.FileName); pos := 0; while (pos < PlaylistBox2.Count) do begin PlaylistBox2.Checked[pos] := FALSE; pos := pos+1; end; PlaylistBox2.Checked[PlaylistPos] := TRUE; Playlist.Free; MediaPlayer.Open; MediaPlayer.Play; except end; end; |
so ... nun bekomme ich aber in der zeile "MediaPlayer.Play;" den fehler: 'Fehler beim Starten von MCI'
ich habe ansonsten nie probleme mit dem MediaPlayer gehabt und er wurde auch vorher gestoppt. das file wird auch gefunden ... woran kann das nun liegen?
thx mfg bw
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 30.12.04 03:17
vielleicht wird deinem mediaplayer ein ungültiger filename übergeben, ohne pfadname oder so ^^
kannst du mal deine id3-auslese funktion posten ?
|
|
BlackWolf 
Hält's aus hier
Beiträge: 12
|
Verfasst: Do 30.12.04 03:41
ne kann eigentlich nicht sein das problem hatte ich davor da bekam ich die exception 'datei nicht gefunden' auserdem stimmt der pfad (hab ihn mir anzeigen lassen).
die tags werden mit einer extra komponente gelesen
mfg bw
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 30.12.04 04:12
überprüf das mal lieber mit dem debugger direkt vor dem auruf von .play
wo kriegt man die id3 unit ? wäre dran intressiert
|
|
BlackWolf 
Hält's aus hier
Beiträge: 12
|
Verfasst: Do 30.12.04 04:30
hm werd ich morgn machen heute zu müde
wegen der komponente: www.delphi-forum.de/...omponente_34211.html
is genial einfach installieren, fileName zuweisen und man kann id3v2 tags lesen und schreiben.
mfg
edit: ah du hast ja schon in das andere topic geschrieben ... falls du die komponente net gefunden hast: www.torry.net/vcl/mmedia/audio/id3v4.zip
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 30.12.04 04:51
ouch... die unit is ja ganz schön fett, 65 KB. ich hatte eigentlich vor das nach KOL zu portieren... die arbeit werde ich mir aber ersparen. rein theoretisch sollte es auch mit ein paar Zeilen Code möglich sein diese Infos aus den Mp3s zu extrahieren. werd mir woll mal die spezifikation reinziehen müssen ^^
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 30.12.04 05:03
hmm mir fällt da grade auf dass du zwar die position deines Klicks ausfindig machst, dann aber nicht den dazugehörigen string ausliest und dem dem mediaplayer übergibst
von der ShellTreeView hab ich noch nie was gehört, was ist an der anders als an der standard treeview ?
|
|
BlackWolf 
Hält's aus hier
Beiträge: 12
|
Verfasst: Do 30.12.04 15:30
in der ShellTreeView kompo wird die aktuelle dateistruktur deines pcs angezeigt, in der normalen TreeView kompo kann man selbst wählen was angezeigt wird.
doch der dazugehörige string wird mit der zeile
Delphi-Quelltext 1:
| MediaPlayer.FileName := Playlist[PlaylistBox2.ItemIndex]; |
zugewiesen. da in der Playlist-Stringliste zwangsweise das gleiche steht wie in der PlaylistBox2-komponente (da genau diese Stringliste in die komponente geladen wurde) ist es völlig gleich, ob ich Playlist oder PlaylistBox2 nehme ...
mfg bw
EDIT: lol es geht. nachdem ich meinen pc hochgefahren habe gab es keien probs mehr ... scheint an irgendnem anderne programm gelegen zu haben obwohls komisch is ...
Moderiert von Tino: Delphi-Tags hinzugefügt.
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 30.12.04 19:12
tjo liegt sicher daran dass die TMediaPlayer Kompo im Prinzip nix andres tut als den MediaPlayer von Windows per DLL einzubinden.
Hat ein andres Programm auch ne Instanz von dem am laufen kanns Trouble geben.
Es gibt aber auf SourceForge.net einen komplett freien MP3-Codec für Delphi, der ziemlich klein sein soll. -> siehe www.thaddy.com
|
|
|