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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2011, 13:34   #1
WinMen
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 28
Печаль Использование аудиобиблиотеки BASS. Проблема.

Плеер проигрывает плейлист. Раньше было через MediaPlayer терь решил сделать через басс. Прикрепил, инилизоровал библиотеку в Он Креате. Дальше. Вот код:
Процедура вопроизведения:
Код:
procedure BassPlay(const FileName: String);
 var
 FFileName : Pchar;
 begin
   FFileName := PChar(FileName);
   if Channel <> 0 then  begin
     Bass_ChannelStop(Channel);
     Bass_StreamFree(CHannel);
     Channel := 0;
   end;
   Channel := BASS_StreamCreateFile(False,FFileName,0,0,0);
   Bass_ChannelPlay(Channel, False);
 end;
Потом воспроизвожу. Поскольку я не использую ОпенДиалог то свойство FileName я беру из MediaPlayer.
Код:
BassPlay(MediaPlayer1.FileName);
Ошибок некаких не выдает но звук не воспроизводится. Тишина в колонках. Пробовал добавлять Опен Диалог и открывать одиночные файлы (BassPlay(OpenDialog1.FileName) - все равно тишина.
Что я не так делаю?
WinMen вне форума Ответить с цитированием
Старый 07.04.2011, 00:00   #2
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Да все практически не так! Почему бы не обратить внимание вниз страницы на похожие темы? Да и в самих демках Bass есть куча примеров, как правильно воспроизводить (причем разными способами).
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 07.04.2011, 09:34   #3
WinMen
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 28
По умолчанию

Знаете что то я дошел до низа пятой страници а похожих тем не нашел. Вот ведь незадача!
"Да все практически не так!" - спасибо!=) Теперь я точно знаю что исправить.
WinMen вне форума Ответить с цитированием
Старый 07.04.2011, 10:03   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Поскольку я не использую ОпенДиалог то свойство FileName я беру из MediaPlayer.
не берите из медиа-плеера, вы ведь упомянули, что:
Цитата:
Плеер проигрывает плейлист.
берите из вашего плейлиста ...он ведь у вас в чем? в ListBox к примеру? Вот и берите скажем BassPlay(listbox1.items[i]). Если же плейлиста нет, то открыть файл можно и без использования диалога, просто BassPlay('путь к файлу').

Смысл ясен?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 07.04.2011, 10:09   #5
WinMen
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 28
По умолчанию

raxp, да, спасибо... Получилось =)
WinMen вне форума Ответить с цитированием
Старый 07.04.2011, 10:11   #6
WinMen
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 28
По умолчанию

Скажите а как сделать что бы в плейлисте отображался не путь к файлу (C:/documents/Music/file.mp3) а просто имя файла (file.mp3)
WinMen вне форума Ответить с цитированием
Старый 07.04.2011, 11:16   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

для этого вам нужно просто перерисовывать плейлист, т.е. сам ListBox и установить стиль ему otherdrawfixed (т.е. сам путь физически останется в строке, а пользователю будет отображаться то что рисуется сверху), сам код перерисовки есть в Delphi-World или DRKB. Это такие интерактивные справочники. Скачайте их себе, там есть ответы на большинство ваших вопросов. Лучше DRKB, он чаще обновляется.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 07.04.2011, 11:47   #8
WinMen
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 28
По умолчанию

А не можете обьяснить перерисовку? Был бы благодарен)
Кстати а вы не знаете как загрузить другой файл в басс? Просто у меня плейлист. Нажимаю на песню она начинает играть. Нажимаю на другую песню она тоже начинает играть, но предыдущая не останавливается. Играют 2 подряд....
WinMen вне форума Ответить с цитированием
Старый 07.04.2011, 12:24   #9
WinMen
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 28
По умолчанию

Извините, не подряд а одновременно
WinMen вне форума Ответить с цитированием
Старый 07.04.2011, 19:50   #10
WinMen
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 28
По умолчанию

Делаю так, что бы проигрывался поочередно плейлист. Песни проигруются и останавливаются. Переключения на следующую дорожку не происходит. Пробовал два варианта кода:
Код:
 if Gauge1.Progress = 100 then
  begin
   ListBox1.ItemIndex := ListBox1.ItemIndex +1;
   Timer1.Enabled := True;
   i := ListBox1.ItemIndex;
   if not BASS_ChannelPlay(strs[i], False) then // Воспроизведение
   Error('Error playing!');
  end;
(Gauge показывает прогресс воспроизведения)
и
Код:
 if BASS_ChannelGetPosition(strs[i], BASS_POS_BYTE) >= BASS_ChannelGetLength(strs[i], BASS_POS_BYTE) then
 begin
   ListBox1.ItemIndex := ListBox1.ItemIndex +1;
   Timer1.Enabled := True;
   i := ListBox1.ItemIndex;
   if not BASS_ChannelPlay(strs[i], False) then // Воспроизведение
   Error('Error playing!');
В чем проблема? Ошибок не выдает, но и песня не переключается.
WinMen вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Bass Dr.Badnezz Мультимедиа в Delphi 3 20.09.2011 20:57
Проблема с установкой компонета Bass .Phoenix Компоненты Delphi 1 16.03.2010 14:37
использование Like - в чем проблема? kievlyanin Microsoft Office Excel 8 28.08.2009 10:48
Проблема с задачей на использование классов (С++) N1KeL Помощь студентам 4 25.07.2009 23:58
BASS Визуализация Garacio_cain Мультимедиа в Delphi 2 14.08.2008 00:19