Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.06.2007, 00:06
Аватар для Danila
Danila Danila вне форума
Прохожий
 
Регистрация: 30.05.2007
Сообщения: 1
Репутация: 10
По умолчанию PlayList

Помогите с проблемкой... я пишу свои проигрыватель. а с листом проблемы. кто нибудь знает как сделать PlayList?
Заранее БЛАГОДАРЮ
Ответить с цитированием
  #2  
Старый 11.06.2007, 02:51
BlackCash BlackCash вне форума
Прохожий
 
Регистрация: 08.06.2007
Сообщения: 42
Репутация: 15
По умолчанию

попробуй сделать playlist используя tlistview, в первой колонке имя песни, во второй продолжительность и т.д.
Ответить с цитированием
  #3  
Старый 11.06.2007, 10:08
aleksnine aleksnine вне форума
Начинающий
 
Регистрация: 08.03.2007
Сообщения: 151
Репутация: 12
По умолчанию

Попробуй этот компонент.
Сам правда не использовал.

----------------------
Suported these formats:
PLS Playlist
M3U Playlist
BSPlayer Playlist (not Crypted)
Light Alloy Playlist
Media Player Classic Playlist
Windows Media ASX Playlist
----------------------

http://www.torry.net/vcl/mmedia/audio/PlayList.zip
Ответить с цитированием
  #4  
Старый 18.06.2007, 21:22
Аватар для <<D>>
<<D>> <<D>> вне форума
Активный
 
Регистрация: 06.05.2007
Адрес: ГДЕ ТО В СОЛНЕЧНОЙ СИСТЕМЕ
Сообщения: 207
Репутация: 15
По умолчанию

На форме создаешь два ListBox'a. Первый (PL1) делаешь невидимым,
а второй (pl2) - основным. Далее в PL1 добавляешь полные адреса
файлов, а в PL2 - уже переделанные на более короткие
(пример: PL1 - 'C:\Music\Sound.mp3',a pl2 - 'Sound.mp3'). При
двойном клике на PL2 - PLAY(pl1.items[pl2.itemindex]).

В таймире написать условие:
if position=length then //если позиция вспр. = Длине дорожки тогда
begin
pl2.itemindex:=pl2.itemindex+1;
play(pl1.items[pl2.itemindex]);
end;
Ответить с цитированием
  #5  
Старый 13.08.2008, 23:15
Anti_L@+meR Anti_L@+meR вне форума
Прохожий
 
Регистрация: 19.05.2008
Сообщения: 39
Репутация: 10
По умолчанию

Цитата:
Сообщение от <<D>>
На форме создаешь два ListBox'a. Первый (PL1) делаешь невидимым,
а второй (pl2) - основным. Далее в PL1 добавляешь полные адреса
файлов, а в PL2 - уже переделанные на более короткие
(пример: PL1 - 'C:\Music\Sound.mp3',a pl2 - 'Sound.mp3'). При
двойном клике на PL2 - PLAY(pl1.items[pl2.itemindex]).

В таймире написать условие:
if position=length then //если позиция вспр. = Длине дорожки тогда
begin
pl2.itemindex:=pl2.itemindex+1;
play(pl1.items[pl2.itemindex]);
end;
а как сделать чтоб листбоксы понимали pls и m3u плейлисты если не трудно помоги
Ответить с цитированием
  #6  
Старый 14.08.2008, 01:41
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Берешь pls и/или m3u файл. Смотришь как он устроен и пишешь читалку для него (ну и сохранялку, если нужна). m3u вообще, если не ошибаюсь, просто список файлов с полным путем.

Ребят, давайте задавать вопросы, над которыми действительно надо думать. Что, лень скачать (вариант, купить) пару книжек и их ВНИМАТЕЛЬНО прочитать, что бы владеть хотя бы основами
Ответить с цитированием
  #7  
Старый 16.08.2008, 20:01
Anti_L@+meR Anti_L@+meR вне форума
Прохожий
 
Регистрация: 19.05.2008
Сообщения: 39
Репутация: 10
По умолчанию

а как написать читалку может кто подскажет или как использовать это:
{------------------------------------
----- PlayList -----
----- ver0.1.5 -----
----- by -----
----- Musabekov Rustem -----
----- Kazakhstan, Astana city -----
----- Tel: +77012417747 -----
----- Tel: +77014215379 -----

Designed in Delphi 7 for all Delphi
and other Object Pascal compilers.

This unit designed for read popular
playlist files formats.

Suported this formats:
• PLS Playlist
• M3U Playlist
• BSPlayer Playlist (not Crypted)
• Light Alloy Playlist
• Media Player Classic Playlist
• Windows Media ASX Playlist

History:
[ver 0.1.0 - 0.1.3]
• Added M3U Playlist
• Added Light Alloy Playlist
• Added BSPlayer Playlist
• Added Media Player Classic Playlist
• Added PLS Playlist
[ver 0.1.4]
• M3U Format is fixed
• Added Windows Media ASX Playlist
• Edited all code
[ver 0.1.5]
• Added OpenPLForce function
• Fixed M3U Format
------------- © 2007 ---------------}
Код:
Unit PlayList;

{$R PlayList.res}

interface

uses
 SysUtils, Classes;

{--- FUNCTIONS ---}

Function GetPLType(FileName: String):String;
{
Get the playlist format.
In result your playlist file format.
}

Function OpenPL(FileName: String; var MusicNames: TStringList; var FileNames: TStringList):boolean;
{
This function geting the playlist file
names and this music string.
If playlist readed result is true else
false.
}
Function OpenPLForce(FileName: String; var MusicNames: TStringList; var FileNames: TStringList):boolean;
{
This function geting the playlist file
names and this music string from strings list file.
If playlist readed result is true else
false.
}

implementation

Function GetPLType(FileName: String):String;
var
f: textfile;
s,fe: string;
label 1;
begin
result:='Unknown';
if fileexists(FileName) then
begin
assignfile(f,FileName);
reset(f);
1:
readln(f,s);
if (trim(s)='')and(eof(f)=false) then
goto 1
else
begin
 if trim(s)='#EXTM3U' then
 result:='M3U Playlist'
 else if copy(s,0,4)='BSPL' then
 result:='BSPlayer Crypted Playlist'
 else if trim(s)='MPCPLAYLIST' then
 result:='Media Player Classic Playlist'
 else if lowercase(copy(s,0,4))='<ASX' then
 result:='Windows Media ASX Playlist'
 else
 begin
  fe:=ansilowercase(extractfileext(FileName));
  if fe='.m3u' then
  result:='M3U Playlist'
  else if fe='.bsl' then
  result:='BSPlayer Playlist'
  else if fe='.mpcpl' then
  result:='Media Player Classic Playlist'
  else if fe='.lap' then
  result:='Light Alloy Playlist'
  else if fe='.pls' then
  result:='PLS Playlist'
  else if fe='.asx' then
  result:='Windows Media ASX Playlist';
 end;
end;
closefile(f);
end;
end;

Function OpenPL(FileName: String; var MusicNames: TStringList; var FileNames: TStringList):boolean;
var
ft: string;
f : textfile;
s : string;
i,ie : integer;
label 1,2,3,4,5,0;
begin
MusicNames.Clear;
FileNames.Clear;
ft:=lowercase(GetPLType(FileName));
if ft='unknown' then
begin
result:=false;
goto 0;
end
{-- Geting M3U Playlist --}
else if ft='m3u playlist' then
begin
assignfile(f,FileName);
reset(f);
 while eof(f)<>true do
 begin
 readln(f,s);
 s:=trim(s);
 if uppercase(copy(s,0,7))='#EXTINF' then
 begin
 for i:=7 to length(s) do
 if s[i]=',' then goto 1;
 1:
 MusicNames.Add(copy(s,i+1,length(s)));
 readln(f,s);
 FileNames.Add(s);
 end
 else
 begin
 if uppercase(copy(s,0,7))<>'#EXTM3U' then
 begin
 FileNames.Add(s);
 MusicNames.Add(extractfilename(s));
 end;
 end;
 end;
closefile(f);
end
{-- Geting BSPlayer Playlist --}
else if ft='bsplayer playlist' then
begin
assignfile(f,FileName);
reset(f);
 while eof(f)<>true do
 begin
 readln(f,s);
 s:=trim(s);
 FileNames.Add(s);
 MusicNames.Add(extractfilename(s));
 end;
closefile(f);
end
{-- Geting Light Alloy --}
else if ft='light alloy playlist' then
begin
assignfile(f,FileName);
reset(f);
 while eof(f)<>true do
 begin
 readln(f,s);
 s:=trim(s);
 if s<>'' then
 begin
 FileNames.Add(s);
 readln(f,s);
 MusicNames.Add(copy(s,4,length(s)));
 end;
 end;
