Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: МедиаПлеер в Delphi 7 на стандартных компанентах
Форумы Боевого Народа > Высокие технологии во всех вариациях > Софт > Программирование
Cross540
Задача такая: Написать программу на Delphi, которая воспроизводит МП3 файлы с плейлистом
Сложность: Нельзя использовать bass.dll
Все написал, но воспроизводит только один файл(TOpenDialog использую).
Но как сделать так, что бы через TOpenDialog файлы добавлять в плейлист, желательно через TListBox, но можно и через TDrawGrid?
antonn
Плейлист - просто список, ему не важно чем воспроизводится музыка.
Если пишешь на D7 и не важно открытие модулей - возьми мой древний компанент - http://desksoft.ru/index.php?files&id=2&owner=3
если нужна "чистота" - TlistBox, в него добавлять указатели на структуры, в каждой структуре хранится название, путь до файла, длительность. Отрисовка нужна саморучная (в отрисовке рисуешь название и справа длительность, при двойном клике получаешь путь к файлу и передаешь его звуковому движку (bass.dll/vorbis.dll/tmediaplayer))

Есть курсач (только код, всмысле пояснилки нет), плеер, на TmediaPlayer и TListBox в плейлисте, могу отдать за 100wmr ;)
демо - http://desksoft.ru/index.php?downloads=att...ents&id=159
Cross540
antonn спс теперь другой вопрос, как реализовать полосу прокрутки?
Так про прокрутку нашел


Делаю полосу прокрутки так(TTimer( имя tmRefresh), TMediaPlayer (имя mpPlayer), TTrackBarEx (имя tbTrack)) и вылезает ошибка "No MCI device open".

Что делать? Можеь где в коде ошибка?

Код
procedure TForm1.tmRefreshTimer(Sender: TObject);

begin

tbTrack.Position:=Round(mpPlayer.Position/mpPlayer.Length

*tbTrack.Max);

end;



procedure TForm1.tbTrackClick(Sender: TObject);

begin

mpPlayer.Position:=Round(tbTrack.Position*mpPlayer.Length/

tbTrack.Max);

mpPlayer.Play;

end;


TTrackBarEx - свой компонент на основе TTrackBar с свойстовм OnClick
Cross540
Так ошибку нашел исправил, теперь другой вопрос как сделать прогресс бар?
antonn
procedure TF_Player.Timer1Timer(Sender: TObject);
begin
try // Тут отображаем текущее время проигрывания
if (MediaPlayer1.Mode=mpPlaying) or (MediaPlayer1.Mode=mpPaused) then begin // если плеер играет, значит определяем(если не играет, то показывает всякую чушь)
L_time.Caption:= formatdatetime( 'nn:ss',MediaPlayer1.Position /(1000*60*60*24) );
PB_POS.Position:= trunc( MediaPlayer1.Position*100/ MediaPlayer1.Length ); // текущая позиция на PositionBar
end else begin L_time.Caption:='00:00'; PB_POS.Position:=0; end; // если не играет, то показываем нули на индикаторе
except
end;
end;

копипаст, try..except поставленно именно из-за "MCI device тра-ля-ля". Ты лабораторку пишешь, или свой плеер? smile.gif я бы выбросил TmediaPlayer, очень нестабильная вещь, требует много обрабатывать ексепшны. Имхо - bass.dll лучшее (если есть спортивный интерес можно использовать плугины винампа, из плюсов - офигенная расширяемость, бесплатность (плагинов), из минусов - придется писать обертки на их взаимодействие, загрузку/выгрузку и прочее)
antonn
ну и глянь тут, может что полезное найдешь - http://desksoft.ru/index.php?drkb=122&str_path=0|55|122
Cross540
antonn Делаю лабароторку
Еще препод при защите спрашивать будет:А чем ваш плеер лучше Media Player Classic?
Для себя делаю МегаКанкулятор, кторый может решать квадратные и тригонометрические уравнения

Спасибо за помощь
Кстати с данной ошибкой мона справится другим путем:
1)При запуске формы(при создании) tmRefresh.Interval:=3600000
2)При открытии файла tmRefresh.Interval:=1000
И все никакой ошибки в течении часа(ну если ни че неоткрыл)

Так теперь другое как сделать регулятор громкости?

Посмотрел по твоей ссылке не все понял про громкость

Кстати может подскажещь какую хоршую книжку по программированию на Delphi 7
antonn
а вот громкость нужно рулить с помощью системы, ты же юзаешь MCI device, вот почему я говорил про басс smile.gif
http://desksoft.ru/index.php?drkb&drkb...1%F2%FC&f_d

там не будет и эквалайзера (ни визуального, ни регуляторного)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.