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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.04.2015, 05:09
ProDaNTe ProDaNTe вне форума
Новичок
 
Регистрация: 25.12.2011
Сообщения: 75
Репутация: 10
По умолчанию Bass.dll воспроизведение потокового аудио

Делая программку и нужно воспроизведение файла из сети, BASS_StreamCreateUrl - почемуто глючит страшно, пробывал всяко вот последнее что не работает)

Код:
  
stop:=false;
 ObhRazPredZagr:=GetSize(filelink);
hUrl:=InternetOpenUrl(hInet,PChar(filelink), pchar(Header), StrLen(pchar(Header)),0,0);
//if Assigned(MusicBuffer) then MusicBuffer.Free;
MusicBuffer:=TMemoryStream.Create;
  MusicBuffer.Position:=0;
BASS_StreamFree(url_radio);

repeat
begin
InternetReadFile(hUrl,@Buffer,sizeof(Buffer),Read);
MusicBuffer.Write(Buffer,read);
PlaySize:=PlaySize+Read;
all:=all+Read;


if okplload=true then  begin
FreeMem(memp);
memp:=StreamToByteArray(kdob,MusicBuffer);
kdob:=MusicBuffer.Size;
BASS_StreamPutFileData(url_radio,memp,2048);
end;

if  (PlaySize>102400) and (okplload=false) then begin
kdob:= MusicBuffer.Size;
memp:=StreamToByteArray(0,MusicBuffer);
url_radio:=BASS_StreamCreateFile(True, memp, 0, ObhRazPredZagr, STREAMFILE_BUFFERPUSH {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF});
BASS_ChannelPlay(url_radio, False);

okplload:=true;
end;
Ответить с цитированием
  #2  
Старый 12.04.2015, 23:39
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Посмотреть примеры поставляемые с BASS, в частности NetRadio, и убедиться, что ничего не глючит, а очень даже стабильно работает.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 13.04.2015, 10:06
ProDaNTe ProDaNTe вне форума
Новичок
 
Регистрация: 25.12.2011
Сообщения: 75
Репутация: 10
По умолчанию

У меня на компе все стабильно, на другом компе где тоже как и меня 8ка выдает ошибку((( Плюс интернет плохой так вообще ужас, а так я в ручную буду контралировать все действия, почему так то не работает вроде все верно(((
Код:
stop:Boolean;
Buffer: array [0..2047] of byte;
cli:integer;
Read:Cardinal;
  hUrl:HINTERNET;
  Header:String;
  Tim:TDateTime;
  memp,memn:Pointer;
  okplload:Boolean;
  kdob,pop:Int64;
  WHdr:TWAVHDR;


InternetReadFile(hUrl,@Buffer,sizeof(Buffer),Read);
 MusicBuffer.Write(Buffer,read);
PlaySize:=PlaySize+Read;
all:=all+Read;


if okplload=true then  begin

memp:=StreamToByteArray(kdob,MusicBuffer);
kdob:=MusicBuffer.Size;
BASS_ChannelLock(url_radio, true);
BASS_StreamPutData(url_radio,memp,MusicBuffer.Size-kdob);
BASS_ChannelLock(url_radio, false);
 BASS_ChannelPlay(url_radio, False);
 FreeMem(memp);
end;

if  (PlaySize>102400) and (okplload=false) then begin

kdob:= MusicBuffer.Size;
 memp:=StreamToByteArray(0,MusicBuffer);
 url_radio:=BASS_StreamCreateFile(True, memp, 0, MusicBuffer.Size, 0 {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF});
  BASS_ChannelGetInfo(url_radio,WHdr.INFO);
  BASS_StreamFree(url_radio);
  FreeMem(memp);
   memp:=StreamToByteArray(0,MusicBuffer);
 url_radio:=BASS_StreamCreate(WHdr.INFO.freq, WHdr.INFO.chans, WHdr.INFO.flags, STREAMPROC_PUSH, NIL);
  BASS_ChannelLock(url_radio, true);
  BASS_StreamPutData(url_radio,memp,MusicBuffer.Size);
  BASS_ChannelLock(url_radio, false);
 BASS_ChannelPlay(url_radio, False);
 FreeMem(memp);
okplload:=true;
end;
Ответить с цитированием
  #4  
Старый 13.04.2015, 10:35
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от ProDaNTe
... выдает ошибку ...
Нам догадаться какую?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 13.04.2015, 13:44
ProDaNTe ProDaNTe вне форума
Новичок
 
Регистрация: 25.12.2011
Сообщения: 75
Репутация: 10
По умолчанию

Извини, но то просто выкидывает, то Access Violation, хотя повторюсь дома играет все отлично.(StreamCreateUrl)
А на предидущем коде идет просто шум((

В принципе я гружу 100 Кб узнаю информацию о треке, создаю поток, вставляю туда данные по мере скачивания и воспроизвожу!
Вложения
Тип файла: rar MinusFinder.rar (683.3 Кбайт, 15 просмотров)

Последний раз редактировалось ProDaNTe, 13.04.2015 в 13:53.
Ответить с цитированием
  #6  
Старый 13.04.2015, 23:54
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Увы, в данный момент XE версии у меня нет.
Разбираться в таком "грязном" коде очень тяжело, но обратил внимание, что в процедуре Play могут возникать ситуации, когда битмап не будет освобождаться. На весь код терпения не хватило.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter