Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2010, 12:15   #11
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

тем не менее, этим файлам там не место.
лучше создавать где то папку(хоть в той же папке lib) и потом к ней прописывать путь(Library Path)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.04.2010, 18:04   #12
Dr.Badnezz
Ученик
Форумчанин
 
Регистрация: 19.09.2008
Сообщений: 119
По умолчанию

Сам ну очень много занимаюсь с bass.dll, есть свои наработки.

Хочу сказать на чем делать плейлист:
Засуньте сразу TListBox и TTreeView куда подальше. Мало того, что они добавляют n'ое количество новых элементов очень медленно, так если еще и отрисовывать начать, то это вообще капец. Лучше забудьте про них в качестве плейлиста. Потом жалеть не будете.

TStringGrid тоже не вариант, отрисовать его проще простого, а вот возни будет, да и работает он тоже не очень быстро. (ощущается при добавлении ~2000Треков)

Используйте TVirtualTreeView, в инете есть по нему и примеры и инфа, с ним конечно нужно будет повозиться немного, но поняв как и что вы сможете сделать прекрасный плейлист для своей программы, который можно прекрасно отрисовать + скорость работы вас приятно удивит.

А вообще практически вся информация о bass.dll есть в стандартной справке.
Dr.Badnezz вне форума Ответить с цитированием
Старый 07.04.2010, 11:15   #13
inndim
Пользователь
 
Регистрация: 08.06.2008
Сообщений: 74
По умолчанию

Цитата:
Сообщение от .Phoenix Посмотреть сообщение
Тоже пытаюсь что-то сделать подобное, но чтобы реализовать анализатор надо как минимум научиться работать с графикой. Начни со справки bass.chm Там описаны все функции этой библиотеки.
Надо начать с изучения примеров прилагаемых к bass.dll и потом уже по необходимости лезть в справку. Если посмотришь примеры, то без особого труда и умения работать с графикой сможешь реализовать анализатор.

Цитата:
Сообщение от MasteR_gOd Посмотреть сообщение
Плейлист, регулятор трека, авт. Переход на след. Трек.
Если я правильно понял выражение "регулятор трека", то в простейшем варианте будет так:
Код:
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
 BASS_ChannelSetPosition(Channel, BASS_ChannelSeconds2Bytes(Channel, TrackBar1.Position), BASS_POS_BYTE);
end;
а всё остальное реализовывается даже при базовом умении прграммировать на Delphi и знать тонкости bass.dll для этого вовсе не обязательно.

Цитата:
Сообщение от Xatr Посмотреть сообщение
Автоматический переход на следующий трек.
Проверяется при помощи Timer, при этом берётся текущее время при проигрывании трека и сравнивается с его длиной. Если равно, то перейти на стедующую строку ListBox. Только это с постоянным битрейтом, а с переменным придётся сложнее...
Ну вы батенька и загнули, так делать это извпащение какое-то прям.
Всё делается гораздо проще:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if BASS_ChannelIsActive(Channel)=BASS_ACTIVE_STOPPED then // следующий трэк
end;
p.s. Если помог, то нажмите на весы.
inndim вне форума Ответить с цитированием
Старый 07.04.2010, 12:14   #14
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Dr.Badnezz, насчет засовывания куда подальше. Вам для справки, многие стандартные контролы могут работать в виртуальном режиме, тогда отрисовываются только видимые в данный момент элементы, а добавлять в них не нужно ничего вообще, элементы добавляются в невизуальный список.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 09.04.2010, 14:41   #15
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Цитата:
Автоматический переход на следующий трек.
Проверяется при помощи Timer, при этом берётся текущее время при проигрывании трека и сравнивается с его длиной. Если равно, то перейти на стедующую строку ListBox. Только это с постоянным битрейтом, а с переменным придётся сложнее...

Ну вы батенька и загнули, так делать это извпащение какое-то прям.
Всё делается гораздо проще:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if BASS_ChannelIsActive(Channel)=BASS_ ACTIVE_STOPPED then // следующий трэк
end;
это все мусор!

