Форум по 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,090
Версия 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 ---------------}
Код:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
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.
Код:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
////////////////////////////////
// -= 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, время: 16:47.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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