m3u Playlist abspielen
Hi,
wenn ich eine m3u-Datei in eine ListBox importiere, habe ich alle Lieder so dastehen, wie sie sollen. Aber wenn ich per Doppelklick eines der Lieder abspielen will, geht das nicht. Was muss ich da jetzt tun ? |
Re: m3u Playlist abspielen
wie hast du es denn bisher versucht?
|
Re: m3u Playlist abspielen
Erstmal deine Frage vernünftig formulieren... :roll:
Wie hast du dir denn gedacht das du sie abspielen willst? Zu Fuß, mit nem TMediaPlayer, BASS.dll oder was? Überanstreng dich nicht beim Fragen formulieren... :roll: MfG Florian :hi: edit: Wo sind denn die roten Kästen hin? |
Re: m3u Playlist abspielen
Bassdllplayer. 'filename' ist hier das Problem.
Delphi-Quellcode:
procedure prozedur;
var filename: String; begin filename := das aktuelle item der in einer ListBox geladenen m3u-Liste; // das fehlt mir bassdllplayer1.Play(filename); end; |
Re: m3u Playlist abspielen
Den markierten Eintrag einer Listbox kriegst Du mit
Delphi-Quellcode:
function CurrentListboxEntry (Listbox : TListBox) : string ;
begin with listbox do begin if itemindex <> -1 then Result := items[itemindex] else Result := '' ; end ; end ; |
Re: m3u Playlist abspielen
Oder so:
Delphi-Quellcode:
Wobei ich gestehen muss, dass ich Jellys Funktion hübscher finde....
filename := ListBox1.Items.Strings[Listbox1.ItemIndex];
|
Re: m3u Playlist abspielen
Zitat:
Ausserdem ist mir neu, mit items.strings[index] auf einen Eintrag zuzugreifen. Ich mach das immer mit items[index] direkt. |
Re: m3u Playlist abspielen
Zitat:
Greetz alcaeus |
Re: m3u Playlist abspielen
Ok, das bringt mich aber nicht ganze weiter, da ich dann ja nur den Namen der Datei habe, aber nicht das Verzeichniss. Ich lade ja eine m3u mit LoadFromFile, jetzt muss mein Programm natürlich noch herausbekommen wo die Datei liegt.
|
Re: m3u Playlist abspielen
Ich dachte du hältst das Verz. gleich mit in der Listbox... Das musst Du halt dann noch sonstwie speichern. Unschön, aber einfach, wäre da z.B. eine TStringList. Du musst dann aber dafür Sorge tragen, dass die Items in der Listbox mit den Items deiner TStringList korrespondieren. imho. ist das Ganze aber eine ziemlich unschöne Lösung.
|
Re: m3u Playlist abspielen
In der ListBox soll vorallem nur ein Name wie z.B. 03_Breakstuff oder Faint, was weiß ich stehen.
|
Re: m3u Playlist abspielen
Zitat:
|
Re: m3u Playlist abspielen
Bedenke aber dass in m3u Listen die Verzeichnisangabe nicht zwingend ist. Fehlt dieses, so wird von relativen Pfaden ausgegangen mit dem m3u Listenpfad als Basisverzeichnis.
|
Re: m3u Playlist abspielen
Zitat:
|
Re: m3u Playlist abspielen
Allgemein sauber aber wenn ichs nicht dreimal hintereinander falsch verstanden habe hässlich, was die Playlist betrifft.
[EDIT]Warum wurde Daniel G s Beitrag eben rot markiert, er war doch garnicht neu.[/EDIT] So sieht eine normale m3u aus:
Delphi-Quellcode:
Ich weiß langsam wirklich nicht mehr weiter :kotz: Oder muss ich den Ort der playlist ausfindig machen, obwohl bringt auch nichts.
01_Intro.mp3
02_Just like this.mp3 03_Nookie.mp3 04_Break Stuff.mp3 05_Re-arranged.mp3 06_I'm broke.mp3 07_Nobody like you.mp3 08_Don't go off wandering.mp3 09_9 teen 90 nine.mp3 10_N 2 gether now.mp3 11_Trust.mp3 12_No Sex.mp3 13_Show me what you got.mp3 14_A lesson learned.mp3 15_outro.mp3 [EDIT]Doch das bringt was, aber wie mach ich das ? |
Re: m3u Playlist abspielen
Zitat:
Zitat:
BTW: Meine WINAMP - M3U sieht so aus [Anfang]:
Delphi-Quellcode:
#EXTM3U
#EXTINF:139,Keb' Mo' - Am I Wrong L:\Blues & Folk\Keb' Mo'\Just Like You\Am I Wrong.mp3 #EXTINF:227,Keb' Mo' - Angelina L:\Blues & Folk\Keb' Mo'\Just Like You\Angelina.mp3 #EXTINF:176,Keb' Mo' - Anybody Seen My Girl L:\Blues & Folk\Keb' Mo'\Just Like You\Anybody Seen My Girl.mp3 #EXTINF:246,Keb' Mo' - City Boy L:\Blues & Folk\Keb' Mo'\Just Like You\City Boy.mp3 #EXTINF:249,Keb' Mo' - Come Into My Kitchen L:\Blues & Folk\Keb' Mo'\Just Like You\Come Into My Kitchen.mp3 #EXTINF:188,Keb' Mo' - Dirty Low Down And Bad L:\Blues & Folk\Keb' Mo'\Just Like You\Dirty Low Down And Bad.mp3 #EXTINF:238,Keb' Mo' - Don't Try To Explain L:\Blues & Folk\Keb' Mo'\Just Like You\Don't Try To Explain.mp3 #EXTINF:180,Keb' Mo' - Every Morning L:\Blues & Folk\Keb' Mo'\Just Like You\Every Morning.mp3 |
Re: m3u Playlist abspielen
Zitat:
Code:
:mrgreen: Viel Spass
#EXTM3U
#EXTINF:211,Krezip - What Are You Waiting For 01. Krezip - What Are You Wainting For.mp3 #EXTINF:208,Krezip - Out Of My Bed 02. Krezip - Out Of My Bed.mp3 #EXTINF:227,Krezip - Don't Crush Me 03. Krezip - Don't Crush Me.mp3 #EXTINF:217,Krezip - Brighter Days 04. Krezip - Brighter Days.mp3 #EXTINF:170,Krezip - Really Something 05. Krezip - Really Something.mp3 #EXTINF:210,Krezip - Take Your Time 06. Krezip - Take Your Time.mp3 #EXTINF:186,Krezip - I Apologize 07. Krezip - I Apologize.mp3 #EXTINF:202,Krezip - Where Are You Now 08. Krezip - Where Are You Now.mp3 #EXTINF:210,Krezip - Same Mistake 09. Krezip - Same Mistake.mp3 #EXTINF:195,Krezip - Piece Of Mind 10. Krezip - Piece Of Mind.mp3 #EXTINF:222,Krezip - Same Old Story 11. Krezip - Same Old Story.mp3 #EXTINF:189,Krezip - Don't Want You 12. Krezip - Don´t Want You.mp3 #EXTINF:217,Krezip - Forget What I Said 13. Krezip - Forget What I Said.mp3 Zitat:
|
Re: m3u Playlist abspielen
Hm ...
Dann gibts ein Problem: 1. Muss das Programm zwischen standart und erweiterter Playlist unterscheiden können 2. Muss bei der Standart dann der richtige Pfad ausgelesen werden 3. Wäre es eine Möglichkeit die standartplaylsit in eine erweiterte umzubauen und das irgendwie anzuwenden ?
Delphi-Quellcode:
Hm, dann kommt eine leere Nachricht.
filename := ExtractFilePath(playlist.Items.Strings[playlist.ItemIndex]);
frmMain.bassdllplayer1.Play(filename); ShowMessage(FileName); |
Re: m3u Playlist abspielen
Zitat:
Wie füllst Du denn deine Listbox wenn nicht durch Öffnen der m3u Datei. Du musst doch wissen wo deine m3u Datei liegt :wiejetzt: Natürlich liefert ExtractFilePath in Deinem Beispiel nichts da Du ja angeblich in der Listbox die Dateipfade nicht mitspeicherst. |
Re: m3u Playlist abspielen
Wie willst du es denn dann machen ? Das größte Problem ist wohl, dass es massig m3u Versionen gibt.
|
Re: m3u Playlist abspielen
Zitat:
|
Re: m3u Playlist abspielen
Zitat:
|
Re: m3u Playlist abspielen
Zitat:
Delphi-Quellcode:
uses ... Contnrs; type tm3uitem = class(TPersistent) private fEXTINF: string; ffilename: string; public function getfullfilename: string; function getmp3file: string; published property EXTINF: string read fEXTINF write fEXTINF; property FileName: string read ffilename write ffilename; end; ... var olist: tobjectlist; ... { tm3uitem } function tm3uitem.getfullfilename: string; begin result:=ExpandFileName(ffilename); end; function tm3uitem.getmp3file: string; begin result:=extractfilename(ffilename); end; procedure tolistbox(box: tlistbox;olist: tobjectlist); var i:integer; begin for i:=0 to olist.Count-1 do begin box.Items.Add((olist[i]as tm3uitem).getmp3file); end; end; function getfilenamebyindex(i:integer;olist: tobjectlist):string; begin result:= (olist[i]as tm3uitem).getfullfilename; end; procedure loadm3u; var slist:tstringlist; i:integer; item:tm3uitem; s,filename:string; begin filename:='deine.m3u'; olist.Clear; SetCurrentDir(FileName); // Damit relative pfad angaben geladen werden können wichtig!!!! slist:=tstringlist.Create; try slist.LoadFromFile(FileName); for i:=0 to slist.count-1 do begin if trim(slist[i])<>'#EXTM3U' then begin // erste zeile nicht beachten s:= slist[i]; if length(s)>0 then if s[1]<>'#' then begin // # Zeilen nicht beachten item:=tm3uitem.Create(); item.filename:=slist[i]; // dateinamen hinzufügen if (slist[i-1][1]='#')and(trim(slist[i-1])<>'#EXTM3U') then begin item.EXTINF:=slist[i-1]; // idtag info hinzufügen falls vorhanden end; olist.add(item); end; end; end; finally slist.Free; end; end; end; |
Re: m3u Playlist abspielen
Delphi-Quellcode:
in der prozedur AddSongToPlayList() wird der übergebene dateiname dann geladen. die prozedur behandelt relative und absolute dateinamen, sowie internetstreams, UNC-netzwerkpfade und http-/ftp-pfadangaben.
sl := TStringList.create();
try sl.loadFromFile(FileName); try if sl.Count = 0 then raise Exception.Create('Die Playlist-Datei ist leer'); //format checken if sl[0] = '#EXTM3U' then begin { extended m3u playlist } //durch alle einträge interieren for i:=1 to sl.Count-1 do begin if copy(sl[i], 1, 8) <> '#EXTINF:' then AddSongToPlayList(sl[i]); end; end else begin { standard m3u playlist } for i:=0 to sl.count-1 do begin AddSongToPlayList(sl[i]); end else raise Exception.Create('Dies ist leider keine unterstützte Playlist-Datei'); end; except raise; end; finally sl.free(); end; nur so als denkanstoß... aeno |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:30 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