басс сама может сказать когда закончился трек

Код:
procedure SyncMsg(Handle: HSync; Channel, Data: DWORD; User: Pointer); stdcall;
begin
   PostMessage(xx.Handle, тут твое сообщение, 0, 0);
end;
после создании нового канала
Код:
BASS_ChannelSetSync(твои канал, BASS_SYNC_END or BASS_SYNC_MIXTIME, 0, SyncMsg, nil);
и все что осталось отловить сообщение которое будет послано при окончании трека
ZuBy вне форума Ответить с цитированием
Старый 09.04.2010, 14:59   #16
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Цитата:
Сообщение от mutabor Посмотреть сообщение
Dr.Badnezz, насчет засовывания куда подальше. Вам для справки, многие стандартные контролы могут работать в виртуальном режиме, тогда отрисовываются только видимые в данный момент элементы, а добавлять в них не нужно ничего вообще, элементы добавляются в невизуальный список.
Ну лучше написать свои компонент, так будет удобней и всегда можно что-то добавить/убрать/изменить и + первичная отрисовка, без стандартной отрисовки контролов
ZuBy вне форума Ответить с цитированием
Старый 09.04.2010, 16:37   #17
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

ZuBy, это просто я написал в ответ на его категоричное высказывание насчет тормознутости контролов. Понятно, что для плейлиста лучше разработать свой компонент.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 09.04.2010, 23:58   #18
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Если хотите для самообразования, то сделайте собственный движок. Если нет, то в мире существует огромное количество плееров над которыми годами трудятся десятки талантливых программистов и врядли ваш составит им конкуренцию... это моё мнение.
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 19.03.2015, 11:31   #19
Beba99
Новичок
Джуниор
 
Регистрация: 19.03.2015
Сообщений: 1
По умолчанию

как сделать чтоби плеер сам переходил на следующий трек в плейлисте???
Beba99 вне форума Ответить с цитированием
Старый 27.03.2015, 01:26   #20
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Еле откопал свой старый плеер на основе TMediaPlayer, думаю смысл понятен?

в обработчик Ttimerа
Код:
if (ProgressBar1.Max <> 0)   then
  begin
    ProgressBar1.Position := Mediaplayer1.Position; //приравниваем текущую позицию прогрессбара к текущей позиции трэка
    Len := Mediaplayer1.TrackLength[ListBox1.ItemIndex];
//***вычесляем время
    Pos := Mediaplayer1.Position;
    MinLeft := ((Len - Pos) div 1000) div 60; //осталось мин
    SecLeft := ((Len - Pos) div 1000) mod 60; //осталось сек
    Min := (Pos div 1000) div 60;
    Sec := (Pos div 1000) mod 60;
//***осталось
    if SecLeft < 10 then
      label18.Caption := '0' + IntToStr(SecLeft)
    else
      label18.Caption := IntToStr(SecLeft);
    if MinLeft < 10 then
      label19.Caption := '0' + IntToStr(MinLeft) + ':'
    else
      label19.Caption := IntToStr(MinLeft) + ':';
//***прошло
    if Sec < 10 then
      label15.Caption := '0' + IntToStr(Sec)
    else
      label15.Caption := IntToStr(Sec);
    if Min < 10 then
      label17.Caption := '0' + IntToStr(Min) + ':'
    else
      label17.Caption := IntToStr(Min) + ':';
  end;
  if ProgressBar1.Position >= MediaPlayer1.Length then
  begin
    ListBox1.ItemIndex := ListBox1.ItemIndex + 1;
    if ListBox1.Selected[ListBox1.Items.count - 1] = True then ListBox1.ItemIndex := 0;
//*************************    
//проигрывание
//*************************
  end;
end;
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
bass.dll larry Общие вопросы C/C++ 1 09.11.2009 13:23
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36
bass.dll Elem Мультимедиа в Delphi 18 19.07.2009 11:04
Создание плеера в Delphi Silent_Hell Помощь студентам 1 29.04.2009 13:44
Создание Видео Плеера Ruver000 Помощь студентам 2 16.12.2007 18:35