Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.06.2011, 19:55
poropeked poropeked вне форума
Прохожий
 
Регистрация: 05.06.2011
Сообщения: 1
Репутация: 10
По умолчанию Радио работа с файлом

Подскажите как реализовать следующее: нужно сделать радио с добавлением и воспроизведением в плейлист.

к примеру есть кнопка с определенной станцией

Код:
procedure TForm1.btn1Click(Sender: TObject);
begin
BASS_Free;
 BASS_Init(-1, 44100,  2, 0, nil);
 chan:= BASS_StreamCreateURL (PAnsiChar('http://88.191.130.174:6404/'),0,0,nil,0);
 Bass_ChannelPlay(chan,False);
 end;

Это работает!
Дальше есть edit в который пишем url станции, при нажатии кнопки заносит данный url в текстовый файл. Потом этот файл выводим в listbox и вот тут нужно при выделении определенной строки с url воспроизводить именно эту строку.

Возможно думаю что как то так можно сделать, но не чего не выходит.

Код:
procedure TForm1.btn9Click(Sender: TObject);
var i: integer;
begin
      for i := lst1.Items.Count - 1 downto 0 do
  if lst1.Selected[i] then
BASS_Free;
 BASS_Init(-1, 44100,  2, 0, nil);
 chan:= BASS_StreamCreateURL (PAnsiChar('(i)'),0,0,nil,0);
 Bass_ChannelPlay(chan,False);
end; 

Помогите люди добрые!

Последний раз редактировалось poropeked, 05.06.2011 в 20:08.
Ответить с цитированием
  #2  
Старый 05.06.2011, 20:28
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

наверное все таки вот так:
Код:
procedure TForm1.btn9Click(Sender: TObject);
begin
  if ListBox1.ItemIndex > -1 then
  begin
    BASS_Free;
    BASS_Init(-1, 44100, 2, 0, nil);
    chan:= BASS_StreamCreateURL(PAnsiChar(ListBox1.Items[ListBox1.ItemIndex]),0,0,nil,0);
    Bass_ChannelPlay(chan,False);
  end else
    ShowMessage('Из списка ничего не выбрано!');
end;

P.S.: на выделенное красным обратите внимание, на будущее...
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя

Последний раз редактировалось Assistant, 05.06.2011 в 20:39.
Ответить с цитированием
  #3  
Старый 06.06.2011, 21:13
Аватар для GriLab
GriLab GriLab вне форума
Начинающий
 
Регистрация: 26.11.2010
Адрес: Минск
Сообщения: 190
Версия Delphi: XE 15.0.3890
Репутация: 415
Счастье

Очень люблю эту DLL-библиотеку

Ваш алгоритм не понятен. Если в списке выбран пункт(ы), то Вы освобождаете память (BASS_Free), занимаемую этой библиотекой, потом опять предварительно загружаете библиотеку для работы с ней (BASS_Init).

Если Вы хотите освободить память, занимаемую не самой DLL, а потоком воспроизведения, то используйте данный код (я понимаю, что Вы именно это и хотите сделать):

Код:
BASS_ChannelFree(Channel);

Если немного подправить ваш код, то получится следующие (я бы делал таким образом):

Объявляете нейкую переменную типа QWORD или Cardinal в своей форме или юните, не в процедуре:

Код:
var
  Channel: Cardinal;

При запуске программы в событии TForm.OnCreate инитиализируете эту библиотеку:

Код:
procedure MyForm.MyFormCreate(Sender: TObject);
begin
  BASS_Init(-1, 44100, 2, 0, nil);  // Инитиализация
end;

В событии TButton.OnClick пишите следующие:

Код:
procedure MyForm.PlayButtonClick(Sender: TObject);
begin
  if Channel <> 0 then
  begin
    BASS_ChannelFree(Channel); // Освобождаем поток воспроизведения, если он был ранее создан
    Channel := 0;
  end;
  if MyEdit.Text <> '' then
  begin
    Channel := BASS_StreamCreateURL(PAnsiChar(MyEdit.Text), 0, 0, nil, 0);
    if Channel <> 0 then
      BASS_ChannelPlay(Channel, False);
  end;
end;

P.S. MyEdit - это TEdit, куда Вы вводите адрес URL.

При освобождении формы из памяти в событии TForm.OnDestroy пишем:

Код:
procedure MyForm.MyFormDestroy(Sender: TObject);
begin
  BASS_Free;  // Освобождение DLL из памяти
end;
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:54.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter