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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2010, 19:37   #1
OnCliCk
 
Регистрация: 31.07.2010
Сообщений: 5
По умолчанию Интернет радио

Я хотел послушать интернет радио запускаю ссылку с форматом m3u она у меня сразу запускает встроенный медиа плеер. Как можно сделать так чтобы она не запускалась и играла в дельфи. Я только учусь но попробовал это молчит
Код:
var
  Form1: TForm1;
  http:TIdHTTP;
  get:string;
procedure TForm1.Button1Click(Sender: TObject);

begin
  http:=TIdHTTP.Create(nil);
  get:=http.get('http://radio.north.kz:8000/roks-128.m3u');
  http.Free;//Освобаждаем память
end;

end.
У нас принято оформлять код специальным тегом. Кнопка #. Модератор

Последний раз редактировалось dr.Chas; 26.07.2011 в 23:20.
OnCliCk вне форума Ответить с цитированием
Старый 01.08.2010, 21:08   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

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

ну я учусь помогите как можно написать?
OnCliCk вне форума Ответить с цитированием
Старый 02.08.2010, 10:47   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

данной процедурой вы загружаете данные с файла, не более ...медиа тут и не попахивает ...либо используйте activex mediaplayer-а для приема потока по url, либо directshow (давеча Вован приводил пример (в качестве источника - URL) >>> тырк), либо bass, либо набор acs_audio (через directsound) c готовыми демками онлайн-радиоприемников под delphi/

Добавлено
к примеру, через acs... приведу вам тестовое приложение на api:
Код:
program online_radio;

uses Messages, Classes, Windows, sysutils, to_tray,
     acs_classes, acs_winmedia, acs_dxaudio, ACS_Wave;

type
 TF = class

 protected
  constructor Create;
  destructor Destroy;
  //procedure WndProc(var Msg:TMessage); message WM_DeviceChange;
end;


var

  t: tf;
  WinClass: TWndClass;
  Msg: tmsg;
  
  num,id,glw,glw_temp: integer;
  hint: shortstring = 'Radio';
  bd  : string;
  fl  : textfile;

  
  WMStreamedIn1 : TWMStreamedIn;  // прием потока-
  WMATap1       : TWMATap;        // теги
  DXAudioOut1   : TDXAudioOut;    // воспроизведение-

procedure start_play(url: string);
begin
 WMStreamedIn1.FileName := url;
 WMStreamedIn1.BufferingTime := 2;
 if not WMStreamedIn1.HasAudio then exit; // нет доступа к аудиопотоку
 DXAudioOut1.Run
end;

procedure stop_play;
begin
 DXAudioOut1.Stop
end; 


constructor TF.Create;
begin
 inherited Create;
 //FWnd:= AllocateHWnd(WndProc);

 WMStreamedIn1:= TWMStreamedIn.Create(nil);
 WMStreamedIn1.enableHTTP:= true;
 WMStreamedIn1.enableTCP := true;
 WMStreamedIn1.enableUDP := true;
 WMStreamedIn1.MaxWaitMilliseconds:= 10000;
 WMStreamedIn1.StretchFactor:= 1;

 WMATap1:= TWMATap.Create(nil);
 WMATap1.Input:= WMStreamedIn1;
 
 DXAudioOut1:= TDXAudioOut.Create(nil);
 DXAudioOut1.DeviceNumber     := 0;
 DXAudioOut1.FramesInBuffer   := 6000;
 DXAudioOut1.Latency          := 100;
 DXAudioOut1.PollingInterval  := 80;
 DXAudioOut1.PrefetchData     := true;
end;

destructor TF.Destroy;
begin
 DXAudioOut1.Free;
 WMATap1.Free;
 WMStreamedIn1.Free;

 //deAllocateHWnd(fwnd);
 inherited Destroy
end;

...

