Исходники Delphi

Добро пожаловать на наш портал

На нашем сайте ежедневно публикуются десятки качественных и свежих материалов, которые Вы можете скачать абсолютно бесплатно. Рекомендуем Вам добавить Наш сайт в закладки, а также подписаться на RSS ленту, чтобы не пропускать интересных новостей.
Стартовая Избранное Главная Контакты Карта сайта

Меню

Не доступно

Не доступно

Опрос

Оцените мой сайт

Проголосовало: 118
Другие опросы

Главная » 2013 » Февраль » 22 » Плеер на Делфи
02:38
Плеер на Делфи
Целью данного урока является создание mp3 playera (проигрывателя) на основе библиотеки bass.dll.
В данном проекте я попытаюсь рассказать, как подключить библиотеку bass.dll, создать простейший PlayList, подключить кнопки (Play, Pause, Stop) для управления проигрыванием.

Приступим...

Запускаем Delphi и создаем новое приложение: File->New->VCL Forms Application – Delphi.
В свойство Name формы напишем Form_player, а Caption -> mp3player
Сохраняем модуль(unit1) с именем mp3, а проект(project1) с именем mp3player.

В папку с проектом помещаем файлы bass.dll и bass.pas. Файлы можно скачать с официального сайта www.un4seen.com или Здесь
Далее размещаем на форме компоненты как показано на рисунке.


Самый верхний компонент TPaintBox из вкладки System, в него будем выводить эффекты визуализации. Сразу установим свойство Name -> pb1 для этого компонента.
Затем размещаем компонент TScrollBar из вкладки Additional, он будет показывать текущую позицию при проигрывании трека.
Ниже слева и справа от ScrollBar размещаем компоненты TLabel из вкладки Standart. Левый Label1 будет показывать текущее время проигрывания, а правый Label2 время проигрывания трека.
В свойство Caption для Label1 и Label2 я написал Время.
Еще ниже размещаем три кнопки TButton из вкладки Standart и устанавливаем соответственно свойства Caption - Play, Pause, Stop.
Далее размещаем два компонента TTrackBar из вкладки Win32 и над ними два TLabel. Над первым Trackbar1 подписываем Громкость, над вторым Trackbar2 подписываем Баланс.
Еще ниже размещаем 10 компонентов TTrackBar для эквалайзера, свойство Orietation устанавливаем trVertical. Под ними с помощью компонентов TLabel подписываем частоты (80 Гц, 170 Гц, 310 Гц, 600 Гц, 1 кГц, 3 кГц, 6 кГц, 10 кГц, 12 кГц, 14 кГц), значения частот можно будет потом изменить по вашему усмотрению.
Под эквалайзером размещаем две кнопки TButton в свойстве Caption этих кнопок пишем Open song... и Очистить соответственно.
Под кнопками размещаем компонент TListBox из вкладки Standart.
Далее кидаем на форму компонент TOpenDialog из вкладки Dialogs и компонент TTimer из вкладки System. Свойство Interval для Timer1 устанавливаем равным 30, а свойство Option->ofAllowMultiSelect для компонента OpenDialog1 устанавливаем True.

Остальные свойства визуальных компонентов будем задавать потом.

Приступим к написанию кода программы.

В разделе Uses пропишем bass, это необходимо для подключения библиотеки Bass.dll.



Далее научимся загружать песни в PlayList.
Для этого в разделе Var объявим переменную
i:integer;//номер проигрываемой песни в playlist
и пременную
filename: string;//имя файла



Затем дважды щелкаем на кнопке Open song... и пишем следующий код:
Цитата

procedure TForm_player.Button1Click(Sender: TObject);
var j: integer;
begin
OpenDialog1.Title := 'Open Files';
OpenDialog1.Filter := 'mp3|*.mp3'; //фильтр для файлов
//проверяем если PlayList не пустой то запоминаем номер текущей песни
//иначе устанавливаем номер песни 0 (первая позиция в PlayList)
if listbox1.Count<>0 then i:=ListBox1.ItemIndex else i:=0;
//Диалог открытия файла
if not OpenDialog1.Execute then exit;
begin
for j:=0 to OpenDialog1.Files.Count-1 do
begin
//заполняем PlayList
ListBox1.Items.Add(OpenDialog1.Files.Strings[j]);
end;
end;
//запоминаем имя файла текущей песни в плейлисте
Filename:=ListBox1.Items.Strings[i];
//Выделяем эту песню в PlayList
ListBox1.ItemIndex:=i;
end;


Сохраняем и тестируем работу PlayList.

Создадим процедуры OnClick для кнопок Play, Pause, Stop.

Кликаем дажды по кнопке Play и пишем следующий код:
Цитата

procedure TForm_player.Button1Click(Sender: TObject);
begin
//Проверяем если воспроизведение уже идет то выходим
if mode=play then exit ;
//Запускаем процедуру проигрывания
player;
end;


Аналогично для кнопок Pause и Stop.

Для Pause
Цитата

procedure TForm_player.Button2Click(Sender: TObject);
begin
//Проверяем идет ли воспроизведение
if mode=play then
begin
BASS_ChannelPause(Channel);//останавливаем воспроизведение - пауза
mode:=paused;//устанавливаем playmode -> пауза
end;
end;
[/quoye]
для Stop
Цитата

procedure TForm_player.Button3Click(Sender: TObject);
begin
//Проверяем идет ли воспроизведение
if mode=play then
begin
BASS_ChannelStop(Channel);//останавливаем воспроизведение - стоп
mode:=Stop;//устанавливаем playmode -> стоп
end;
end;


В разделе Var объявляем еще две переменные
Цитата
Channel: DWORD;//дескриптор канала
Mode: TPlayerMode;//PlayMode

var
Form_player: TForm_player;
i:integer; //номер проигрываемой песни в playlist
filename: string;//имя файла
Channel : DWORD;//дескриптор канала
Mode: TPlayerMode;//PlayMode

В разделе Type объявляем
Цитата

TPlayerMode = (Stop, Play, Paused);




и создадим новую процедуру player(проигрывание файла);
Для этого перед разделом private пишем:

procedure Player;



А после раздела
implementation
{$R *.dfm}

пишем код процедуры:

procedure TForm_Player.Player;
begin
//проверяем, если не пауза
if mode<>paused then begin
//то проверяем существует ли файл загружаемый из PlayList
//если файл не существует, то выходим
if not FileExists(FileName) then begin ShowMessage('Файл не существует');exit;end;
//останавливаем и освобождаем канал воспроизведения
BASS_ChannelStop(Channel);BASS_StreamFree(Channel);
//пытаемся загрузить файл и получить дескриптор канала
Channel := BASS_StreamCreateFile(FALSE, PChar(FileName), 0, 0, 0 {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF});
//если дескриптор канала=0 (файл по какой то причине не может быть загружен),
//выдаем сообщение об ошибке и выходим
if Channel=0 then begin ShowMessage('Ошибка загрузки Файла');exit;end;
end;

//командой BASS_ChannelPlay(Channel, False) пытаемся воспроизвести файл,
//если это невозможно, то выдаем сообщение об ошибке
if not BASS_ChannelPlay(Channel, False) then
begin ShowMessage('Ошибка воспроизведения файла');exit;end;

//присваеваем заголовку формы имя проигрываемого файла
Form_Player.Caption:=ExtractFileName(FileName);
//Устанавливаем PlayMode - play
mode:=play;
end;

Для события OnCreate формы пишем:

procedure TForm_player.FormCreate(Sender: TObject);
begin
// проверка корректности загруженной BASS.DLL
if (HIWORD(BASS_GetVersion) <> BASSVERSION) then
begin
MessageBox(0,'Не корректная версия BASS.DLL',nil,MB_ICONERROR);
Halt;
end;

// Инициализация аудио - по умолчанию, 44100hz, stereo, 16 bits
if not BASS_Init(-1, 44100, 0, Handle, nil) then
begin
MessageBox(0,'Ошибка инициализация аудио',nil,MB_ICONERROR);
Halt;
end;
end;

Для события OnClose формы пишем:

procedure TForm_player.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Освобождаем объекты перед закрытием
Bass_Stop(); //останавливаем проигрывание
BASS_StreamFree(channel); // освобождаем звуковой канал
Bass_Free;// Освобождаем ресурсы используемые Bass
end;



Категория: Аудио | Просмотров: 12653 | Добавил: Reif | Рейтинг: 5.0/1
Всего комментариев: 0


Название блока

Здесь html код

Название блока

Здесь html код

Название блока

Здесь html код

Название блока

Здесь html код

 
Исходники Delphi
Сделать бесплатный сайт с uCoz |