AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

m3u Playlist abspielen

Ein Thema von Nils_13 · begonnen am 8. Jan 2006 · letzter Beitrag vom 9. Jan 2006
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#21

Re: m3u Playlist abspielen

  Alt 9. Jan 2006, 14:30
Zitat von Nils_13:
Wie willst du es denn dann machen ? Das größte Problem ist wohl, dass es massig m3u Versionen gibt.
Massig ist relativ. Informier dich mal über die Standards, die es gibt. Alles andere ist Rumraterei.
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#22

Re: m3u Playlist abspielen

  Alt 9. Jan 2006, 14:32
Zitat:
Einfache Playliste

Bei der einfachen Playliste kann entweder der volle Dateiname mit absolutem oder relativem Pfad angegeben werden oder eine URL zu einer Datei auf einem Webserver.

Beispiel:

Titel 1.mp3
Pop\Meine Auswahl\Titel 2.mp3
C:\Dokumente und Einstellungen\All Users\Dokumente\Eigene Musik\Titel 3.mp3
http://www.seite.de/musik/titel4.mp3

In diesem Beispiel ist die Datei Titel 1.mp3 im selben Verzeichnis wie die M3U-Datei, Titel 2.mp3 befindet sich 2 Verzeichnisse unterhalb von der M3U-Datei, für Titel 3.mp3 wurde ein absoluter Pfad angegeben und Titel4.mp3 befindet sich auf einem Webserver.


Erweiterte Playliste

Im Unterschied zur Einfachen Playliste werden in der Erweiterten Playliste zusätzlich Metadaten und ein Header verwendet. Das Format der Erweiterten Playliste ist allerdings aufgrund der Möglichkeit, Metadaten per ID3-Tags direkt in die MP3-Dateien einzubetten, überholt.

Beispiel:

#EXTM3U
#EXTINF:221,Queen - Bohemian Rhapsody
Titel 1.mp3
#EXTINF:473,Dire Straits - Walk Of Life
Pop\Meine Auswahl\Titel 2.mp3
#EXTINF:264,Keep The Faith
C:\Dokumente und Einstellungen\All Users\Dokumente\Eigene Musik\Titel 3.mp3
#EXTINF:504,Bob Marley - Buffalo Soldier
http://www.seite.de/musik/titel4.mp3

Die erste Zeile #EXTM3U ist der Header und legt das Format der Playliste fest, bei Erweiterten Playlisten ist immer als erste Zeile #EXTM3U zu verwenden. Nach der ersten Zeile folgt der eigentliche Inhalt der Playliste, pro MP3-Datei werden 2 Zeilen benötigt:

* Die 1. Zeile beginnt immer mit #EXTINF:, danach folgt die Länge der MP3-Datei in Sekunden. Nach der Länge wird ein Komma als Trennzeichen verwendet, danach folgt der Name der MP3-Datei, welcher zur Anzeige im Medienspieler dient.
* Die 2. Zeile ist identisch mit der Spezifikation von Einfachen Playlisten, hier wird der volle Dateiname mit absolutem oder relativem Pfad oder eine URL zu einer Datei auf einem Webserver angegeben.
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#23

Re: m3u Playlist abspielen

  Alt 9. Jan 2006, 16:42
Zitat von Nils_13:
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.
Die Listbox mit loadfrom file zu laden ist nicht sehr gut, wie du bei wikipedia gelesen hast gibt es auch noch zeilen mit #. Am besten parset du die m3u datei erst einmal und lädst sie dann in eine liste aus der du die listbox dann 'belädst'. In etwa so:
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])<>'#EXTM3Uthen 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;
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#24

Re: m3u Playlist abspielen

  Alt 9. Jan 2006, 17:17
Delphi-Quellcode:
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] = '#EXTM3Uthen
      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;
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.

nur so als denkanstoß...

aeno
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  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 21:12 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