closefile(f);
end
{-- Geting Media Player Classic Playlist --}
else if ft='media player classic playlist' then
begin
assignfile(f,FileName);
reset(f);
 while eof(f)<>true do
 begin
 readln(f,s);
 s:=trim(s);
 for i:=0 to length(s) do
 if copy(s,i,9)='filename,' then goto 2;
 2:
 if i<length(s) then
 begin
 FileNames.Add(copy(s,i+9,length(s)));
 MusicNames.Add(extractfilename(FileNames.strings[FileNames.count-1]));
 end;
 end;
closefile(f);
end
{-- Geting PLS Playlist --}
else if ft='pls playlist' then
begin
assignfile(f,FileName);
reset(f);
 while eof(f)<>true do
 begin
 readln(f,s);
 s:=trim(s);
 if lowercase(copy(s,0,4))='file' then
 begin
 for i:=0 to length(s) do
 if copy(s,i,1)='=' then goto 3;
 3:
 FileNames.Add(copy(s,i+1,length(s)));
 MusicNames.Add(extractfilename(FileNames.strings[FileNames.count-1]));
 end;
 end;
closefile(f);
end
{-- Geting ASX Playlist --}
else if ft='windows media asx playlist' then
begin
assignfile(f,FileName);
reset(f);
 while eof(f)<>true do
 begin
 readln(f,s);
 s:=trim(s);
 if lowercase(copy(s,0,7))='<entry>' then
 begin
 for i:=0 to length(s) do
 if s[i]='"' then goto 4;
 4:
 for ie:=i+1 to length(s) do
 if s[ie]='"' then goto 5;
 5:
 delete(s,ie,length(s));
 FileNames.Add(copy(s,i+1,length(s)));
 MusicNames.Add(extractfilename(FileNames.strings[FileNames.count-1]));
 end;
 end;
closefile(f);
end;
result:=true;
0: //Its End ...
end;

Function OpenPLForce(FileName: String; var MusicNames: TStringList; var FileNames: TStringList):boolean;
var
f : textfile;
s : string;
begin
MusicNames.Clear;
FileNames.Clear;
assignfile(f,FileName);
reset(f);
 while eof(f)<>true do
 begin
 readln(f,s);
 s:=trim(s);
 FileNames.Add(s);
 MusicNames.Add(extractfilename(s));
 end;
closefile(f);
end;

initialization
finalization

{all code by musabekov rustem :}

end.
Admin: Учимся правильно оформлять код. БАН на 3 дня.

Последний раз редактировалось Admin, 17.08.2008 в 16:55.
Ответить с цитированием
  #8  
Старый 16.08.2008, 22:11
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
По умолчанию

Писал как-то, может пригодится. Читает плэйлисты PLS, M3U, LAP, WPL и простые списки, есть возможность определения типа плэйлиста. А себе можешь создать собственный формат, н-р, Advanced Playlist - *.ap Загружай все это дело в ListBox со столбцами: название песни из тега или имя файла, если тегов нет, продолжительность, путь к файлу и т. д. Глянь как это реализовано в FooBar.
Код:
////////////////////////////////
// -= Coded by Vayrus =- //
///////////////////////////////

Uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
IniFiles;

var
TIF: TIniFile;

procedure PLS_To_FileList(FName: string; OUTPUT: TStrings);
const
SectName='playlist';
ParamName='File';
var
I: Integer;
S: string;
begin
TIF:=TIniFile.Create(FName);
I:=1;
repeat
S:=TIF.ReadString(SectName,ParamName+IntToStr(I),'');
if S<>'' then
OUTPUT.Add(S);
INC(I);
until S='';
TIF.Free;
end;

//Данный вариант не тянет за собой IniFiles
procedure PLS_To_FileList2(FName: string; OUTPUT: TStrings);
const
FileTag='File';
var
F: TextFile;
S: string;
B, E, L: Integer;
begin
L:=Length(FileTag);
AssignFile(F, FName);
Reset(F);
while not eof(f) do
begin
Readln(F, S);
E:=Length(S);
B:=Pos(FileTag, S);
if B>0 then
begin
S:=Copy(S,B+L+2,E);
OUTPUT.Add(S);
end;
end;
CloseFile(F);
end;