begin
 CreateMySelf;
 t:= tf.Create;

 id := GlobalAddAtom('hotkey1');
 RegisterHotKey(FWnd,id,mod_win,ord('1'));

 set_tn(2,0,0,hint);
 set_tn(2,0,1,hint);
 set_tn(2,0,2,hint);
 set_tn(2,0,3,hint);
 set_tn(0,0,4,hint);

 // загрузка плей-листа
 bd:= ExtractFilePath(paramstr(0))+ 'stations.ini';
 if not fileexists(bd) then begin
  AssignFile(fl, bd);
  ReWrite(fl);
  writeln(fl, 'RUS Radio=http://broadcast02.station.ru/rusradio'#13#10+
              'MIX Radio=http://media.fregat.com:8000/RadioMIX'#13#10+
              'BBC (English)=mms://livewmstream-ws.bbc.co.uk.edgestreams.net/reflector:38288'#13#10+
              'SF-Radio=http://212.115.255.19:8000/sf-radio'#13#10+
              'FR3=http://212.115.255.19:8000/fr3'#13#10+
              'C9 Radio (French)=mms://bilou.c9radio.net/C9'#13#10+
              'Radio Shock (Rus)=mms://spb.radioshock.ru/radioshock'#13#10+
              'Evropa+=mms://europaplus.bounceme.net:3232'#13#10+
              '1FM Music=http://72.13.93.114:80/classical128k?MSWMExt=.asf'#13#10+
              'C9 Radio=http://joe.relay.c9radio.net:8000/'#13#10+
              'Radio Paradise (192 kbps)=http://206.71.145.10:8004'#13#10+
              'Radio Paradise (64 kbps)=http://stream-ny.radioparadise.com:8062'#13#10+
              'Radio Paradise (128 kbps)=http://scfire-nyk-aa01.stream.aol.com:80/stream/1048'#13#10+
              'Radio Paradise (WMA)=mms://rp.changeip.com/rp20k'#13#10+
              'FM San-Francisco=http://216.155.137.153:80/tsm-eagle?MSWMExt=.asf'#13#10+
              'default=0'#13#10+
              'О программе='#13#10+
              'Выход='
  );
  CloseFile(fl)
 end;

 SL:= TStringList.Create;
 SL.LoadFromFile('stations.ini');
 AddpopupIcon;

 // запуск воспроизведения-
 glw_temp:= strtoint(SL.Values['default']);
 start_play(SL.Values[SL.Names[glw_temp]]);

 try while GetMessage(Msg, 0, 0, 0) do begin
  TranslateMessage(Msg);
  DispatchMessage(Msg)
 end finally  DXAudioOut1.Stop(False); SL.Free; t.destroy end
// END СКЕЛЕТ =================================================================

end.
Вложения
Тип файла: zip test_онлайн-радиоприемник.zip (283.9 Кб, 235 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 02.08.2010 в 13:21.
raxp вне форума Ответить с цитированием
Старый 02.08.2010, 12:12   #5
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Не рабочий!
VintProg вне форума Ответить с цитированием
Старый 02.08.2010, 12:30   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

"не рабочий" что? возможно ссылки уже не все активны, но работает прекрасно.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 02.08.2010, 12:43   #7
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Цитата:
"не рабочий" что? возможно ссылки уже не все активны, но работает прекрасно.
Да запускаю прогу, через секунд 7 не отпровлять отчет и ощибка write error...
VintProg вне форума Ответить с цитированием
Старый 02.08.2010, 12:52   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

у вас канал интернета стабильный? файрволл присутствует? есть вероятность, что поток прерывается, обработки обрыва в коде нет ...ось, не семерка-ли?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 02.08.2010 в 12:54.
raxp вне форума Ответить с цитированием
Старый 02.08.2010, 13:42   #9
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Ос Windows XP
VintProg вне форума Ответить с цитированием
Старый 05.08.2010, 21:50   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

наваял версию на основе bass, ведет себя стабильно, но в отличие от DirectSound (ACS) кушает очень мало форматов вещания (потоков) ...приведу код и компиляцию:
Код:
program bass_online_radio;

uses Messages, Classes, Windows, sysutils, to_tray, bass;

const

wintitle = 'Онлайн-радиоприемник BASS, RAMEDIA Inc.';
about    = '• переключение между радиостанциями <Win>+<1>'#10+
           '• вызов следующего радио левой кнопкой мыши'#10+
           '• закрыть утилиту средней кнопкой'#10#10+
           '-----------------------------------------------------'#10+
           'Разработчик:  Бадло Сергей Григорьевич'#10+
           'http://raxp.radioliga.com';

var
  WinClass: TWndClass;
  Msg: tmsg;
  
  num,id,glw,glw_temp,chann: integer;
  hint: shortstring = 'Radio';
  bd  : string;
  fl  : textfile;

procedure start_play(url: string);
begin
 BASS_StreamFree(chann); // закрыть поток (на всякий случай)

 BASS_Init(-1, 44100, 0, fwnd, nil);
 chann:= BASS_StreamCreateURL(PAnsiChar(url),0,0,nil,0);
 BASS_ChannelPlay(chann, False)
end;


// СКЕЛЕТ ==============================


// триггер радиостанций-
...


//обработка команд меню-
procedure exito;
begin
 select(-1);
 if PopupMenu<>0 then DestroyMenu(PopupMenu);
 //
 set_tn(0,2,0,'');
 set_tn(0,2,1,'');
 set_tn(0,2,2,'');
 set_tn(0,2,3,'');
 set_tn(0,2,4,'');
 //
 UnRegisterHotKey(fwnd,id);
 PostQuitMessage(0);
 closeWindow(fwnd)
end;
procedure TrayProc(n: integer);
begin
 if n = sl.count-1 then exito;
 if n = sl.count-2 then show_tn(1,about,wintitle);
 if n < sl.count-3 then select(n) // радиостанции-
end;


//обработка прерываний-
function WndProc(hnd, wmsg, wparam, lparam: integer): integer; stdcall;

 procedure down(lparam,n: integer);
 begin
  case lparam of
   WM_LBUTTONdblCLK: ;
   WM_MBUTTONDOWN  : exito;
   WM_LBUTTONDOWN  : ;
   WM_LBUTTONUP    : select(n); //переключение-
   WM_RBUTTONUP    : begin
                      SetForegroundWindow(hnd);
                      if (PopupMenu<>0) then MakeTrayPopup(lparam)
                     end;
  end
 end;

var n : Integer;
    TrayPopup : Boolean;
begin
 TrayPopup:= PopupMenu<>0;
 //
 case wmsg of
  //переключение между столами-
  WM_HOTKEY: begin
              inc(glw); if glw > sl.Count-4 then glw:= 0;
              select(glw)
             end;

  WM_COMMAND : If (TrayPopup) then for n:= 0 to sl.Count-1 do
                                    if MenuKeys[n]=lparam then TrayProc(dword(wparam));

  //обработка каждого callback-
  WM_USER + 222+0: down(dword(lparam),4);
  WM_USER + 222+1: down(dword(lparam),3);
  WM_USER + 222+2: down(dword(lparam),2);
  WM_USER + 222+3: down(dword(lparam),1);
  WM_USER + 222+4: down(dword(lparam),0);

  WM_DESTROY: exito;
  else Result:= DefWindowProc(hnd, wmsg, wparam, lparam)           
 end
end;

procedure CreateMySelf;
begin
 with WinClass do begin
  lpszClassName:= WinTitle;
  lpfnWndProc  := @WndProc;
  cbClsExtra   := 0;
  cbWndExtra   := 0;
  hInstance    := hInstance
 end;

 RegisterClass(WinClass);
 fwnd:= CreateWindowEx(WS_EX_WINDOWEDGE, 
                                   WinTitle, 
                                   'API', 
                                   WS_MINIMIZE, 
                                   integer(CW_USEDEFAULT), 
                                   integer(CW_USEDEFAULT), 
                                   0, 0, 0, 0, hInstance, nil)
end;



begin
 CreateMySelf;
 //t:= tf.Create;

 id := GlobalAddAtom('hotkey1');
 RegisterHotKey(FWnd,id,mod_win,ord('1'));

 set_tn(2,0,0,hint);
 set_tn(2,0,1,hint);
 set_tn(2,0,2,hint);
 set_tn(2,0,3,hint);
 set_tn(0,0,4,hint);

 // загрузка плей-листа
 bd:= ExtractFilePath(paramstr(0))+ 'stations.ini';
 if not fileexists(bd) then begin
  AssignFile(fl, bd);
  ReWrite(fl);
  writeln(fl, 'MIX Radio=http://media.fregat.com:8000/RadioMIX'#13#10+
              'BBC (English)=mms://livewmstream-ws.bbc.co.uk.edgestreams.net/reflector:38288'#13#10+
              'FR3=http://212.115.255.19:8000/fr3'#13#10+
              'Radio Shock (Rus)=mms://spb.radioshock.ru/radioshock'#13#10+
              'Radio Paradise (64 kbps)=http://stream-ny.radioparadise.com:8062'#13#10+
              'default=0'#13#10+
              'О программе='#13#10+
              'Выход='
  );
  CloseFile(fl)
 end;
 SL:= TStringList.Create;
 SL.LoadFromFile('stations.ini');
 
 AddpopupIcon;

 // запуск воспроизведения-
 select(strtoint(SL.Values['default']));

 try while GetMessage(Msg, 0, 0, 0) do begin
  TranslateMessage(Msg);
  DispatchMessage(Msg)
 end finally SL.Free end
// END СКЕЛЕТ =============================

end.
Вложения
Тип файла: zip bass_online-radio.zip (164.1 Кб, 251 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интернет радио Николай999 Свободное общение 3 26.12.2010 11:04
Адреса интернет радио Михаил Юрьевич Свободное общение 5 25.03.2009 04:43
Интернет радио Михаил Юрьевич Общие вопросы Delphi 2 24.03.2009 18:53
Интернет-радио Whisper Работа с сетью в Delphi 3 27.07.2008 01:46
Слушаете ли вы интернет радио? Alar Свободное общение 12 03.05.2008 15:56