function Is_PLS(FName: string): boolean;
const
SectName='[playlist]';
var
F: TextFile;
S: string;
begin
AssignFile(F, FName);
Reset(F);
Readln(F, S);
RESULT:=Pos(SectName, S)>0;
CloseFile(F);
end;

//Если M3U грузит нормально иначе грузит подряд
procedure M3U_To_FileList(FName: string; OUTPUT: TStrings);
const
FirstTag='#EXTM3U';
FileTag='#EXTINF';
var
F: TextFile;
S: string;
begin
AssignFile(F, FName);
Reset(F);
while not eof(f) do
begin
Readln(F, S);
if (Pos(FirstTag, S)=0) and (Pos(FileTag, S)=0) then
OUTPUT.Add(S);
end;
CloseFile(F);
end;

procedure LAP_To_FileList(FName: string; OUTPUT: TStrings);
const
FirstTag='>N';
var
F: TextFile;
S: string;
begin
AssignFile(F, FName);
Reset(F);
while not eof(f) do
begin
Readln(F, S);
if (Pos(FirstTag, S)=0) and (Length(S)>0) then
OUTPUT.Add(S);
end;
CloseFile(F);
end;

function Is_LAP(FName: string): boolean;
const
SectName='>N';
var
F: TextFile;
S: string;
begin
Result:=False;
AssignFile(F, FName);
Reset(F);
while not eof(F) do
begin
Readln(F, S);
if Pos(SectName, S)>0 then Result:=True;
end;
CloseFile(F);
end;

function Is_M3U(FName: string): boolean;
const
SectName='#EXTM3U';
var
F: TextFile;
S: string;
begin
AssignFile(F, FName);
Reset(F);
Readln(F, S);
RESULT:=Pos(SectName, S)>0;
CloseFile(F);
end;

procedure WPL_To_FileList(FName: string; OUTPUT: TStrings);
const
BeginTag='<media src="';
EndTag='" tid="';
var
F: TextFile;
S: string;
B, E, L: Integer;
begin
L:=Length(BeginTag);
AssignFile(F, FName);
Reset(F);
while not eof(f) do
begin
Readln(F, S);
B:=Pos(BeginTag, S);
if B>0 then
begin
E:=Pos(EndTag, S);
S:=Copy(S,B+L,E-B-L);
OUTPUT.Add(UTF8Decode(S));
end;
end;
CloseFile(F);
end;

function Is_WPL(FName: string): boolean;
const
SectName='<?wpl';
var
F: TextFile;
S: string;
begin
AssignFile(F, FName);
Reset(F);
Readln(F, S);
RESULT:=Pos(SectName, S)>0;
CloseFile(F);
end;

function Is_SimpleList(FName: string): boolean;
var
F: TextFile;
S: string;
B, E: Integer;
begin
B:=0;
E:=0;
AssignFile(F, FName);
Reset(F);
while not Eof(F) do
begin
Readln(F, S);
if ExtractFileExt(S)<>'' then Inc(B);//Сменить при необходимости  ///////////////////////////////////
Inc(E);
end;
RESULT:=B=E;
CloseFile(F);
end;

procedure ExtractFileListFromPlayList(FName: string; OUTPUT: TStrings);
const
Unknown='Данный тип плэйлистов не поддерживается.';
begin
if Is_PLS(FName) then PLS_To_FileList(FName, OUTPUT) else
if Is_WPL(FName) then WPL_To_FileList(FName, OUTPUT) else
if Is_M3U(FName) then M3U_To_FileList(FName, OUTPUT) else
if Is_LAP(FName) then LAP_To_FileList(FName, OUTPUT) else
if Is_SimpleList(FName) then OUTPUT.LoadFromFile(FName) else
ShowMessage(Unknown);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then
begin
ListBox1.Clear;
ExtractFileListFromPlayList(OpenDialog1.FileName,ListBox1.Items);
end;
end;

end.
Admin: Учимся правильно оформлять код. БАН на 5 дней.

Последний раз редактировалось Admin, 17.08.2008 в 16:53.
Ответить с цитированием
  #9  
Старый 18.08.2008, 23:14
Intro Intro вне форума
Прохожий
 
Регистрация: 18.08.2008
Сообщения: 1
Репутация: 10
Восклицание

B гугле введи tplaylistadv скачай эту компаненту там всё есть, чтобы сделать возможность использования нескольких Плэйлистов одновременно можно использовать mdi если кто знает такую компаненту напатипу как в аимпе Плэйлист скиньте!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:08.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter